1、一、单选(共计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
2、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 *n
3、ext; } 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->n
4、ext; 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.
5、 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
6、'); 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
7、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;以下
8、均代表地址的是( )。 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/
9、2 main() { int i,n=0; for(i=0;i
10、 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. 432112
11、321 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 se
12、x; 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 : putc
13、har(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.
14、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,
15、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
16、出字母'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的表达式是(
17、 )。 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的值为(
18、 )。 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 19、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、20 21、 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("% 22、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 23、程序的可执行文件名为abc.exe。 #include 24、 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、以下程序中的循环执行了( )次。 #d 25、efine N 2 #define M N+1 #define NUM (M+1)*M/2 main() { int i,n=0; for(i=0;i 26、E *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的值为( )。 i 27、nt 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的值为( )。 28、 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、( )语句符 29、合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、对于以下程序,说法正确的是( ) 30、 #include 31、uiz.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=43 32、21,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的值为( )。 33、
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]; 34、 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;与 35、下列( )程序段不等价。
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.






