首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 软件水平考试 > 复习资料 > 软件设计师 > 正文

软考软件设计师课后练习题:第六章习题及解答

来源:考试吧Exam8.com) 2006-12-11 8:03:22 考试吧:中国教育培训第一门户 模拟考场

   6.1  单项选择题
   1.函数调用语句“f((el,e2),(e3,e4,e5));”中参数的个数是(  )
    ①1            ②2              
    ③4             ④5
      【解】上述函数调用中,(e1,e2)和(e3,e4,e5)是两个带括号的表达式,所以函数调用只提供两个实参,其中第一个实参先计算el的值,然后计算e2,并以e2的值为实参。第二个实参顺序计算e3,e4,e5,并以e5的值为实参。所以解答是②。

    2.C语言中,函数的隐含存储类型是(  )
    ①auto              ②static
    ③extern           ④无存储类别
      【解】由于C函数内不能再定义函数,C函数的存储类型只能是静态的或外部的之一。若定义函数时不指定存储类型是静态的,则它的存储类型就是外部的(extern),即函数允许被程序的其它函数调用。所以解答是③。

    3.以下对C语言函数的有关描述中,正确的是(  )
      ①在C语言中,调用函数时,只能把实参的值传递给形参,形参的值不能传递给实参
     ②C函数既可以嵌套定义,又可以递归调用
     ③函数必须有返回值,否则不能定义成函数
     ④C程序中,有调用关系的所有函数必须放在同一个源程序文件中
    【解】C语言规定,调用函数时,只能把实参的值传递给函数的形参。函数调用时,形参从实参表达式得到初值,报参也是函数的一种局部变量,其值可以改变,但形参的值不能传回给对应的实参。当函数设置非指针类型的形参时,实参可以是同类型的一般表达式;当函数设置指针类型的形参时,对应的实参也必须是同类型的指针表达式。所以叙述①是正确的。C语言虽可以递归调用,但同时规定,在函数内不能再定义函数,所以叙述②是错误的。通常C函数会有返回值,但也可以没有返回值。有许多情况,函数的执行是完成某种预定的工作,并没有返回值,所以叙述③是不正确的。在C程序中,如函数未指定是静态的,则就是外部的,能让别的文件中的函数调用。但函数要调用别的文件中的函数,在调用代码之前,需对它作说明,所以叙述④也是不正确的。正确的解答只有①。

    4.设函数的功能是交换X和y的值,且通过正确调用返回交换结果。不能正确执行此功能的函数是(  )
          ① funa(int *x, int *y) 
             { int * p;
                * p=*x; *x=*y; *y=*p;
              }
         ② funb(int x, int y) 
             { int t;
               t=x;x=y;y=t;
             }
         ③ func(int *x, int *y)
           { int p;
               p=*x; *x=*y; * y=p;
             } 
         ④fund( int *x,int *y) 
             { 
             *x=*x+ *y;*y=*x- *y;*x= *x- *y;
             }
      【解】设计实现交换两个变量值的函数。希望函数调用能改变调用环境中的变量,方法之一是让函数设置指针类型的形参,实参传送给形参的是希望交换值的两个变量的指针。函数的两个形参得到这两个变量的指针后,函数就能通过形参间接引用要交换值的变量,或引用它们的值,或改变它们的值。从而实现从函数传回信息存于调用环境的变量中。以上所述是设计交换变量值函数的一般原则,具体编写函数时还需注意对上述原则的正确应用。
      对于函数funa,该函数的定义满足设置指针形参,并通过指针形参间接引用环境变量的要求。但是在函数体中定义了指针变量p,并在p宋明确设定它所指向的变量下,代码*p=* x企图将值存入它所指的变量中,这是初学者经常出现的一种严重的错误。该函数因有错,不能实现交换变量值的功能。
      对于函数funb,该函数不定义指针形参,函数体也没有可用的指针间接引用调用环境中的变量,所以该函数也不能实现交换变量值的功能。
      对于函数func,该函数正确定义了指针形参,函数体也正确通过指针形参间接引用环境中的变量,并正确定义了自己的局部变量。该函数能实现交换变量值的功能。
      对于函数fund,该函数也正确定义指针形参和函数体通过形参间接引用环境变量。特别要指出的是,该函数是利用*x和*y的;日值与新值之间的关系实现问题要求的。其中第一个赋值使。x存有原来未交换之前的*x与*y之和;第二个赋值从这个和中减去原来的*y,并将差赋给*y,使*y的值是交换之前的*x的值;第三个赋值再次从和中减去新的*y,即减去交换之前的*x,这个差就是交换之前的*y,并将差赋给*x。经以上三个赋值,实现两变量之间的值交换。所以不能正确执行交换变量值的函数是funa和funb,即正确选择是①②。

    5.要求函数的功能是在一维数组a中查找x值。若找到,则返回所在的下标值;否则,返回0。设数据放在数组元素的a[1]到a[n]中。在以下给出的函数中,不能正确执行此功能的函数是(  )
          ① funa(int *a,int n, int x)
               { *a=x;
                whlie(a[n]!=x) n--;
                return n;
              }
         ② funb(int *a, int n, int x) 
              { int k ;
                for( k=l; k<=n; k++)
                if(a[k]==x) return k;
                return 0 ;
              } 
       ③ func(int a[], int n, int x) 
              { int * k;
               a[O]=x; k=a+n;
              while(*k!=x)k--;
              return k-n;
             }
         ④ fund(int a[], int n, int x) 
             { int k=0;
             do  k++;
             while((k             if((k              else return 0;
             }
      【解】在数组中找指定值是经常遇到的计算要求,有多种编程方法。在这里,数据预放在数组下标1至n的元素中,下标为0的元素没有放数据,程序可以利用这个位置简化查找函数。函数funa先将要查找的情放入a[0],从数据表的最后一个元素开始逆序向前查找。这样做的好处是循环条件不必担心因数组中原先没有值为x的元素而一直顺序查找下去,访问不是数表的元素,需插入条件n>O。在a[0] 处放入x后,这个条件就不必要了,循环至少在访问了a[0] 后终止,并返回0值。所以该函数能完成指定的功能。函数funb采用常规的办法编写,循环在a[1] 与a[n]之间顺序寻找,一旦找到立即返回找到处的下标,直至查找循环结束,查不到指定的值而返回0值。函数func采用与函数funa相同的方法,不过是另外引入一个指针变量。但是该函数return语句后的表达式有严重的错误,应返回k-a,两指针的差,其值等于找到元素的下标。表达式k-n是指针k向前移n个位置的指针值。函数fund预置k为0,循环让 k增 1,并在 k在界内和 a[k] 不等于 x的情况下循环。循环结束有两种情况,或 k已不在界内,或k在界内,并且a[k]等于x。若是后者,函数返回k,而若前者,函数返回比该函数也能正确完成查找工作。这样,不能正确完成查找工作的函数是函数fonc。所以正确选择是③。

更多软考资料请访问:考试吧软件水平考试栏目

1 2 3 4 5 下一页
文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。