c语言的同步练习.docx
《c语言的同步练习.docx》由会员分享,可在线阅读,更多相关《c语言的同步练习.docx(32页珍藏版)》请在冰豆网上搜索。
c语言的同步练习
第1章
一、单选题
1.C语言并不是一种严格的算法语言,在以下关于C语言的不严格的叙述中,错误的是(A)。
A 大写字母与小写字母的意义相同B 有些不同类型的变量可以在一个表达式中运算
C 在赋值表达式中赋值号左边的变量和右边的值可以是不同类型
D 同一个运算符号在不同的场合可以有不同的含义
2、以下说法中,不正确的是(B)
A C语言是一种函数式语言,有且仅有一个main()函数
B 在C源程序中,可以出现多个main()函数
C 函数是由函数说明部分和函数体组成的
D 函数体是由若干说明语句和执行语句组成的
二、填空题
1.C程序是由函数构成的,一个C源程序至少包含一个main函数。
2.C语言规定:
main()函数可在源程序的任何位置。
3.C程序的执行是从main函数开始,在mian函数中结束。
4.在C语言中,一个函数由函数体和函数首部两部分组成。
5.函数体一般包括声明部分和执行部分。
6.C程序书写格式规定,每行可写几个语句,一个语句可以写在多行。
一个C语言的语句至少应包含一个;。
7.用/*……*/可对C程序中的任何部分作注释。
8.C源文件取名,后缀一般为.c。
编译源代码,生成目标文件,其后缀名一般为.obj。
对目标文件进行连接,生成可执行文件,其后缀名一般为.exe。
第2章
一、单选题
1、下列不是算法的特征的是(D)。
A有效性B确定性C有穷性D特殊性
二、填空题(多空答案之间请用##隔开,即使有空不填也要用##分隔。
例如有两空答案分别为a=2b=3而您只知道b=3的话,答案须写为##b=3)
1、一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,问第10次落地时,共经过多少米?
第10次反弹多高?
请编程实现。
2、找出1至99之间的全部同构数。
同构数是这样一组数:
它出现在平方数的右边。
例如:
5是25右边的数,25是625右边的数,5和25都是同构数。
3、编写满足条件1+2+3+…+n≥500的最小n及和s的程序。
4、有一高楼,有阶梯若干级,每步跨2级,最后余1级;每步跨3级,最后余2级;每步跨5级,最后余4级;每步跨6级,最后余5级;每步跨7级,正好到楼顶。
计算该楼至少多少级。
5、求出1至599中能被3整除,且至少有一位数字为5的所有整数。
如15,51,513等均是满足条件的整数。
要求每行输出六个数。
6、求满足条件abcd=(ab)2+(cd)2有所有四位数。
第3章
一、选择题
1.下列各组中均为常量的是A。
A.123,-0x23,-2.5B.–1,1/2,6.8
C.–6,π,345.0D.3.5,6.9,a
2.下列各组中不全是字符常量的是A。
A.‘a’,“b”,‘2’B.‘+’,‘\101’,‘f’
C.‘6’,‘\n’,‘x’D.‘3’,‘$’,‘\x41’
3.下列各组中全是实数的是A。
A.0.5,1.4e2,-6.9B.7.8,e3,-5.1
C.1.5e3.5,0.9,-6.0D.41.2,45,7.7
4.下列各组中不全是合法的变量名的是C。
A.day,lotus_1_2_3,x1B.Abc,_above,basic
C.M.John,year,sumD.YEAR,MONTH,DAY
5.下列各组中全是字符串常量的是A。
A.“a+b”“1+2=5”,“china”B.‘abc’,‘xyz’,‘5’
C.‘123’,“456”,“789”D.‘\n’,“1+2=3”,“aaa”
6.设有说明语句“floatx,y;”,则下列选项中,不合法的赋值语句是_B_____
A.++x;B.y=(x%2)/10;C.x*=y+8;D.x=y=0;
7.设charch;则不合法的赋值语句是____A__
A.ch=‘a+b’;B.ch=‘\0’;
C.ch=‘a’+‘b’;D.ch=7+9;
8.以下能正确地定义整型变量a,b,c,并给它们都赋值5的语句是C______
A.inta=b=c=5;B.inta,b,c=5;C.inta=5,b=5,c=5;D.a=b=c=5;
二、填空题
1.charc;c=‘a’;c的ASCII代码为97,则在内存中c的值为:
1100001。
2.在定义变量的同时给变量一个值,称为初始化。
3.#definePI3.14说明PI为3.14。
4.表达式10+‘x’+2.5*7的值为型的量float。
5.设x=3.5;则表达式(int)x+x的值为6.5。
6.设i=5;则语句k=i++;执行后,k=5,i=6。
7.设inta=6;表达式a/=a+a运算后,a=0。
8.表达式a=3*5,a+a,a+3的值为17。
9.表达式x=(2+3,6*5),x+5运算后,x=35。
10.设a=9;x=6.3;y=3.5;则表达式a%5*(int)(x+y)%7/4的值为0。
11.设a=5;则表达式a+=a*=a+a运算后,a=100。
12.inta=5,b=2;表达式b+=(float)(a+b)/2运算后b=5.5。
13.charc;表达式c=‘a’-‘A’+‘B’运算后,c的值b。
14.表达式b=35/7*5-7%4*4运算后b=-6。
15.表达式(int)(sqrt(0.25)+5.7)运算后,值为6。
第二章 数据类型、运算符与表达式
二、填空题
1. charc;c=‘a’;c的ASCII代码为97,则在内存中c的值为:
1100001。
2. 在定义变量的同时给变量一个值,称为初始化。
3. #definePI3.14说明PI为3.14。
4. 表达式10+‘x’+2.5*7的值为float型的量。
5. 设x=3.5;则表达式(int)x+x的值为6.5。
6. 设i=5;则语句k=i++;执行后,k=5,i=6。
7. 设inta=6;表达式a/=a+a运算后,a=0。
8. 表达式a=3*5,a+a,a+3的值为33。
9. 表达式x=(2+3,6*5),x+5运算后,x=35。
10.设a=9;x=6.3;y=3.5;则表达式a%5*(int)(x+y)%7/4的值为0。
11.设a=5;则表达式a+=a*=a+a运算后,a=100。
12.inta=5,b=2;表达式b+=(float)(a+b)/2运算后b=3.5。
13.charc;表达式c=‘a’-‘A’+‘B’运算后,c的值b。
14.表达式b=35/7*5-7%4*4运算后b=13。
15.表达式(int)(sqrt(0.25)+5.7)运算后,值为6。
16.设有说明:
charc1;则c1=‘a’;是否正确?
正确
17.设有说明:
charc2;则c2=65;是否正确?
正确
18.表达式a=(a=(2,3),a+2)运算后a=____5____。
19.表达式a=3,b=a,c=a*b,a+b+c的值为__15______。
20.表达式b=((b=(2,3),b+2),15+b)运算后,b=_20_______。
21.表达式b+=b=((b=(2,3),b+2),15+b)运算后,b=___40_____。
22.表达式b+=b-=((b=(2,3),b+2),15+b)运算后,b=___-24_____。
23.表达式b=35/7*5-7%4*4运算后b=(13)
24. 设intx,y,z;则执行语句x=(y=(z=10)+5)-5;后x值为__10__,y值为____15_,z值为_10___。
25. 下面程序的输出是___12017078x____。
main()
{charc=‘x’;
printf(“C:
dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
}
26.设有说明语句“floatx;”,若要使x能正确接收从键盘输入的一数,函数调用语句为___scanf(“%f”,&x);__。
27.设有说明语句“intx;”,则执行语句“x=7;x+=x-=x+x;”后x值为__-14___。
28.设有说明语句“inta,b;”,则语句“a+=b;b=a-b;a-=b;”的功能是_互换a,b___。
29.设floatk;执行语句scanf(“%d”,k);k不能得到正确值的原因为____少了&___。
30.设floata=1.0;intb=3;若输出结果为a/b=’0.333333%,则相应的printf语句为__printf(“a/b=%0.6f%\n”,a/b);____。
31.设chara;a=getchar();的输入是b,则a值为____b_,getchar()函数的值为_97____。
32.设inta,b,c;则执行:
scanf(“%d,%d,%d”,&a,&b,&c)语句使a,b,c值分别为1,2,3的输入是____1,2,3____。
33. 执行scanf(“%2d%2d”,&a,&b)语句的输入是123456,则a的值为____12__,b值为___34___。
三、其它题
1、'a'和"a"有什么区别前者占一个字节后者占两个
2、求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.72.5
(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.53.5
3、写出程序运行结果。
main(){inti,j;m,n;i=8;j=10;m=++i;n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);}
9,11,9,10
4、写出下面表达式运算后a的值,设原来a=12。
设a和n已定义为整型变量。
(1)a+=a24
(2)a-=210
(3)a*=2+360
(4)a/=a+a0
(5)a%=(n%=2),n的值等于50
(6)a+=a-=a*=a0
第4章
一、单选题
1、putchar()函数可以向终端输出一个___D_______。
A整型变量或表达式的值B实型变量的值C字符串D字符或字符型变量值
2、以下说法正确的是______D___。
A输入项可以为一个实型常量,如scanf(“%f”,3.5);
B只有格式控制,无输入项,也能进行正确输入,如scanf(“a=%d,b=%d”);C当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);
D当输入数据时,必须指明变量的地址,如scanf(“%f”,&f);
3、设有说明语句“floatx,y;”,则下列选项中,不合法的赋值语句是_________B___.
A++xBy=(x%2)/10Cx*=y+8Dx=y=0
4、设charch;则不合法的赋值语句是_____A_____。
Ach=‘a+b’;Bch=‘\0’;Cch=‘a’+‘b’;Dch=7+9;
5、以下能正确地定义整型变量a,b,c,并给它们都赋值5的语句是______C____。
Ainta=b=c=5;Binta,b,c=5;Cinta=5,b=5,c=5;Da=b=c=5;
二、填空题(多空答案之间请用##隔开,即使有空不填也要用##分隔。
例如有两空答案分别为a=2b=3而您只知道b=3的话,答案须写为##b=3)
1、设intx,y,z;则执行语句x=(y=(z=10)+5)-5;后x值为____10______,y值为______15____,z值为______10____。
2、下面程序的输出是___12017078x______。
main()
{charc=‘x’;
printf(“C:
dec=%d,oct=%o,hex=%x,ASCII=%c\n”,c,c,c,c);
3、设有说明语句“floatx;”,若要使x能正确接收从键盘输入的一数,函数调用语句为__________scanf(“%f”,&x)_____。
4、设intx;则执行语句x=7;x+=x-=x+x;后x值为_________-14_。
5、设inta,b;语句a+=b;b=a-b;a-=b;的功能是__互换a,b__________。
第5章
一、单选题
[No.1],[ID=52]
1、逻辑运算符两侧运算对象的数据类型_____D_____。
A只能是0或1B只能是0或非0数
C只能是整型或字符型数据D可以是任何类型的数据
2、以下关于运算符优先级顺序的描述正确的是C__________。
A关系运算符<算术运算符<赋值运算符<逻辑运算符
B赋值运算符<关系运算符<算术运算符<逻辑运算符
C赋值运算符<逻辑运算符<关系运算符<算术运算符
D算术运算符<关系运算符<赋值运算符<逻辑运算符
3、命题“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是___A______。
A(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B(x>=1)||(x<=10)||(x>=200)||(x<=210)
C(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D(x>=1)||(x<=10)&&(x>=200)||(x<=210)
4、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是_C_________。
AA%2==1B!
(A%2==0)
C!
(A%2)DA%2
5、执行以下语句后a的值为___D_______;b的值为_______C___。
Inta,b,c;
a=b=c=1;
++a||++b&&++c;
则a的值为
A错误B0C2D1
6、执行以下语句后,a的值为B__________;b的值为________6__。
Inta=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
本题a的值为
A5B0C2D1
7、以下程序运行的结果是C__________。
Main()
{intm=5;
if(m++>5)
printf(“%d\n”,m);
else
printf(“%d\n”,m――);
}
A4B5C6D7
8、若有条件表达式(exp)?
a++:
b――,则以下表达式中能完全等价于表达式(exp)的是________B_。
A(exp==0)B(exp!
=0)C(exp==1)D(exp!
=1)
二、填空题(多空答案之间请用##隔开,即使有空不填也要用##分隔。
例如有两空答案分别为a=2b=3而您只知道b=3的话,答案须写为##b=3)
1、若有int y;则表示命题“y是奇数”成立的C语言表达式是_(___ify%2!
=0)______。
2、在C语言中,表示逻辑“真”值用__________表示。
答案1
3、条件“2<x<3或x<-10”的C表达式是__________。
答案
(x>2)&&(x<3)||(x<-10)
4、以下程序运行的结果是__20________。
Main()
{inta,b,c,d,x;a=c=0;b=1;d=20;if(a)d=d-10;elseif(!
b)
if(!
c)x=15;elsex=25;printf(“%d\n”,d);
5、以下程序段的运行结果是__**1****3**________。
Intx=1,y=0;switch(x)
{case1:
switch(y){case0:
printf(“**1**”);break;
case1:
printf(“**2**”);break;
}case2:
printf(“**3**”);}
6、以下程序运行的结果是_a=_2b=1________。
#include"stdio.h"
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break; }
case2:
a++;b++;break;
}
printf(“a=%d,b=%d\n”,a,b);
}
第6章
一、单选题
[No.1],[ID=73]
1、while(!
E);语句中,条件表达式等价于____A______。
AE==0BE!
=1CE!
=0DE==1
2、下面程序的运行结果是_______B___。
Intn=0;
while(n++<=2);
printf(“%d”,n);
A2B3C4D有语法错
3、下面程序段的运行结果是________D__。
a=1;b=2;c=2;
while(a
{t=a;a=b;b=t;c――;}
printf(“%d,%d,%d\n”,a,b,c);
A1,2,0B2,1,0C1,2,1D2,1,1
4、C语言中,while与do-while循环的主要区别是___A_______。
Ado-while的循环体至少无条件执行一次
Bwhile的循环控制条件比do-while的循环控制条件严格
Cdo-while允许从外部转到循环体内
Ddo-while的循环体不能是复合语句
5、对for(表达式1;;表达式3)可理解为__________。
Afor(表达式1;;表达式3)BfoBr(表达式1;1;表达式3)
Cfor(表达式1;表达式1;表达式3)Dfor(表达式1;表达式3;表达式3)
6、以下for循环体执行的次数是______C____。
For(x=0,y=0;(y=123)&&(x<4);x++);
A为无限次循环B循环次数不定C4次D3次
7、下列不是死循环的是_____D_____。
AintI=100;while
(1){I=I%100+1;if(I>100)break;}
Bfor(;;);
Cintk=0;do{++k;}while(k>=0);Dints=36;while(s);――s;
8、执行语句for(I=1;I++<4;);后I的值为_____C_____。
A3B4C5D不定
9、下列程序段的输出结果是_______D___。
Intx=3;
do
{printf(“%2d\n”,x-=2);
}while(!
(――x));
A1B1-2C3,0D是死循环
10、以下四个关于C语言的结论中,只有一个是错误的,它是__D________。
A可以用while语句实现的循环一定可以用for语句实现
B可以用for语句实现的循环一定可以用while语句实现
C可以用do-while语句实现的循环一定可以用while语句实现
Ddo-while语句与while语句的区别仅是关键字“while”出现的地方不同
二、填空题(多空答案之间请用##隔开,即使有空不填也要用##分隔。
例如有两空答案分别为a=2b=3而您只知道b=3的话,答案须写为##b=3)
[No.1],[ID=119]
1、执行下面程序段后,k值是___36_______。
K=1;n=263;
do
{k*=n%10;n/=10;
}while(n);
2、鸡兔共有30只,脚共有90个,下面的程序段是计算鸡兔各有多少只
for(x=1;x<=29;x++)
{y=30—x;
if(_________2x+2y==90_)
printf(“%d,%d\n”,x,y);}
3、下面程序的运行结果是_______120___。
Main(){intI,x,y;
I=x=y=0;
do
{++I;if(I%2!
=0)
{x=x+I;I++;}
y=y+I++;}while(I<=7);
printf(“x=%d,y=%d\n”,x,y);}
4、下面程序的运行结果是__********#______。
Main(){intI,j=4;
for(I=j;I<=2*j;I++)
swi(I/j){ca0:
caseprintf(“**”);break;case2:
printf(“#”);
5、以下程序段的功能:
从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
Intn=0,c;c=getchar();
while((c=getchar())!
=’\n’ ){if((c>=0)&&(c<=9)))
n++;c=getchar();}
6、下面程序的输出结果是_____01_____。
Main()
{intI,j,k=19;while(I=k-1)
{k-=3;if(k%5==0)
{I++;continue;}
elseif(k<5)
break;
I++;
}printf(“I=%d,k=%d\n”,I,k);
7、填空完成下面程序,其功能是打印100以内个位数为6且能被3整除的所有数。
Main(){intI,j;
for(I=0;______I<=100____;I++)
{j=I*10+6;
if(___(j%3)!
=0______