资源描述
一、单选(共计100分,每题2.5分)
1、若已定义 int a=11; 执行以下语句后的输出结果是( )。 printf("a=%d,a=%o,a=%x\n",a,a,a) ;
A. a=11, a=11, a=b
B. a=11, a=13, a=b
C. a=11, a=13, a=c
D. a=11, a=12, a=13
2、
A.
B.
C.
D.
3、以下程序运行后,文件test.txt的内容是( )。 #include <stdio.h> main() { FILE *fp; char str[][10]={"first","second"}; fp = fopen("test.txt", "w"); if(fp!=NULL) fprintf(fp,"%s",str[0]); fclose(fp); fp = fopen("test.txt", "w"); if(fp!=NULL) fprintf(fp,"%s",str[1]); fclose(fp); }
A. first
B. second
C. first second
D. second first
4、若有以下定义: struct node { int data; struct node *next; } struct node *head,*p; 已建立如下图所示的链表: p ↓ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ head → │data│next┼→│data│next┼→... →│data│NULL│ └──┴──┘ └──┴──┘ └──┴──┘ 能删除指针p所指向结点的程序段是( )。
A. p = p->next; head->next=p->next; free(p);
B. free(p); p = p->next; head->next=p->next;
C. head->next = p->next; free(p);
D. free(p); head->next = p->next;
5、若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; , 则( )表达式是错误的。
A. a[2]
B. p++
C. p[2]
D. a++
6、下面叙述错误的是( )。
A. C源程序可由一个或多个函数组成
B.
C.
D. 注释说明部分只能位于C源程序的最前面
7、 ( )为合法的常量。
A.
B.
C.
D.
8、以下程序的运行结果是( )。 void main() {int s = 0, i = 0; while(i< 8) { i++; if(i%2==0) continue; s+=i; } printf("%d\n",s); }
A. 36
B. 7
C. 16
D. 12
9、以下程序段的运行结果是( )。 main() { int i=4,j; j=i; pic(i+2*j-2,'*'); putchar('\n'); for(j-=2;j>=0;j--) { pic(3-j, ' '); pic(i+2*j, '*'); putchar('\n'); } } pic(int len,char c) { int k; for(k=1;k<=len;k++) putchar(c);}
A.
B.
C.
D.
10、设有以下程序段: int a=1, b=10, c=1, x; x=a&&b||++c; printf(″%d, %d\n″,x,c); 执行后输出的结果是( )
A. 0,0
B. 0,1
C. 1,0
D. 1,1
11、以下条件语句中(其中s1和s2分别表示C语言的语句),( )与其他三条语句不等价。
A. if(a) s1; else s2;
B. if(a == 0) s2; else s1;
C. if(a != 0) s1; else s2;
D. if(a == 0) s1; else s2;
12、若已定义 int arr[10]; 则不能正确引用arr数组元素的是( )。
A. arr[0]
B. arr[1]
C. arr[10-1]
D. arr[7+3]
13、若有定义:int *p,k=4; p=&k;以下均代表地址的是( )。
A. k, p
B. &k, &p
C. &k, p
D. k, *p
14、以下程序的运行结果是( )。 main() { int a[3]={1,2,3}; int *num[3]; int **p,i; for(i=0;i<3;i++) num[i]=&a[i]; p=num; printf("%d",**p);}
A. 1
B. 3
C. &a[0]
D. num
15、以下程序中的循环执行了( )次。 #define N 2 #define M N+1 #define NUM (M+1)*M/2 main() { int i,n=0; for(i=0;i<NUM;i++) n++; printf("%d\n",n); }
A. 5
B. 6
C. 8
D. 9
16、若有定义:int x,a,b; 语句x=(a=2,b=3,a+b); 运行后,x、a、b的值依次为( )。
A. 2 3 5
B. 3 2 5
C. 5 2 3
D. 5 3 2
17、以下程序运行后,a的值是( )。 main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } }
A. 101
B. 100
C. 8
D. 7
18、下面叙述正确的是( )。
A. 宏展开不占用运行时间,只占用编译时间
B. 预处理命令也是C语句,必须以分号结束
C. 一个源程序只能有一个预编译处理命令行
D. 宏名必须用大写字母表示
19、若有定义 int m=4321,n=123,k=21; 语句printf("%4d+%3d+%2d",m,n,k); 执行后的输出结果是( )。
A. 4321432143211231231232121
B. 432112321
C. 4321+123+21
D. 432+123+021
20、( )语句符合C语言语法。
A.
B.
C.
D.
21、已有如下定义和输入语句,char c1,c2;int x; scanf("%c%d%c",&c1,&x,&c2);若要求x、c1、c2的值分别为9、'K'和'H',正确的数据输入是( )。
A. K9H
B. K 9 H
C. K9 H
D. 9KH
22、
A.
B.
C.
D.
23、若有定义:struct student{int num; char sex; int age;}stu1;下列叙述不正确的是( )。
A. student是结构体类型名
B. struct student是结构体类型名
C. stu1是用户定义的结构体类型变量名
D. num,sex,age都是结构体变量stu1的成员
24、有以下程序: main() { int c; while((c=getchar())!= '\n') { switch(c-'2') { case 0 : case 1 : putchar(c+4); case 2 : putchar(c+4); break; case 3 : putchar(c+3); default: putchar(c+2); break; } } printf("\n"); } 当输入:247<回车>,程序的输出结果是( )。
A. 689
B. 6689
C. 66778
D. 66887
25、
A.
B.
C.
D.
26、下面叙述错误的是( )。
A.
B.
C. 预处理命令行必须以分号结束
D. C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率
27、
A.
B.
C.
D.
28、对二维数组的正确定义是( )
A.
B.
C.
D.
29、在C语言中,运算符″=″和″==″的功能分别是( )
A. 关系运算和赋值运算
B. 关系运算和赋值运算
C. 都是关系运算
D. 都是赋值运算
30、下面叙述错误的是( )
A. 数组中每一个元素都属于同一个数据类型
B. C语言数组名称是数组在内存中的首地址
C. C语言数组长度在定义数组时可不作确定
D. C语言规定可逐个引用数组元素但不能一次引用整个数组
31、以下程序段运行后s的值是( )。 int a[3][3]={1,2,3,4,5,1,2,3,4}; int i,j,s=1; for(i=0;i<3;i++) for(j=i+1;j<3;j++) s+=a[i][j];
A. 6
B. 120
C. 7
D. 240
32、若有定义:int a=6,b=7,k=0,t=1; 语句 (k=a<b) && (t=a==b); 运行后,k、t的值分别是( )。
A. 0 0
B. 1 1
C. 0 1
D. 1 0
33、以下在任何情况下计算平方数时都不会引起二义性的宏定义是( )。
A.
B.
C.
D.
34、若有下面定义,能打印出字母'L'的语句是( )。 struct class { char name[8]; int age; }; struct class s[12]={"Zheng",16,"Lin",18,"Yang",19,"Guo",20};
A. printf("%c\n",s[1].name[0]);
B. printf("%c\n",s[2].name[0]);
C. printf("%c\n",s[1].name);
D. printf("%c\n",s[2].name);
35、设已定义 float a=2.0,b=3.0; 使a值为5.0的表达式是( )。
A. a+= b
B. a*=b+2.0
C. a/=b+2.0
D. a-=b+2.0
36、以下叙述中正确的是( )
A. C源程序中注释部分可以出现在程序中任意合适的地方
B.
C. C源程序编译时注释部分的错误将被发现
D. 构成C源程序的基本单位是函数,所有函数名都可以由用户命名
37、( )是正确的数组定义。
A. int n=10,x[n];
B. int x[10];
C. int N=10;int x[N];
D. int n;scanf("%d",&n); int x[n];
38、以下程序段运行后变量k的值为( )。 int m=7,n=2,k;k=(m^n)<<1;
A. 0
B. 98
C. 20
D. 10
39、若定义 int a=-5,b=-8,c=-12; 则表达式 a>=b||b<c 的值为( )。
A. 变量i的值
B. 变量j的值
C. 0
D. 1
40、执行下面程序段后,输出字符B的个数是( ) x=0; while(x<=5){ printf("B"); x+=2; }
A. 0个
B. 3个
C. 5个
D. 6个
一、单选(共计100分,每题2.5分)
1、
A. 0,0
B. 10,3
C. 13,7
D. 7,13
2、 以下程序的运行结果是( )。 void main() { int n=9; switch(n--) { default: printf("%d ",n++); case 8: case 7: printf("%d ",n); break; case 6: printf("%d ",n++); case 5: printf("%d ",n); } }
A. 8
B. 7
C. 8 9
D. 8 7
3、x的值在-20至-5之间为“真”,否则为“假”的正确逻辑表达式为( )。
A. -20<x<-5
B. x>-20 && x<-5
C. !(x>-20) && !(x<-5)
D. -5<x<-20
4、若有定义:int x=10,y=8,a; 则执行语句a=((--x==y)? x: y);后,变量a的值是( )。
A. 8
B. 9
C. 10
D. 0
5、以下程序段运行后s的值是( )。 int a[3][3]={1,2,3,4,5,1,2,3,4}; int i,j,s=1; for(i=0;i<3;i++) for(j=i+1;j<3;j++) s+=a[i][j];
A. 6
B. 120
C. 7
D. 240
6、若有以下定义: struct node { int data; struct node *next; } struct node *p; 已建立如下图所示的链表: ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ p →│data│next┼ →│data│next┼ →... →│data│NULL│ └──┴──┘ └──┴──┘ └──┴──┘ 指针p指向第一个结点,能输出链表所有结点的数据成员data的循环语句是( )。
A. while(p!=NULL) { printf("%d,",p->data); p++; }
B. while(p) { printf("%d,", p.data); p=p->next; }
C. for( ; p!=NULL; p++) printf("%d,", p->data);
D. for( ; p; p=p->next) printf("%d,", (*p).data);
7、若有定义:int a=6,b=7,k=0,t=1; 语句 (k=a<b) && (t=a==b); 运行后,k、t的值分别是( )。
A. 0 0
B. 1 1
C. 0 1
D. 1 0
8、以下程序的可执行文件名为abc.exe。 #include <stdio.h> #include <stdlib.h> void main(int argc,char *argv[]) {if(argc!=2) {printf("Input error\n"); exit(1); } printf("I love %s\n",argv[1]); } 在DOS命令行输入:abc right<回车>,则输出结果是( )。
A. Input error
B. I love abc
C. I love right
D. I love
9、以下程序的运行结果是( )。 void main() {int s = 0, i = 0; while(i< 8) { i++; if(i%2==0) continue; s+=i; } printf("%d\n",s); }
A. 36
B. 7
C. 16
D. 12
10、以下在任何情况下计算平方数时都不会引起二义性的宏定义是( )。
A.
B.
C.
D.
11、以下程序中的循环执行了( )次。 #define N 2 #define M N+1 #define NUM (M+1)*M/2 main() { int i,n=0; for(i=0;i<NUM;i++) n++; printf("%d\n",n); }
A. 5
B. 6
C. 8
D. 9
12、
A.
B.
C.
D.
13、C语言整型数据在内存中的代码是用( )表示的。
A. 原码
B. 反码
C. 补码
D. BCD码
14、以下程序运行后,文件test.txt的内容是( )。 #include <stdio.h> main() { FILE *fp; char str[][10]={"first","second"}; fp = fopen("test.txt", "w"); if(fp!=NULL) fprintf(fp,"%s",str[0]); fclose(fp); fp = fopen("test.txt", "w"); if(fp!=NULL) fprintf(fp,"%s",str[1]); fclose(fp); }
A. first
B. second
C. first second
D. second first
15、以下程序段运行后x的值为( )。 int a[8]={1,2,3,4,5,6,7,8},i,x=0; for(i=0;i<8;i++,i++) x=x+a[i];
A. 36
B. 16
C. 20
D. 18
16、以下程序段的运行结果是( )。 int s=15; switch(s/4) {default: printf("Over "); case 1: printf("One "); break; case 2: printf("Two ");}
A. Two
B. Over Two
C. Over One
D. One
17、以下程序段运行后变量k的值为( )。 int a=3,b=2; int k; k=(--a==b++)?a:b+1;
A. 0
B. 1
C. 2
D. 3
18、以下程序段的运行结果是( )。 int a[]={1,2,3,4},i,j; j=1; for(i=3;i>=0;i--) { a[i]=a[i]*j; j=j*3; } for(i=0;i<4;i++) printf("%d ",a[i]);
A. 3 6 9 12
B. 18 12 9 4
C. 27 18 9 4
D. 54 18 9 4
19、( )语句符合C语言语法。
A.
B.
C.
D.
20、以下程序段的运行结果是( )。 char str[3][2]={ 'a','b','c','\0','e','f'};printf("%s",str[0]);
A. a
B. abcef
C. abc\0ef
D. abc
21、若有定义:int a=3,b=2,c=3; 则值为0的表达式是( )。
A. (a-b)==(c/b)
B. a>=c
C. c-b||a+b&&(b*c-a-c)
D. (b*c-a-c)&&(b*c-a-b)
22、对于以下程序,说法正确的是( )。 #include <stdio.h> main() { FILE *fp; fp=fopen("quiz.txt", "w"); if(fp!=NULL) { fprintf(fp,"%s\n", "success!"); fclose(fp); printf("ok!"); } }
A. 程序运行后,当前工作目录下存在quiz.txt文件,其中的内容是"ok!"
B. 程序运行后,当前工作目录下存在quiz.txt文件,其中的内容是"success!"
C. 程序运行之前,当前工作目录下一定不存在quiz.txt文件
D. 程序运行之前,当前工作目录下一定存在quiz.txt文件
23、在对无符号数的位运算中,操作数左移三位相当于( )。
A. 操作数除以6
B. 操作数乘以6
C. 操作数除以8
D. 操作数乘以
24、若已定义 int a=11; 执行以下语句后的输出结果是( )。 printf("a=%d,a=%o,a=%x\n",a,a,a) ;
A. a=11, a=11, a=b
B. a=11, a=13, a=b
C. a=11, a=13, a=c
D. a=11, a=12, a=13
25、
A.
B.
C.
D.
26、若有定义 int m=4321,n=123,k=21; 语句printf("%4d+%3d+%2d",m,n,k); 执行后的输出结果是( )。
A. 4321432143211231231232121
B. 432112321
C. 4321+123+21
D. 432+123+021
27、执行下面程序段后,输出字符B的个数是( ) x=0; while(x<=5){ printf("B"); x+=2; }
A. 0个
B. 3个
C. 5个
D. 6个
28、若有定义:int a=3; 语句a+=a-=a*a; 运行后,a的值为( )。
A. 0
B. -3
C. -12
D. -6
29、在C语言中,若定义二维数组a[2][3],设a[0][0]在数组中位置为1,则a[1][1]在数组中位置是( )。
A. 3
B. 4
C. 5
D. 6
30、当顺利执行了文件关闭操作时,fclose函数的返回值是( )。
A. 1
B. 0
C. -1
D. 一个非0值
31、以下程序的运行结果是( )。 main() { int a[3]={1,2,3}; int *num[3]; int **p,i; for(i=0;i<3;i++) num[i]=&a[i]; p=num; printf("%d",**p);}
A. 1
B. 3
C. &a[0]
D. num
32、 只能向终端输出一个字符的是( )。
A. printf()函数
B. scanf()函数
C. getchar()函数
D. putchar()函数
33、构成C源程序的基本单位是( )
A. 语句
B. 变量
C. 运算符
D. 函数
34、C语言函数体由( )括起来。
A.
B.
C.
D.
35、若有定义: int i,x=0; 语句for(i=1;i<=3;i++) x+=2;与下列( )程序段不等价。
A. i=1;for( ;i<=3;i++) x+=2;
B. i=1;for( ; ;i++) x+=2;
C. for(i=1;i<=3; ) {x+=2; i++;}
D. i=1;for( ;i<=3; ) {x+=2; i++; }
36、若有定义:int x; char c='A'; 则正确的赋值表达式是( )。(说明:'A'的ASCII码的十进制值为65,'a'的ASCII码的十进制值为97)
A. x=c+32
B. x=c+'ABC'
C. x=c+'CBA'
D. x='ABC'
37、
A. 计算文件wj.txt的起始地址
B. 计算文件wj.txt的终止地址
C. 计算文件wj.txt的长度
D. 将文件指针定位到文件末尾
38、若有定义:float x=3.5,y=3.6; 则表达式( )的值为6。
A. (int)x+(int)y
B. x+y
C. (int)(x+y)
D. int(x+y)
39、
A. 4
B. 5
C. 8
D. 9
40、
A.
B.
C.
D.
展开阅读全文