计算机二级(C)13
(总分660,考试时间120分钟)
选择题(1-10题每题2分,11-50题每题1分,共60分)
1. 有以下程序:  main( )  { unsigned char a,b;   a=4|3;   b=4&3;   printf(“%d %d\n”,a,b(; }  执行后输出结果是(  )。
A.  7 0        B. 0 7
C. 1 1        D. 43 0
2. 以下程序中函数f( )的功能是将n个字符串按由大到小的顺序进行排序。  #include<string.h>  void f(char p[ ][10],int n)  { char t[20]; int i,j;   for(i =O;i <n-1 ;i ++ )    for(j =i + 1 ;j < n;j ++ )     if(strcmp(p [i] ,p[j] ) <0)      { strcpy(t,p[i]);strcpy(p[i] ,p[j] );strcpy(p[j] ,t); } }  main ( )  { char p [ ] [ 10 ] = { "abc","aabdfg","abbd","dcdbe", "cd" }; int i;   f(p,5); printf("%d\n",strlen(p[O] ) );  }  程序运行后的输出结果是(  )。
A. 6        B. 4
C. 3        D. 5
3. 有以下程序:  main( )  { int i,n=0;   for(i=2;i<5;i++)   { do     { if(i%3) continue;      n++;    } while(!i);    n++; }    printf(“n=%d\n”,n); }   程序执行后的输出结果是(  )。
A. n=5        B. n=2
C. n=3        D.  n=4
4. 以下不能定义为用户标识符的是______。
A. Main          B. _0
C. _int          D. sizeof
5. 有以下程序:   main( )   {char str[ ][10]={"China","Beijing"},*p=str;      printf("%s\n",p+10);   }   程序运行后的输出结果是(  )。
A. China        B. Bejing
C. ng        D. ing
6. 下列叙述中正确的是______。 
A. 软件测试应该由程序开发者来完成          B. 程序经调试后一般不需要再测试 
C. 软件维护只包括对程序代码的维护          D. 以上三种说法都不对
7. 下列关于单目运算符++、--的叙述中正确的是(  )。
A.  它们的运算对象可以是任何变量和常量
B.  它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C.  它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D.  它们的运算对象可以是char型变量、int型变量和float型变量
8. 在Windows环境下,下列叙述中正确的是(  )。
A. 在"开始"菜单中可以增加项目,也可以删除项目
B. 在"开始"菜单中不能增加项目,也不能删除项目
C. 在"开始"菜单中可以增加项目,但不能删除项目
D. 在"开始"菜单中不能增加项目,但可以删除项目
9. 当把以下四个表达式用作 if  语句的控制表达式时,有一个选项与其他三个选项含义 不同,这个选项是______。
A.  k%2          B. k%2==1
C. (k%2)!=0          D. !k%2==1
10. 在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则(  )。
A. 称为函数的直接递归调用        B. 称为函数的间接递归调用
C. 称为函数的循环调用        D. C语言中不允许这样的递归调用
11. 以下叙述中错误的是______。
A. C 语句必须以分号结束 
B. 复合语句在语法上被看作一条语句 
C. 空语句出现在任何位置都不会影响程序运行 
D. 赋值表达式末尾加分号就构成赋值语句
12. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)  s=a;  for(b=1;b<=c;b++) s=s+1;  则与上述程序段功能等价的赋值语句是(  )。 
A. s=a+b;        B. s=a+c;
C. s=s+c;        D. s=b+c;
13. 下列数据结构中,能用二分法进行查的是______。 
A. 顺序存储的有序线性表          B. 线性链表 
C. 二叉链表          D. 有序线性链表
14. 若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是______。 
A. 
B. 
C. 
D.
15. 有以下程序:#define    f(x)    (x*x)main(){    int    i1,i2;i1=f(8)/f(4); i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序运行后的输出结果是______。
A. 64,28          B. 4,4
C. 4,3          D. 64,64
16. 下列叙述中正确的是______。 
A. 一个逻辑数据结构只能有一种存储结构 
B. 数据的逻辑结构属于线性结构,存储结构属于非线性结构
C. 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D. 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响
17. 有以下程序:  main( )  { char a[ ]=”abcdefg”,b[10]=”abcdefg”;    printf(“%d %d\n”,sizeof(a),sizeof(b));}  执行后输出结果是(  )。
A. 7 7        B. 8 8
C. 8 10        D. 10 10
18. 有以下程序:  #include<stdlib.h>  struct NODE  { int num;stmct NODE *next;};  main( )   { struct NODE * p, * q,* r;   p=(struct NODE * )malloc(sizeof(struct NODE)
);   q=(struct NODE * )malloc(sizeof(struct NODE) );   r=(struct NODE * )malloc(sizeof(struct NODE) );   p->num=10; q->num=20; r->num=30;   p->next=q; q->next=r;   printf("%d\n",p->num+q->next->num);  }  程序运行后的输出结果是(  )。
A. 10        B. 20
C. 30        D. 40
19. 有以下程序main(){int c=35;printf("%d\n",c&c);}程序运行后的输出结果是______。
A. 0        B. 70
C. 35        D. 1
20. DOS文件系统的组织结构属于(  )。
A. 星形结构        B. 网形结构
C. 环形结构        D. 树形结构
21. 有以下程序  main( )  { int m[ ][3]={1,4,7,2,5,8,3,6,9};   int i,j,k=2;   for(i=0;i<3;i++)   { printf("%d ",m[k][i]); }  }  执行后输出结果是(  )。
A.  4  5  6        B.  2  5  8
C.  3  6  9        D.  7  8  9
22. 以下能正确定义一维数组的选项是
A. int num[ ];
B. #define N 100    int num[N];
C. int num[0..100];
D.  int N=100;   int num[N];
23. 有以下程序:  int fa(int x)   { return x *x;}  int fb(int x)   { return x *x *x;}  int f(int( *f1)( ),int( *f2)( ),int x)   { return f2(x)-f1(x);}  main( )   { int i;   i=f(fa,fb,2);printf("%d\n",i);  }  程序运行后的输出结果是(  )。
strcmp比较数组A. -4        B. 1
C. 4        D. 8
24. 以下不合法的用户标识符是______。
A. j2_KEY          B. Double
C. 4d          D. _8_
25. 以下非法的赋值语句是(  )。
A. n=(i=2,++i);        B. j++;
C. ++(i+1);        D. x=j>0;
26. 程序中头文件typel.h的内容是:  #define N 5  #define M1 N*3  程序如下:  #include"typel.h"  #define M2 N *2  main( )  { int i;   i=M1+M2; printf("%d\n",i);  }  程序编译后运行的输出结果是(  )。
A. 10        B. 20
C. 25        D. 30
27. 有以下程序:    main( )  {      int a=3,b=4,c=5,d=2;      if(a>b)      if(b>c)          printf("%d",d++ +1);      else          printf("%d",++d +1);      printf("%d\n",d);  }  程序运行后的输出结果是(  )。
A. 2        B. 3
C. 43        D. 44