计算机二级(C)42
(总分3040, 做题时间120分钟)
选择题(1-10题每题2分,11-50题每题1分,共60分)
1. 
在32位计算机中,一个字长所占的字节数为(  )。
A 1
B 2
C 4
D 8
    分值: 60
答案:C
字长是指计算机能够同时处理的二进制数据的位数。
2. 
若程序中定义了以下函数:
  double myadd(double a,double b)
  { return (a+b);}
  并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(  )。
A double myadd(double a,b);
B double myadd(double,double);
C double myadd(double b,double a);
D double myadd(double x,double y);
    分值: 60
答案:A
3. 
有以下程序段
  int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
  b=p[5];
  b中的值是(  )。
A 5
B 6c语言中的逗号表达式
C 8
D 9
    分值: 60
答案:D
4. 
以下语句或语句组中,能正确进行字符串赋值的是【  】。
A char*sp;*sp="right!";
B char s[10];s="right!";
C char s [10];*s="right!";
D char*sp="right!";
    分值: 60
答案:D
选项A定义了字符型的指针变量甲,则*sp存储的是第一个字符,而给它赋的是字符串,故错;选项B表示代表数组的首地址,而题中给它赋的是字符串,所以错误:选项C定义了一个字符型的数组s[10],再通过*s给数组元素赋初值,这时是与选项A相同的错误。
5. 
设变量已正确定义,则以下能正确计算f=n!的程序段是【  】。
A F=0: 
for(i=1;i<=n;i++)
  f*=i;
B f=1;
for(i=1;i<n;i++)
f*=i;
C f=1;                                                       
  for(i=n;i>1;i++)f*=i;
D f=-1;
  for(i=n;i>=2;i--)f*=i;
    分值: 60
答案:D
n!=n*(n-1)*……*2*1,由于选项A中f的初值为0,所以循环n次后,f值依然为0,故选项A错误:选项B中循环的终止条件是"i<n",即只执行i-1次循环,得到的f值为(n-1)*……*2*1的值,故选项B错误;选项C中,当n>1时,由于初值"i=n"是符合条件"i>1"的,且增量为+1,故循环中永远不会出现不满足条件"i>1"的值,所以出现死循环。
6. 
若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是(  )。
A abs(x-y)<10
B x-y>-10&& x-y<10
C @(x-y)<-10||!(y-x)>10
D (x-y)*(x-y)<100
    分值: 60
答案:C
7. 
有以下程序:
  main( )
  { char *p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};
   printf(“%d\n”,strlen(p[4])); }
  执行后输出结果是(  )。
A 2
B 3
C 4
D 5
    分值: 60
答案:A
8. 
设有以下定义
  int a=0; double b=1.25; char c=’A’;
  #define d 2
  则下面语句中错误的是(  )。
A a++;
B b++;
C c++;
D d++;
    分值: 60
答案:D
9. 
若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是【  】。
A ++x,y=x--
B x+l=y
C x=x+10=x+y
D double(x)/10
    分值: 60
答案:A
选项A)为C语言中的逗号表达式。赋值表达式的左侧不能是表达式。在进行强制类型转换时,数据类型两边的圆括号不能省略。
10. 
以下选项中不能正确把c1定义成结构体变量的是(  )。
A typedef struct
   { int red;
    int green;
    int blue;
   } COLOR;
     COLOR cl;
B struct color cl
   { int red;
   int green;
   int blue;
   }
C struct color
   { int red;
   int green;
   int blue;
   } cl;
D struct
   { int red;
   int green;
   int blue;
   } cl;
    分值: 60
答案:B
11. 
下列叙述中正确的是(  )。
A  C语言中既有逻辑类型也有集合类型
B  C语言中没有逻辑类型但有集合类型
C  C语言中有逻辑类型但没有集合类型
D  C语言中既没有逻辑类型也没有集合类型
    分值: 60
答案:D
12. 
有以下程序
    main()
    {int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i ,k,t;
    for(i=0;i<3;i++)
    for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}
    for(i=0;i<4;i++)printf("%d,",a[0][i]);
    }
    程序运行后的输出结果是【  】。
A 6,2,1,1,
B 6,4,3,2,
C 1,1,2,6,
D 2,3,4,6,
    分值: 60
答案:B
本题使用选择法对二维数组对角线上的元素按从大到小的顺序进行排列。最后输出数组第一行的数据。故本题答案为B)。
13. 
有以下程序:
  main( )
  { int i=0,x=0;
      for (;;)
      {
          if(i==3||i==5) continue;
          if (i==6) break;
          i++;
          s+=i;
      };
      printf("%d\n",s);
  }
  程序运行后的输出结果是(  )。
A 10
B 13
C 21
D 程序进入死循环
    分值: 60
答案:D
14. 
若有定义语句:int k[2][3],* pk[3];,则以下语句中正确的是【  】。
A pk=k;
B pk [0]=&k[1][2];
C pk=k[0];
D pk[1]=k;
    分值: 60
答案:B
水pk[3]表示的是一个共有3个元素的一维指针数组。pk[0]:&k[1][2]表示把二维数组中下标为k[1][2]的值赋予pk[0],也就是pk[0]指向k[1][2]这个元素。
15. 
若有定义int  x=0,*p=&x;,则语句printf("%d\n",*p);的输出结果是【  】。
A 随机值
B 0   
C x的地址
D p的地址
    分值: 60
答案:B
由题中定义可以看出,指针变量p指向了x所在的存储单元,故输出的*p的值即为x的值0。
16. 
已定义以下函数
    int fun(int*P)
    {return*p;)
    fun函数返回值是【  】。
A 不确定的值
B 一个整数
C 形参P中存放的值
D 形参P的地址值
    分值: 60
答案:B
返回值为指针变量指向的数据,该数据已被定义为整型。
17. 
有以下程序:
  main( )
  { char s[ ]"Yes\n/No",*ps=s;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。