设为首页 加入收藏

TOP

05年9月等级考试二级C语言考前密卷2(四)
2014-11-08 13:15:06 来源: 作者: 【 】 浏览:43
Tags:05年 9月 等级考试 二级 语言 考前

(26)以下程序的输出结果是________。
   main()
   { int k=4,m=1,p;
   p=func(k,m);printf("%d,",p);
   p=func(k,m);printf("%d\n",p);
   }
   func(int a,int b)
   { static int m:O,i=2;
   i+=m+l;m=i+a+b;
   return(m);
   }
   A)8,17  B)8,16  C)8,20  D)8.8
   答案:A
   评析:k和m的值带入函数func中,第一次调用完func()后,其中m和i的值要保留,并在第二次调用时使用,这是因为两者都是局部静态变量。所以最后的结果是8和17。

   (27)以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:
   #include
   findmax(int*s,int t,int*k)
   { int p;
   for(p=0,*k=p;p    if(s[p]>s[*k])___________;
   }
   main()
   { int a[10],i,k;
   for(i=0;i<10;i++)scanf("%d",&a[I]);
   findmax(a,lO,&k);
   printf("%d,%d\n",k,a[k]);
   }
   A)k=p  B)*k=p-s  C)k=p-s  D)*k=p
   答案:D
   评析:k是一个指针,它的值是一个地址,要通过它为主函数的变量改变数据,必须使用*p,这样就可以把一个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

   (28)在执行以下程序时,为了使输出结果为t=4,给a和b输入的值应该满足的条件是_________。
   main()
   {
   int s,t,a,b;
   scanf("%d%d",&a,&b);
   s=l;t=I;
   if(a>O)s=s+1;
   if(a>b)t=s+t;
   else if(a==b)t=5;
   else t=20s:
   printf("t=%d\n",t);
   }
   A)a>b  B)a a>b
   答案:C
   评析:要使输出结果为t=4,必须要执行else t=2*s;和if(a>b)t=s+t;语句。如果执行if(a>b)t=s+t;语句,则条件为a>b,要求s=3,在该语句前面的语句中没有条件可以满足s=3;如果执行else t=2*s;语句,则条件为a O)s=s+l;语句,所以应满足条件0
   (29)以下函数调用语句中含有_________个实参。
   func((expl,exp2),(exp3,exp4,exp5));
   A)l  B)2  C)4  D)5
   答案:B
   评析:实参可以是常量、变量或表达式,(expl,exp2)是逗号表达式,它的值是exp2的值;(exp3,exp4,exp5)是逗号表达式,它的值是exp5的值。所以该函数调用语句含有的实参个数是2,即:(expl,exp2)和(exp3,exp4,exp5)。

   (30)执行以下程序后,输出的结果是__________。
   main()
   {
   int y=10;
   do{y--;}while(--y);
   printf("%d\n",y--);
   }
   A)一l  B)l  C)8  D)0
   答案:D
   评析:do-while语句的特点是先执行循环体,然后判断循环条件是否成立,当循环条件的值为0时循环结束。当y=O时循环结束,printf("%d\n",y--);语句是先输出y再自减,所以输出结果为0。

   (31)在C语言中,要求运算数必须是整型的运算符是__________。
   A)%  B)/  C)<  D)!
   答案:A
   评析:题目的四个选项中,(B)(c)(D)都不要求运算数必须为整数,参与模运算(%)的运算数必须是整型数据。

   (32)c语言提供的合法的数据类型关键字是__________。
   A)DoubIe  B)noat  C)integer  D)Char
   答案:B
   评析:选项A和D中第一个字母大写,不正确;
   选项c是PASCAL中的整型关键字,不是c语言中的关键字。

   (33)设有以下定义:
   int a[3][3]={1,2,3,4,5,6,7,8,9};
   int(*ptr)[3]=a,*p=a[0];
   则下列能够正确表示数组元素a[1][2]的表达式是___________。
   A)*((*ptr+1)[2])  B)*(*(p+5))
   C)(*ptr+1)+2    D)*(*(a+1)+2)
   答案:D
   评析:+(p+5)所指向的数组元素是a[1][2],所以B不对;ptr所指向的是一个含有三个元素的一维数组,所以A和C是错误的。

   (34)若有以下说明:
   int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
   则值为6的表达式是__________。
   A)*p+6  B)*(p+6)  C)*p+=5  D)p+5
   答案:C
   评析:选项A,*p+6,其值等于1+6=7;选项B,*(p+6),其值等于a[6]=7;选项c,*p+=5,其值等于*p=*p+5=l+5=6;选项D,p+5是个地址值。

   (35)下列程序的输出结果是__________。
   fun()
   {
   static int x=5:
   if(x++>5)printtf("%dft,x);
   else printf("%d.',)汁+);
   }
   mainO
   {
   fun();fun();
   }
   A)67  B)69  C)68  D)78
   答案:C
   评析:模块的代码开始运行后,使用static语句声明的变量会一直保持其值,直至该模块复位或重新启动。在第1次调用fun函数时,x的初值为5,if语句的条件不成立,执行else printf("%d"x++);语句,输出6,执行后x的值变为7,由于x是静态局部变量,在函数调用结束后,它并不释放,仍保留x=7。在第2次调用fun函数时,if语句的条件成立,执行print掣%∽x);语句,输出8。

   (36)下面程序的输出是__________。
   main()
   {
   int m=Oxa,n=2;
   m+=n:
   printf(""%x\n"",m);
   }
   A)C  B)c  C)99  D)2
   答案:A
   评析:格式控制符x表示数据按十六进制形式输出(不输出前导符0x)。本题在执行语句m十一n:后,m的值变为字母c,又因为在输出a-f时,如果格式控制符用x,则以大写字母输出;如果用x,则以小写字母输出,故本题答案为A。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2011年计算机二级C语言精编教程第.. 下一篇2011年计算机等级二级C语言章节习..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: