高
职
升
本
计算机应用基础C语言精编100题精通学院计算机组编
C语言精编100题
一、单选题
1.(1) 由C语言编写的代码程序( )
A. 可直接执行
B. 是一个源程序
C. 经过编译即可执行
D. 经过编译解释才能执行
(2) C语言源程序的扩展名为( )
A. .obj
B. .c
C. .exe
D. .cpp
2.(1) 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )
A. 大写字母
B. 中划线
C. 数字字符
D. 下划线
(2) 下列选项中,不能用作标识符的是( )
A. _1234_
B. _1_2
C. int_2_
D. 2_int_
(3) 以下选项中合法的用户标识符是( )
A. long
B. _2Test
C. 3Dmax
D. A.dat
(4) 以下不能定义为用户标识符的是( )
A. Main
B. _0
C. _int
D. sizeof
(5) 下列定义变量的语句错误的是( )
A. int _int;
B. double int_;
C. char For;
D. float US$;
(6)以下选项中不合法的标识符是()
A. print
B. FOR
C. &a
D. _00
(7) 以下不合法的用户标识符是()
A.j2_KEY B. Double C. 4d D. _8_
3.在C语言中,整型数据分为( )
A. 二进制、八进制、十进制
B. 二进制、十进制、十六进制
C. 八进制、十进制、十六进制
D. 二进制、八进制、十进制、十六进制
4.(1) 在C语言中,合法的实型常数是( )
A. 5E2.0
B. E-3
C. .2E0
D. 1.3E
(2) 在C语言中,合法的实型常数是( )
A. 1.2E0.5
B. 3.14159E
C. 5E-3
D. E15
(3) 以下选项中,不能作为合法常量的是( )
A. 1.234e04
B. 1.234e0.4
C. 1.234e+4
D. 1.234e0
(4) 以下不合法的数值常量是( )
A. 011
B. le1
C. 8.0E0.5
D. 0xabcd
(5) 以下选项中,能用作数据常量的是( )
A. o115
B. 0118
C. 1.5e1.5
D. 115
(6) 以下选项中,合法的一组C语言数值常量是( )
A. 028
B. 12.
C. .177
D. 0x8A
.5e-3 OXa23 4e1.5 10,000
-0xf 4.5e0 Oabc 3.e5
5.(1) 在C语言中,非法的字符常量是( )
A.‘\t’
B.‘\17’
C. "\n"
D.‘\xaa’
(2) 以下不合法的字符常量是( )
A.‘\018’
B.‘\"’
C.‘\\’
D.‘\xcc’
(3) 以下选项不属于字符常量的是( )
A. 'C'
B. "C"
C. '\xCC'
D. '\072'
6.在C语言中,以下关于运算符叙述错误的是( )
A. 在C语言中,逗号运算符的优先级最低
B. 在C语言中,赋值运算符自右向左运算
C. 在C语言中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算
D. 在C语言中,++、--运算符可以改变变量的值
7.下列运算符中优先级最高的运算符是( )( )
A. <=
B. =
C. %
D. &&
A. ==
B. /
C. =
D. >=
8.(1) 以下程序的输出结果是( )
main()
{ int a=3,b=4; printf("%d\n",a<=b); }
A. 3
B. 4
C. 1
D. 0
(2) 在C语言中,表达式10!=9的值为( )
A. 0
B. False
C. 1
D. True
9.在C语言中,以下非法的表达式是( )
A. 0<=x<=100
B. i=j==0
C. (char)(65+3)
D. x+1=x+1
10.在C语言中,以下非法的赋值语句是( )
A. j++;
B. ++(i+1);
C. x=j>0;
D. k=i==j;
11.表达式3.6-5/2+1.2+5%2的值是( )
A. 4.3
B. 4.8
C. 3.3
D. 3.8
12.(1) 设有语句:int a=3;则执行了语句a+=a-=a*a;变量a的值是( )
A. 3
B. 0
C. 9
D. -12
(2) 设有语句:int x=10;则执行了语句x+=x-=x-x;变量x的值是( )
A. 10
B. 20
C. 40
D. 30
(3) 设有语句:int a=0;则执行语句 a+=(a=8);变量a的值是( )
A. 0
B. 8
C. 16
D. 24
13.以下程序的输出结果是( )( )( )( )( )
⑴ main()
{ int i=10,j=1;
printf("%d,%d\n",i--,++j);}
A. 9,2
B. 10,2
C. 9,1
D. 10,1
⑵ main()
{ int a=12,b=12;
printf("%d %d\n" ,--a,++b);}
A. 10 10
B. 12 12
C. 11 10
D. 11 13
⑶ main()
{ int x=023;
printf("%d\n",--x);}
A. 17
B. 18
C. 23
D. 24
⑷ main()
{ int x=10,y=10;
printf("%d %d\n",x--,--y);}
A. 10 10
B. 9 9
C. 9 10
D. 10 9
⑸ main()
{ int i=010,j=10; printf("%d,%d\n",++i,j--);}
A. 11,10
B. 9,10
C. 010,9
D. 10,9
main()
{ int x=100,y=200;
printf("%d\n",(x,y));
}
A. 200
B. 100
C. 100 200 D)200 100
15.以下程序的输出结果是( )
main()
{ int x=10,y=3,z;
printf("%d\n",z=(x%y,x/y));
}
A. 1
B. 0
C. 4
D. 3
16.int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( )
A. k++
B. k+=1
C. ++k
D. k+1
17.以下程序的输出结果是( )
main()
{ int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z); }
A. 2,3,3
B. 2,3,2
C. 2,3,1
D. 2,2,1
18.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( )
A. 1
B. 2
C. 3
D. 4
19.设int x=-1;执行表达式++x||++x||++x||++x,x的值是( )
A. 0
B. 1
C. 2
D. 4
20.以下程序的输出结果是
(1) main(){ int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k);}()
A. k=11,k=12,k=11
B. k=11,k=13,k=13
C. k=11,k=013,k=0xb
D. k=11,k=13,k=b
(2) main(){ int k=17; printf("%d,%o,%x\n",k,k,k); }()
A. 17,021,0x11
B. 17,17,17
C. 17,0x11,021
D. 17,21,11
21.运行时从键盘上输入9876543210
{ int a;float b,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("a=%d,b=%f,c=%f\n",a,b,c);
}
A. a=98,b=765,c=4321
B. a=10,b=432,c=8765
C. a=98,b=765.000000,c=4321.000000
D. a=98,b=765.0,c=4321.0
22.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量
a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)( )
A. 10□X□20□Y<回车>
B. 10□X20□Y<回车>
C. 10□X<回车>
D. 10X<回车>
20□Y<回车> 20Y<回车>
#define MA(x) x*(x-1)
main()
{ int a=1,b=2;
printf("%d\n",MA(1+a+b)); }
A. 6
B. 8
C. 10
D. 12
24.以下程序的输出结果是( )
#define M(x,y,z) x*y+z
main()
{ int a=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+a));}
A. 19
B. 17
C. 15
D. 12
25.以下程序段的输出结果是( )
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{ int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k); }
A. 15
B. 100
C. 10
D. 150
26.设a=1,b=2,c=3,d=4,则表达式a
A. 4
B. 3
C. 2
D. 1
27.以下程序段的输出结果是( )
main()
{ int x=1,y=2,z=3;
if(x>y)
if(y else printf("%d",++y); printf("%d\n",x++); } A. 331 B. 41 C. 2 D. 1 28.以下程序段的输出结果是( ) main() { int x=5; if(x++>5) printf("%d\n",x); else printf("%d\n",x--); } A. 4 B. 5 C. 6 D. 7 29.以下程序段的输出结果是( ) main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; case 3:a++;b++; } printf("a=%d,b=%d\n",a,b); } A. a=1,b=0 B. a=2,b=2 C. a=1,b=1 D. a=2,b=1 30.(1) 有以下程序 main() { int n=4; while(n--) printf("%d ",--n); } 程序执行后的输出结果是( ) A. 2 0 B. 3 1 C. 3 2 1 D. 2 1 0 (2)有以下程序 main() { int y=10; while(y--); printf("y=%d\n",y); } 程序执行后的输出结果是( ) A. y=0 B. y=-1 C. y=1 D. while构成无限循环 31.有以下程序 main() { int i; for(i=0;i<3;i++) switch(i) { case 0: printf("%d",i); case 1: printf("%d",i); default: printf("%d",i); } } 程序执行后的输出结果是( ) A.000112 B. 012 C. 012020 D. 120 32.以下叙述中正确的是( ) A. 构成C程序的基本单位是函数 B. 可以在一个函数中定义另一个函数 C. main()函数必须放在其它函数之前 D. 所有被调用函数一定要在调用之前进行定义 33.以下说法中正确的是( ) A. C语言程序总是从第一个函数开始执行 B. 在C语言程序中,要调用的函数必须在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分 34.以下程序段的输出结果是( ) int fun(int x,int y) { return (x+y); } main() { int a=1,b=2,c=3,sum; sum=fun((a++,b++,a+b),c++); printf("%d\n",sum); } A. 6 B. 7 C. 8 D. 9 35.(1) 以下程序的输出结果是( ) int fun(int x) { int p; if(x==0||x==1) p=3; else p=x-fun(x-2); return p; } main() { printf("%d\n",fun(7)); } A. 7 B. 3 C. 2 D. 0 (2) 以下程序的输出结果是( ) int f(int x) { int y; if(x==0||x==1) return (3); else y=x*x-f(x-2); return y; } main() { printf("%d\n",f(3)); } A. 0 B. 9 C. 6 D. 8 36.以下数组定义中错误的是( ) A. int x[][3]={0}; B. int x[2][3]={{1,2},{3,4},{5,6}}; C. int x[][3]={{1,2,3},{4,5,6}}; D. int x[2][3]={1,2,3,4,5,6}; 37.以下能正确定义二维数组的是( ) A. int a[][3]; B. int a[][3]={2*3}; C. int a[][3]={}; D. int a[2][3]={{1},{2},{3,4}}; 38.以下程序的输出结果是( ) main() { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2)); } A. 3 B. 4 C. 1 D. 2 39.以下程序的输出结果是( ) main() { int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*p+9); } A. 0 B. 1 C. 10 D. 9 40.以下程序的输出结果是( ) main() { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; printf("%d\n", *p+*q); } A. 16 B. 10 C. 8 D. 6 41.设有char array[]="China"; 则数组array所占的空间字节数为( ) A. 4 B. 5 C. 6 D. 7 42.在C语言中,对于以下定义正确的叙述为( ) char x[]="abcdefg"; char y[]={'a','b','c','d','e','f','g'}; A. 数组x和数组y等价 B. 数组x和数组y的长度相同 C. 数组x的长度大于数组y的长度 D. 数组x的长度小于数组y的长度 43.以下不能正确进行字符串赋初值的语句是( ) A. char str[5]="good!"; B. char str[]="good!"; B. char *str="good!"; D. char str[5]={‘g’,‘o’,‘o’,‘d’}; 44.(1) 以下程序的输出结果是( ) main() { char str[]="ABCD",*p=str; printf("%d\n",*(p+4)); } A. 68 B. 'D' C. 0 D. '0' (2) 以下程序的输出结果是( ) main() { char str[]="aeiou",*p=str; printf("%c\n",*p+4)); } A. o B. u C. e D. f (3) 以下程序的输出结果是( ) main() { char *s="ABCDE"; s+=2; printf("%d\n",s[0]); } A. C B. D C. 67 D. 68 45.(1) 以下程序的输出结果是( ) main() { char *p="abcde\0fghijk\0"; printf("%d\n",strlen(p)); } A. 5 B. 15 C. 6 D. 16 (2) 以下程序的输出结果是( ) main() { char s[]="1234567890\0"; printf("%d\n",strlen(s));} A. 8 B. 9 C. 10 D. 11 46.以下程序的输出结果是( ) main() { char *s="ABC"; do { printf("%d",*s%10); s++; } while(*s); } A. 5670 B. 656667 C. 567 D. ABC 47.以下程序的输出结果是( ) main() { int a=1,b=3,c=5; int *p1=&a,*p2=&b,*p=&c; *p=(*p1)*(*p2); printf("%d\n",c); } A. 1 B. 2 C. 3 D. 4 48.int a[10],*p=a; 不能代表a[1]地址的是( ) A. p+1 B. a+1 C. ++a D. ++p 49.int a[4][5],(*p)[5]; p=a; 下列对数组a 数组元素正确的引用形式是( ) A. p+1 B. *(p+3) C. p[0][2] D. *(p+1)+3 50.设有以下说明语句,则下面的叙述不正确的是( ) struct ex { char a; int b; float c; } example; A. struct 是结构体关键字 B. example是结构体类型名 C. a、b、c是结构体成员名 D. struct ex是结构体类型 二、填空题 51.一个C源程序至少应该有一个函数。 52.在C语言中,实型变量分为和。 53.以下程序运行后的输出结果是。 main() { int x=2006,y=2007; printf("%d\n",(x,y)); } 54.(1) 以下程序运行后的输出结果是。 main() { int a=10; printf("%d,%o,%x\n",a,a,a); } (2) 以下程序运行后的输出结果是。 main() { int a,b,c; a=25;b=025;c=Ox25; printf("%d %d %d\n",a,b,c); } (3) 以下程序运行后的输出结果是。 main() { int a=1,b=2; a=a+b;b=a-b;a=a-b; printf("%d,%d\n",a,b); } (4) 设整型变量a和b中的值分别为7和9,要求按一下格式输出a和b的值: a=7 b=9 请完成输出语句:printf(" ",a,b); 55.(1) 以下程序运行后的输出结果是。 main() { char ch='B'; printf("%c %d\n",ch,ch); } (2) 以下程序运行后的输出结果是。 main() { char ch='B'; ch+=32; printf("%c\n",ch); } (3) 以下程序运行后的输出结果是。 main() { char ch; ch='H'-'A'+'0'; printf("%c\n",ch); } (4) 以下程序运行后的输出结果是。 main() { int c; char ch=97; c=ch+1; printf("%c %c\n",c,ch); } (5) 以下程序运行后的输出结果是。 main() { char a,b; a='B';b=33; a=a-'A'+'0'; b=b*2; printf("%c,%c\n",a,b); } 56.`以下程序运行后的输出结果是。 main() { float x=123.4567; printf("%f\n",(int)(x*100+0.5)/100.0); } 57.(1) 有程序如下,要求给i赋10,给j赋20,则应该从键盘输入。 main() { int i,j; scanf("i=%d,j=%d",&i,&j); printf("i=%d,j=%d",i,j); } (2) 输入123456,则输出结果是。 main() { int a,b; scanf("%2d%2d",&a,&b); printf("%d,%d\n",a,b); } 58.(1) 以下程序运行后的输出结果是。 main() { int a=10; a=(3*5,a+4); printf("a=%d\n",a); } (2)以下程序运行后的输出结果是。 main() { int a=0,b=0,c=0; c=(a+=a-=5),(a=b,b+3); printf("%d,%d,%d\n",a,b,c); } 59.(1) 以下程序运行后的输出结果是。 main() { int a=5,b=4,c=3,x; x=a>b>c; printf("%d\n",x); } { int a=3,b=2; b=a<0&&a++>3; printf("%d,%d\n",a,b); } (3)以下程序运行后的输出结果是。 main() { int a,b,c=246; a=c/100%9; b=-1&&-1; printf("%d,%d\n",a,b); } (4)以下程序运行后的输出结果是。 main() { int a,b,c; a=10;b=20; c=(a%b<1)||(a/b>1); printf("%d,%d,%d\n",a,b,c); } 60.(1) 以下程序运行后的输出结果是。 #define MAX(x,y) (x)>(y)?(x):(y) main() { int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf("%d\n",t); } (2)以下程序运行后的输出结果是。 #define S(x) 4*x*x+1 main() { int i=6,j=8; printf("%d\n",S(i+j)); } (3) 以下程序运行后的输出结果是。 #define ADD(x) x+x main() { int a=2,b=1,c=3; printf("%d\n",c*ADD(a+b)); } 61.(1) 以下程序运行后的输出结果是。 main() { int x,a=1,b=2,c=3,d=4; x=(a