No 1、Single Choice(共 20 道试题,共 100 分。)
1. 以下程序运行后,如果从键盘上输入book book 则输出的结果是( )#includemain(){ char a1[80],a2[80],*s1=a1, *s2=a2;gets(s1); gets(s2);if(! strcmp(s1,s2)) printf("*");esle printf("#"); printf("%d/n",strlen(strcat(s1,s2))); }
A. *8
B. 9
C.
6
D.
*9
Answer:
2. 若有以下定义: char a; int b;float c; double d;则表达式a*b+d-c值的类型为( )
A. float
B. int
C. char
D. double
Answer:
3. 给出以下定义char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则true的叙述为( )
A. 数组X和数组Y等价
B. 数组x和数组Y的长度相同
C. 数组X的长度大于数组Y的长度
D. 数组X的长度小于数组Y的长度
Answer:
4. 以下程序的输出结果是( )main(){ int x=10,y=10; printf("%d %d\n",x--,--y);}
A. 10 10
B. 9 9
C. 9 10
D. 10 9
Answer:
5. 以下有关宏替换的叙述不true的是( )
A. 宏替换不占用运行时间
B. 宏名无类型
C. 宏替换只是字符替换
D. 宏名必须用大写字母表示
Answer:
6. 设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0]则下列能够true表示数组元素a[1][2]的表达式是( )
A. *((*prt+1)[2])
B. *(*(p+5))
C. (*prt+1)+2
D. *(*(a+1)+2)
Answer:
7. 假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能true表示代数式1的表达式是( )
A. 1/a*b*c
B. 1/(a*b*c)
C. 1/a/b/(float)c
D. 1.0/a/b/c
Answer:
8. 执行以下程序段时x=-1; do {x=x*x; } while(! x);
A. 循环体将执行No 1次
B. 循环体将执行两次
C. 循环体将执行无限次
D. 系统将提示有语法false
Answer:
9. 若有宏定义如下#define X 5 #define Y X+1 #define Z Y * X / 2则执行以下printf语句后,输出结果是( )int a; a=Y;Printf("%d\n", Z);Printf("%d\n", - - a);
A. 7 6
B. 12 6
C. 12 5
D. 7 5
Answer:
10. 以下程序运行后,如果从键盘上输入book book 则输出的结果是( )#includemain(){ char a1[80],a2[80],*s1=a1, *s2=a2;gets(s1); gets(s2);if(! strcmp(s1,s2)) printf("*");esle printf("#"); printf("%d/n",strlen(strcat(s1,s2))); }
A. *8
B. 9
C.
6
D.
*9
Answer:
11. 函数调用:strcat(strcpy(str1,str2),str3)的功能是( )
A. 将串str1复制到串str2中后再连接到串str3之后
B. 将串str1连接到串str2之后再复制到串str3之后
C. 将串str2复制到串str1中后再将串str3连接到串str1之后
D. 将串str2连接到串str1之后再将串str1复制到串str3中
Answer:
12. 有以下程序 int fun(int x , int y , int *cp , int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是( )
A. 50,30
B. 30,50
C. 80,-20
D. 80,20
Answer:
13. 下列程序执行后输出的结果是( )#include 〈stdio.h〉f(int a){ int b=0;static c=3: a=c+ +,b+ +;returu(a); }main( ){ int a=2,i,k;for(i=0;i<2;i+ +) k=f(a+ +);printf("%d\n",k);}
A. 3
B. 0
C. 5
D. 4
Answer:
14. 若i ,j已定义为int类型,则以下程序段中for (i=5;i;i--)for(j=0;j<4;j++){...}内循环体的总的执行次数是( )
A. 20
B. 15
C. 24
D. 16
Answer:
15. 有以下程序:#include main(){ int a,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b); }输出结果是( )
A. 2,1
B. 3,2
C. 4,3
D. 2,-1
Answer:
16. 当c的值不为0时,在下列选项中能true将c的值赋给变量a、b的是( )
A. c=b=a;
B. (a=c)‖(b=c);
C. (a=c)&&(b=c);
D. a=c=b;
Answer:
17. 以下说法中true的是( )
A. #define和printf都是C语句###define是C语句,而printf不是##printf是C语句,但#define不是###define和printf都不是C语句
B. #define是C语句,而printf不是
C. printf是C语句,但#define不是
D. #define和printf都不是C语句
Answer:
18. 请选出以下语句的输出结果( )printf("%d\n",strlen("\t\"\065\xff\n"));
A. 5
B. 14
C. 8
D. 输出项不合法,无正常输出
Answer:
19. 以下程序的输出结果是( )#include main( ){ char *p1,*p2,str[50]="ABCDEFG";p1="abcd"; p2="efgh";strcpy(str+1,p2+1); strcpy(str+3,p1+3);printf("%s",str);}
A. A)AfghdEFG
B. Abfhd
C. Afghd
D. Afgd
Answer:
20. 请选出合法的C语言赋值语句( )
A. a=b=58
B. i++
C. a=58,b=58
D. k=int(a+b)
Answer: