C语言练习题.docx
《C语言练习题.docx》由会员分享,可在线阅读,更多相关《C语言练习题.docx(23页珍藏版)》请在冰豆网上搜索。
C语言练习题
练习题
1、以下选项中不能用作C程序合法常量的是()。
A.1.234B.'123'C.123D."\x7G"
2、以下选项中可用作C程序合法实数的是
A..1e0B.3.0e0.2C.E9D.9.12E
3、阅读以下程序
#include
main()
{intcase;floatprintF;
printf(“请输入2个数:
”);
scanf(“%d%f”,&case,&pjrintF);
printf(“%d%f\n”,case,printF);
}
该程序编译时产生错误,其出错原因是
A.定义语句出错,case是关键字,不能用作用户自定义标识符B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用D.定义语句无错,printf不能输出case的值
4、下列标识符中,不合法的用户标识符为()。
A.PadB.CHARC.a_10D.a≠b
5、C程序源程序的扩展名是()。
A..cB..objC..exeD..prj
6、以下选项中能表示合法常量的是()。
A.整数:
1,200B.实数:
1.5E2.0C.字符斜杠:
‘\’D.字符串:
"\007"
7、以下选项中,能用作数据常量的是()。
A.o115B.0118C.1.5e1.5D.115L
8、若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是()。
A.1B.0C.2D.3
9、若有定义语句:
intx=10;,则表达式x-=x+x的值为
A.-20B.-10C.0D.10
10、表达式:
(int)((double)9/2)-(9)%2的值是()。
A.0B.3C.4D.5
11、若有定义:
doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是()。
A.a=a++,i++;B.i=(a+k)<=(i+k);C.i=a;D.i=!
a;
12、表达式a+=a-=a=9的值是()。
A.9B._9C.18D.0
13.intx=5,y=14;则表达式x+7/y+0.6值为()。
A.7.1B.5.6C.6.6D.6.1
14、有以下程序执行后的输出结果是()。
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf("%d\n",s);}
A.自然数1~9的累加和B.自然数1~10的累加和
C.自然数1~9中的奇数之和D.自然数1~10中的偶数之和
15、C语言中运算对象必需是整型的运算符是()。
A./B.%C.*D.+
16、计算机能直接执行的程序是()。
A.源程序B.目标程序C.汇编程序D.可执行程序
17、if语句的基本形式是:
if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。
A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值
18、有以下程序运行时,输入的值在哪个范围才会有输出结果()。
main(){
intx;scanf("%d",&x);
if(x<=3);
elseif(x!
=10)printf("%d\n",x);}
A.不等于10的整数B.大于3且不等于10的整数
C.大于3或等于10的整数D.小于3的整数
19、在嵌套使用if语句时,C语言规定else总是()。
A.和之前与其具有相同缩进位置的if配对B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对D.和之前的第一个if配对
20、若有表达式(w)?
(--x):
(++y),则其中与w等价的表达式是()。
A.w==lB.w==0C.w!
=lD.w!
=0
21、希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”,则以下不能满足的表达式是()。
A.num%2==1B.!
(num%2==0)C.!
(num%2)D.num%2
22、若有以下类型说明语句:
charw;intx;floaty;doublez;则表达式w*x+z-y的结果为()类型.
A.floatB.charC.intD.double
23、表达式3.6-5/2+1.2+5%2的值是()。
A.4.3B.4.8C.3.3D.3.8
24、设有定义:
inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是()。
A.if(a>B.c=a,a=b,b=c;B.if(a>B.{c=a,a=b,b=c;}
C.if(a>B.c=a;a=b;b=c;D.if(a>B.{c=a;a=b;b=c;}
25、以下关于for语句的说法不正确的是()。
A.for循环只能用于循环次数已经确定的情况
B.for循环是先判断表达式,后执行循环体语句
C.for循环中,可以用break跳出循环体
D.for循环体语句中,可以保含多条语句,但要用花括号括起来
26、若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?
(x++):
(y++)中的条件表达式(x-y)等价的是()。
A.(x-y)>0B(x-y<0)C.(x-y<0║x-y>0)D.(x-y)==0
27、若i和k都是int类型变量,有以下for语句
for(i=0,k=-1;k=1;k++)printf("*****\n");
下面关于语句执行情况的叙述中正确的是()。
A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环
28、C语言中关于“函数声明”的说法正确的是()。
A.必须对所有所调用的函数进行声明
B.都没必要声明,声明只是为了加快编译的速度
C.返回值为void类型的函数任何时候都可以不用声明
D.并不是任何情况下都需要进行声明
29、以下能正确定义字符串的语句是()。
A.charstr[]={‘\064'};B.charstr=”\x43”;
C.charstr=”;D.charstr[]=”\0”;
30、能正确表示逻辑关系:
"a≥8或a≤5"的C语言表达式是()。
A.a>=8ora<=5B.a>=5|a<=8C.a>=8&&a<=5D.a>=8||a<=5
31、一个C程序的执行总是从()。
A.main函数开始,直到main函数结束
B.main函数开始,直到最后一个函数结束
C.第一个函数开始,直到最后一个函数结束
D.第一条语句开始,直到最后一条语句结束
32、以下对C语言函数的有关描述中,正确的是()。
A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中
33.C程序的三种基本结构为:
()结构、选择结构和循环结构。
A.顺序B.过程C.函数D.对象
33、下列叙述中正确的是()。
A.每个C程序文件中都必须有一个main()函数B.C程序可以由一个或多个函数组成
C.在C程序中main()函数的位置是固定的D.在C程序的函数中不能定义另一个函数
34、C语言中,数字029是一个()。
A.不合法数字B.十进制数C.八进制数D.十六进制数
35、已定义变量如下:
inta=5,b=7,c;则执行语句a>b?
(c=(a++)-(++b)):
(c=a+++8);后c的值为()
A.15B.14C.13D.12
36、下列选项中,能正确定义数组的语句是()。
A.intnum[0..2008];B.intnum[];
C.intN=2008;D.#defineN2008
intnum[N];intnum[N];
37、若有说明数组“inta[3][4]”,则以下对数组a的正确引用是()。
A.a[2][4]B.a[1,3]C.a[1+1][0]D.a
(2)
(1)
38、若有说明“staticinta[3][4];”,则数组a中各元素()。
A.可在程序的运行阶段得到初值0B.可在程序的编译阶段得到初值0
C.不能得到确定的初值D.可在程序的编译或运行阶段得到初值0
39、调用strlen(“abcd\0ed\0g”)的返回值是()。
A.4B.5C.8D.9
40、以下程序程序的执行后的输出结果是()。
main()
{inti,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++)printf(“%d”,t[2-i][i]);}
A.753B.357C.369D.751
41、以下数组定义中错误的是()。
A.intx[][3]={0};B.intx[2][3]={{1,2},{3,4},{5,6}};
C.intx[][3]={{1,2,3},{4,5,6}};D.intx[2][3]={1,2,3,4,5,6};
42、对于一个正常运行的C程序,以下叙述中正确的是()。
A.程序的执行总是从main函数开始,在main函数结束
B.程序的执行总是从程序的第一个函数开始,在main函数结束
C.程序的执行总是从main函数开始,在程序的最后一个函数中结束
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
43、设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A.k++B.k+=1C.++kD.k+1
44、以下选项中,合法的C语言数值常量是()。
A.028B.'\12A'C.'\177’D.N
45、对于一个正常运行的C程序,以下叙述中正确的是()。
A.程序的执行总是从main函数开始,在main函数结束
B.程序的执行总是从程序的第一个函数开始,在main函数结束
C.程序的执行总是从main函数开始,在程序的最后一个函数中结束
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
46、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。
A.在函数调用时函数的实参和其对应的形参共占同一存储单元
B.在函数调用时函数的形参和实参分别占用不同的存储单元
C.在函数调用时同名的实参和形参占同一存储单元
D.形参只是形式上的存在,即使在函数调用时也不占用具体存储单元
47、若有定义语句:
chars[10]="1234567\0\0";,则strlen(s)的值是()。
A.7B.8C.9D.10
48、已知chars[10],*p=s,则下列语句中错误的是()。
A.p=s+5;B.s=s+p;C.s[2]=p[4];D.*p=s[0];
49、C语言中运算符优先级最低的是()。
A.++B.,C.-D.!
=
50、以下程序运行后的输出结果是()。
voidfun(intp)
{intd=2;p=d++;printf(“%d”,p);}
51、以下程序程序运行后的输出结果是()。
main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;
printf("%d,%d,%d,%d",m,n,*p,*q);}
A.1,2,1,B.1,2,2,1C.2,1,2,D.2,1,1,2
52、main()
{inta=1;fun(A.;printf(“%d\n”,A.;}输出结果是()。
A.32B.12C.21D.22
53、若有定义语句:
chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是()。
A.p=s;B.p=k;C.p=s[0];D.k=s;
54、若有表达式(w)?
(--x):
(++y),则其中与w等价的表达式是()。
A.w==lB.w==0C.w!
=lD.w!
=0
55、以下定义语句中正确的是()。
A.inta=b=0;B.charA=65+1,b='b';
C.floata=1,*b=&a,*c=&b;D.doublea=0.0,b=1.1;
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有’\0’
56、以下程序运行后的输出结果是()。
voidfun(char*s)
{while(*s)
{if(*s%2==0)printf(“%c”,*s);
s++;
}
}
main()
{chara[]={“good”};fun(A.;printf(“\n”);}
注意:
字母a的ASCⅡ码值为97
A.dB.goC.godD.good
58、已知:
charstr[10],*p=str;则下列语句错误的是()。
A.p=str+5;B.str=str+p;C.str[2]=p[4];D.*p=s[0];
59、若有定义:
intw[3][5];,则以下不能正确表示该数组元素的表达式是()。
A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
60、下列语句组中,正确的是()。
A.char*s;s="Olympic";B.chars[7];s="Olympic";
C.char*s;s={"Olympic"};D.chars[7];s={"Olympic"};
61、有以下程序运行时,输入的值在哪个范围才会有输出结果()。
main(){
intx;scanf("%d",&x);
if(x<=3);
elseif(x!
=10)printf("%d\n",x);}
A.不等于10的整数B.大于3且不等于10的整数
C.大于3或等于10的整数D.小于3的整数
62.若有以下说明,则数值为4的表达式是()。
inta[3][4]={{0,1},{2,4},{5,8}};
int(*p)[4]=a;
A.*[a]+1B.p++,*(p+1)C.a[2][2]D.p[1][1]
63.设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A.k++B.k+=1C.++kD.k+1
64.以下关于简单程序设计的步骤和顺序的说法中正确的是()。
A.确定算法后,整理并写出文档,最后进行编码和上机调试
B.首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档
C.先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档
D.先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
65.C语言源程序名的后缀是()。
A..exeB..CC..objD..cp
66.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的()。
A.正当性B.可行性C.确定性D.有穷性
67.已知
int t=0;
while(t=1){...}
则以下叙述正确的是()。
A)循环控制表达式的值为0
B)循环控制表达式的值为1
C)循环控制表达式不合法
D)以上说法都不对
68.设有以下程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf("%d",s);
则
A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
69.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为()。
for(i=0, j=10; i<=j; i++, j- -) k=i+j;
A.6B.9C.10D.11
70.设函数fun的定义形式为
voidfun(charch,floatx){…},则以下对函数fun的调用语句中,正确的是()。
A.fun("abc",3.0);B.t=fun('D',16.5);C.fun('65',2.8);D.fun(32,32);
71.以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
72、若有定义:
inta=8,b=5,c;执行语句c=a/b+0.4;后,c的值为()。
A.1.4B.1C.2.0D.2
73、下列叙述中正确的是()。
A.每个C程序文件中都必须有一个main()函数B.C程序可以由一个或多个函数组成
C.在C程序中main()函数的位置是固定的D.在C程序的函数中不能定义另一个函数
74.字符串"hello,abc"占用内存的字节数是()。
A.8B.9C.10D.11
75、以下关于return语句的叙述中正确的是()。
A.一个自定义函数中必须有一条return语句
B.一个自定义函数中可以根据不同情况设置多条return语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
76、C语言中,break;语句可以用于循环语句和()语句中。
A.ifB.switchC.forD.while
77.一函数的原型为:
doubleff_1(floatx,inty);那么该函数返回值的类型为()。
A.整型B.单精度型C.双精度型D.字符型
78、for(i=0;i<=15;i++)printf("%d",i);循环结束后,i的值为()。
A.14B.15C.16D.17
79、下面的函数调用语句中func函数的实参个数是()。
func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
A.3B.4C.5D.8
80.有以下程序
main()
{charb,c;inti;b='a';c='A';
for(i=0;i<6;i++)
{if(i%2)putchar(i+b);
elseputchar(i+c);
}printf("\n");
}
程序运行后的输出结果是()
A.ABCDEFB.AbCdEfC.aBcDeFD.abcdef
81、与语句“while(!
x)”等价的语句是()。
A.while(x==0)B.while(x!
=0)C.while(x==1)D.while(x!
=1)
82、已知字母A的ASCII码为十进制的65,且x是字符型则执行语句x='A'+'6'-'3'后x的值是()。
A.DB.68C.不确定的值D.C
83.若变量已正确定义,在if(W)printf(“%d\n,k”);中,以下不可替代W的是
A.a<>b+cB.ch=getchar()C.a==b+cD.a++
84、以下正确的函数头定义形式是()。
A.doublefun(intx,inty)B.doublefun(intx;inty)
C.doublefun(intx,inty);D.doublefun(intx,y);
85.有以下程序
#include
main()
{intx=011;
printf("%d\n",++x);
}
程序运行后的输出结果是
A.12B.11C.10D.9
86、下述程序段中,while循环执行次数是()。
intk=0;
while(k=1)k++;
A.无限次B.有语法错误,不能执行
C.一次也不执行D.执行一次
87.设有定义:
doublex[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是
A.scanf("%f",&x[6]);B.scanf("%lf",*(x+6));
C.scanf("%lf",p+6);D.scanf("%lf",p[6]);
88、假设指针p1已经指向了某个整型变量,要使指针p2也指向同一个变量,则下面各项中正确的是()。
A.p2=**p1B.p2=&p1C.p2=*p1D.p2=&*p1
89、若有如下说明,则数值为5的表达式是()。
inta[12]={1,2,3,4,5,6,7,8,9,10};
charc='a',e,g;
A.a[g-c]B.a[5]C.a['d'-'c']D.a['e'-c]
90、以下程序中,while循环的次数是()。
#include
voidmain()
{inti=0;
while(i<10){if(i<1)continue;if(i==5)break;i++;}}
A.1B.死循环,不能确定次数C.6D.10
91、有以下语句:
intb;charc[10];,则正确的输入语句是()。
A.scanf("%d%s",&b,&c);B.scanf("%d%s",&b,c);
C.sscanf("%d%s",b,c);D.scanf("%d%s",b,&c);
92、若变量已经正确定义并赋值,符合C语言语法的表达式是()。
A.a=7++B.a=7+b+c,a++C.int(12.3%4)D.a=a+7=c+b
93.#include“math.h”
main()
{floata=-3.0,b=2;
printf(“%3.0f%3.0f\n”,pow(b,fab(a),pow(fab(a),b));
}
A.98B89C66D49
94.下列语句正确的是()
A.inta[][2]={1};B.intb[4]=(1,2,3,4);
C.intc[5]={0,1,2,3,4,5};D.intd[][3]={{1},{3,2,5}};
95.有以下程序
#include
intfun()
{staticintx=1;
x*=2;
returnx;
}
main()
{inti,s=1;
for(i=1;i<=3;i++)s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是
A.0B.10C.30D.64
96.以下选项中可用作C程序合法实数的是