C语言练习题.docx
《C语言练习题.docx》由会员分享,可在线阅读,更多相关《C语言练习题.docx(32页珍藏版)》请在冰豆网上搜索。
C语言练习题
一、单项选择题
1.以下有4组用户标识符,其中合法的一组是()。
A)forB)4dC)f2_G3D)WORD-sub
2.以下选项中合法的字符常量是()。
A)"B"B)'\t'C)68D)D
3.假定x和y为double型,则表达式x=2,y=x+1/2的值是()。
A)2.500000B)2C)2.000000D)3.000000
4.若变量已正确定义并赋值,下面符合C语言语法的表达式是()。
A)a:
=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b
5.C语言中运算对象必须是整型的运算符是()。
A)%=B)/C)=D)<=
6.若变量已正确定义并赋值,下面符合C语言语法的表达式是()。
A)a=9+b=5+cB)a=9+b;c=a+9;C)a=12.5%3D)a=(9+b,c++)
7.若有以下程序段,则执行后,c3的值是()。
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
A)0B)0.5C)1D)2
8.设x、y均为整型变量,且x=10y=3,则语句printf("%d,%d\n",--x,y++);的输出结果是()。
A)9,4B)9,3C)10,4D)10,3
9.若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=12,c=a-b)后num的值为()。
A)-8B)4C)12D)8
10.若有说明语句:
char*str="\t\’c\\Language\n";,则指针str所指字符串的长度为()。
A)13B)15C)17D)该语句不正确
11.以下对结构体类型变量rcard的定义中不正确的是()。
A)#defineRECstructcardB)structcard
REC{intid;floatsala;{intid;floatsala;};
}rcard;structcardrcard;
C)structcardD)struct
{intid;floatsala;};{intid;floatsala;}rcard;
cardrcard;
12.设ch是char类型变量,其值是'A',则以下表达式的值是()。
ch=(ch>=’A’&&ch<=’Z’)?
(ch+32):
ch
A)ZB)AC)aD)z
13.在一个源程序文件中定义的全局变量的作用域为()。
A)本文件的全部范围
B)主函数及其所调用的函数
C)离定义该变量的位置最近的函数
D)从定义该变量的位置开始至本文件结束
14.若有定义:
chara[20],b[20];,以下能为a、b正确进行赋值的语句是()。
A)gets(a,b);B)gets(a);gets(b);
C)getchar(a);getchar(b);D)scanf(“%s%s”,a[],b[]);
15.若有说明语句:
inta[2][3],m,n;且0≤m≤1,0≤n≤2,则以下对数组元素的正确引用形式是()。
A)a[m]+nB)(a+m)[n]C)*(a+m)+nD)*(*(a+m)+n)
16.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。
A)INPUTx、y、z;B)scanf("%d%d%d",&x,&y,&z);
C)scanf("%d%d%d",x,y,z);D)read("%d%d%d",&x,&y,&z);
17.在C语言中,二维数组元素在内存中的存放规则是:
()。
A)所有元素都连续存放,并按行存放
B)所有元素都连续存放,并按列存放
C)同一行元素连续存放
D)同一列元素连续存放
18.若有定义:
intc[5],*p=c;,则以下对c数组元素地址的正确引用是()。
A)p+5B)c++C)&c+1D)&c[0]
19.t为int类型,进人下面的循环之前,t的值为0
while(t=-8)
{……}
则以下叙述中正确的是()。
A)循环控制表达式的值为0B)循环控制表达式的值为1
C)循环控制表达式不合法D)以上说法都不对
20.若有说明语句:
intx1=3,x2=0,x3=0;,以下程序段()。
if(x1=x2+x3)printf("****");
elseprintf("####");
A)输出****B)输出####C)存在语法错误D)无输出结果
21.若用fopen函数创建一个新的二进制文件,要求文件既能读也能写,则应选用的文件方式字符串是()。
A)"wb+"B)"w+"C)"rb+"D)"r+"
22.设x、y均为整型变量,且x=10y=3,则以下语句的输出结果是()。
printf("%d,%d\n",--x,y++);
A)10,4B)9,3C)9,2D)10,2
23.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。
A)地址传递B)单向值传递
C)由实参传给形参,再由形参传回实参D)传递方式由用户指定
24.以下对一维数组a的正确说明是()。
A)chara(10);B)inta[];C)intk=5,a[k];D)chara[]={'1','a','%'};
25.若执行fopen函数时发生错误,则函数的返回值是()。
A)随机数B)1C)NULLD)EOF
26.若有说明:
inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是()。
A)i=*p;B)*p=j;C)i=&j;D)i=**p;
27.以下定义语句中,错误的是()。
A)inta[]={1,2};B)char*a[3];C)chars[10]="test";D)intn=5,a[n];
28.当定义一个结构体变量rcard时,系统分配给它的内存是()。
A)结构体中第一个成员所需的内存容量
B)结构体中最后一个成员所需的内存容量
C)结构体成员中占内存量最大者所需的容量
D)结构体中各成员所需内存容量的总和
29.以下程序存在语法错误,关于错误原因的正确说法是()。
main()
{voidsearch_n(intA);
intA[5]={5,4,0,7,1},b;
……
b=search_n(A);
……
}
A)voidsearch_n();是函数调用语句,不能使用void说明
B)函数声明和函数调用语句之间有矛盾
C)变量名不能使用大写字母
D)函数名不能使用下划线
30.若k为整型变量,则以下for循环的执行次数是()。
for(k=2;k!
=0;)
printf(“%d”,k--);
A)无限次B)0次C)1次D)2次
31.若有以下调用语句,则不正确的fun函数的首部是()。
main()
{……
inta[50],n;
……
fun(n,a);
……
}
A)voidfun(intm,inta)B)voidfun(intm,intx[])
C)voidfun(intm,int*s)D)voidfun(intm,intx[50])
32.以下关于预处理的叙述中不正确的是()。
A)预处理命令行必须位于源程序的开始部位
B)预处理命令是在正式编译之前先行被处理的
C)一条有效的预处理命令行必须单独占据一行
D)C源程序中凡是以“#”号开始的控制行都是预处理命令行
33.若有定义:
int*p[3];,则以下叙述正确的是()。
A)p是一个指针数组,数组p有3个元素,每个元素是指针
B)p是一个指针变量,它可以指向一个一维数组中的任意元素
C)p是一个指针变量,它可以指向一个含有3个整型元素的一维数组
D)(*p)[3]等价于*p[3]
34.以下选项中,不能正确赋值的是()。
A)chars1[10];s1="Ctest";B)chars2[]={'C','t','e','s','t'};
C)chars3[20]="Ctest";D)char*s4="Ctest\n"
35.判断char型变量c1是否为大写字母的正确表达式是()。
A)'A'<=c1<='Z'B)(c1>='A')&(c1<='Z')
C)(c1>='A')&&(c1<='Z')D)('A'<=c1)AND('Z'>=c1)
36.C语言规定:
在源程序中,main函数的位置()。
A)必须在最开始B)必须在最后
C)可以任意D)必须在被调用的函数前面
37.若有以下说明和语句,则对结构体变量std中成员的引用方式不正确的是()。
structwork
{intid;
intname;
}std,*p;
p=&std;
A)std.idB)(*p)->idC)(*p).idD)p->id
38.若有语句chars1[10],s2[10]="abcdef";,则能将字符串abcdef赋给数组s1的正确语句是()。
A)s1="abcdef";B)s1=s2;C)strcpy(s1,s2);D)strcpy(s2,s1);
39.设有定义:
chars[20]="ABCDEF";,则数组s在内存中所占字节数是()。
A)6B)7C)20D)不确定
40.以下正确的函数定义形式是()。
A)doublefun(intx,inty)B)doublefun(intx;inty)
{[函数体语句]}{[函数体语句]}
C)doublefun(intx,inty);D)doublefun(intx,y)
{[函数体语句]}{[函数体语句]}
41.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总是与()。
A)缩排位置相同的if配对B)其之前最近且不带else的if配对
C)其之前最近的if配对D)第一个if配对
42.有如下程序,该程序的输出结果是()。
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf(“%f\n”,y);}
A)0.000000B)0.250000C)0.500000D)1.000000
43.有如下程序,该程序段的输出结果是()。
main()
{intn=9;
while(n>6){n--;printf("%d",n);}}
A)987B)876C)8765D)9876
44.以下程序的输出结果是()。
main()
{charc='a';
printf("%c",c+25);}
A)zB)ZC)a+25D)y
45.以下程序的运行结果是()。
#include"stdio.h"
main()
{union
{longa;intb;charc;
struct{intx;inty;}ss;
}m;
printf("%d\n",sizeof(m));
}
A)2B)4C)6D)8
46.判断字符串str1是否大于字符串str2,应当使用()。
A)if(str1>str2)B)if(strlen(str1)>strlen(str2))
C)if(strcmp(str1>str2))D)if(strcmp(str1,str2)>0)
47.若有定义:
intx[5]={0,2,4};,则数组x在内存中所占字节数是()。
A)3B)6C)10D)不能确定
48.下面对typedef的叙述中不正确的是()。
A)用typedef不能定义变量名
B)用typedef可以定义新的数据类型
C)使用typedef有利于程序的通用和移植
D)用typedef只是将已存在的类型用一个新的标识符来代表
49.以下程序的输出结果是()。
main()
{inti,a[10];
for(i=9;i>=0;i--)
a[i]=10-i;
printf("%d",a[8]);}
A)8B)5C)2D)3
50.以下程序的输出结果是()。
main()
{charst[20]="hello";
printf("%d\n",sizeof(st));}
A)6B)20C)13D)5
51.以下程序的输出结果是()。
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=7)break;
if(b%3==1){b+=3;continue;}
}
printf("%d\n",a);}
A)101B)3C)5D)4
52.以下函数值的类型是()。
intfun(floatx)
{floaty;
y=3*x-4;
returny;}
A)intB)不确定C)voidD)float
53.有如下程序,该程序的执行结果是()。
main()
{inti,sum;
for(i=1;i<=3;i++)sum+=i;
printf("%d\n",sum);}
A)6B)不确定的值C)死循环D)0
54.有如下程序,该程序的输出的结果是()。
intfunc(inta,intb)
{return(a+b);}
main()
{intx=2,y=5,r;
r=func(x,y);
printf("%d\n",r);}
A)6B)7C)8D)9
55.有如下程序,该程序的输出结果是()。
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;}
printf(“a=%d,b=%d\n”,a,b);}
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
56.有如下程序,运行该程序的输出结果是()。
main()
{inty=3,x=3,z=1;
printf("%d,%d\n",(++x,y++),z+2);}
A)3,4B)4,2C)4,3D)3,3
57.有如下程序,该程序的执行结果是()。
main()
{intx=20;
do
{printf(“%d”,x--);}while(!
x);
}
A)19B)20C)不输出任何内容D)陷入死循环
58.以下程序的输出结果是()。
main()
{inta=3;
printf("%d\n",a+(a+=a*a));}
A)-6B)12C)24D)-12
59.阅读以下程序:
main()
{intx;
scanf("%d",&x);
if(x--<7)printf("%d",x);
elseprintf("%d",x++);}
程序运行后,如果从键盘上输入7,则输出结果是()。
A)8B)7C)5D)6
60.有如下程序,该程序的输出结果是()。
main()
{inta=2,b=-1,c=2;
if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
A)0B)1C)2D)3
61.一个C语言程序是由()。
A)主程序和若干子程序组成B)函数组成
C)若干过程组成D)若干子程序组成
62.设变量a是整型,f是实型,i双精度型,则表达式10+’a’+i*f值的数据类型为()。
A)intB)floatC)doubleD)不确定
63.当接受用户输入的含空格的字符串时,应使用()函数。
A)scanf()B)gets()C)getchar()D)puts()
64.若a是float型变量,b是unsigned型变量,以下输入语句中合法的是()。
A)scanf("%6.2f%d",&a,&b);B)scanf("%f%u",&a,&b);
C)scanf("%f%3o",&a,&b);D)scanf("%f%f",&a,&b);
65.以下有关宏替换的叙述不正确的是()。
A)宏替换不占用运行时间B)宏名无类型
C)宏替换只是字符替换D)宏名必须用大写字母表示
66.设x为int型变量,则执行语句x=10;x+=x;后,x的值为()。
A)10B)20C)40D)30
67.设inta[]={10,20,30,40,50,60};则下列说法中,正确的是()。
A)数组名a是a数组的首地址B)a表示了数组元素a[1]的地址
C)允许进行a++运算D)允许进行a=a-1运算
68.若有说明:
inta[3][4];则对a数组元素的正确引用是()。
A)a[3][4]B)a[1,3]C)a[1+1][1+2]D)a
(2)
(1)
69.循环体至少被执行一次的语句为()。
A)for循环B)while循环C)do-while循环D)任一种循环
70.C语言用()表示逻辑“真”的值。
A)trueB)t或yC)非零D)整数0
71.有如下函数调用语句:
func(rec1,rec2+rec3,rec4,rec5);
则定义子函数func时,形参个数为()。
A)3B)4C)5D)有语法错
72.循环for(i=0,j=10;i=j=10;i++,j--)的循环体执行次数是()。
A)0B)1C)10D)无限
73.英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为()。
A)50B)66C)52D)68
74.设a=1,b=2,c=3,d=4,则表达式“a
a:
ca:
d”的结果为()。
A)4B)3C)2D)1
75.设有数组定义:
chararray[]="China";则数组array所占的空间为()。
A)4个字节B)5个字节C)6个字节D)7个字节
76.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()。
A)(x>1)&&(x<10)||(x>200)&&(x<2l0)
B)(x>=1)||(x<=10)||(x>=200)||(x<=210)
C)(x>=1)&&(x<=10)||(x>=200)&&(x<=2l0)
D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)
77.定义如下变量和数组:
inti;
intx[3][3]={{1,2,3},{4,5,6},{7,8,9}};
则语句for(i=0;i<3;i++)printf("%2d",x[i][2-i]);的输出结果是()。
A)357B)147C)159D)369
78.C语言规定:
函数返回值的类型是由()。
A)return语句中表达式类型决定B)调用该函数时的主调函数类型决定
C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型决定
79.如果在一个函数中的复合语句中定义了一个存储类型为auto的变量,则该变量()。
A)只在该复合语句中有效B)在该函数中有效
C)在程序范围内均有效D)它是非法变量
80.下列选项中,非法的C语言转义字符是()。
A)'\t'B)'\018'C)'\n'D)'\xff'
81.C语言中运算对象必须是整型的运算符是()。
A)%=B)/C)=D)<=
82.以下程序的输出结果是()。
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;break;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
83.用fopen()函数打开一个已存在的文本文件,在保留已有数据同时又可读可写,则文件打开模式为()。
A)"a+"B)"a"C)"w+"D)"r+"
84.如果a和b是两个字符串,判断a和b是否相等,应当使用如下形式()。
A)(a==b)B)(a=b)C)(strcpy(a,b)==0)D)(strcmp(a,b)==0)
85.执行以下程序后,y的值是()。
#include
main()
{inta[]={2,4,6,8,10};
inty=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y=*p*x;
printf("%d\n",y);
}
A)6B)8C)10D)4
86.以下程序执行后,sum的值是()。
main()
{inti,sum=0;
for(i=1;i<6;i++)sum+=i;
printf("%d\n",sum);
}
A)15B)14C)不确定D)0
87.下面的符号常量定义中,正确的是()。
A)#definePI3.14;B)#includePI3.14;
C)#definePI=3.14D)#definePI3.14
88.当定义一个结构体变量时,系统分配给它的内存是()。
A)各成员所需内存量的总