c语言期末复习.docx
《c语言期末复习.docx》由会员分享,可在线阅读,更多相关《c语言期末复习.docx(47页珍藏版)》请在冰豆网上搜索。
c语言期末复习
一、选择题
1、一个C语言程序总是从____
A、主过程开始执行 B、主函数开始执行
C、子程序开始执行 D、主程序开始执行
2、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为_
A、4 B、16
C、32 D、52
3、下面四个选项中,均是C语言关键字的选项是____
A、autoenuminclude
B、switchtypedefcontinue
C、signedunionscanf
D、ifstructtype
4、若有说明语句:
charch1='\065';charch2="2";charch3='2';则:
ch1中____,ch2中____,ch3中____
A、包含1个字符 B、包含2个字符
C、包含3个字符D、字符个数不确定,说明不正确
5、若有运算符:
>、*=、?
:
、%、sizeof,则将它们按运算的优先级排列的正确次序为(由低至高)____
A、*=→?
:
→%→>→sizeofB、?
:
→*=→>→%→sizeof
C、*=→>→?
:
→sizeof→%D、*=→?
:
→>→%→sizeof
6、若有以下类型说明语句:
chara;intb;floatc;doubled;
则表达式a*b+d-c的结果类型为____
A、float B、char C、int D、double
7、以下运算符中优先级最高的运算符是____
A、&& B、++ C、?
:
D、!
=
8、若有定义:
intk=7;floata=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是___
A、2.500000 B、2.7500000
C、3.500000 D、0.000000
9、设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是____
A、y=(y*100+0.5)/100.0
B、x=y*100+0.5,y=x/100.0
C、y=y*100+0.5/100.0
D、y=(y/100+0.5)*100.0
10、设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是____
A、0~255 B、0~65535
C、-32768~+32767 D、-256~+255
11、若有说明:
inta=1,b=2,c=3,d=4;则表达式a
a:
cc:
d的值是____
A、4 B、3 C、2 D、1
12、若x为int类型,则逗号表达式(x=4*5,x*5),x+25的结果是___,x的值是___
A、20 B、100 C、表达式不正确 D、45
13、若有以下变量说明和数据的输入方式,则正确的输入语句为('└─┘'代表空格)____
变量说明:
floatx1,x2;
数据的输入方式:
4.52<回车>
3.5<回车>
A、scanf("%f,%f",&x1,&x2);
B、scanf("%f%f",&x1,&x2);
C、scanf("%3.2f└─┘%2.1f",&x1,&x2);
D、scanf("%3.2f%2.1f",&x1,&x2);
14、已知a、b、c为int类型变量,若有输入语句:
scanf("a=%db=%dc=%d",&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是____
A、132<回车> B、a=1b=3c=2<回车>
C、1<回车>3<回车>2<回车>D、a=1<回车>b=3<回车>c=2<回车>
15、以下能正确定义整型变量x、y和z并为其赋初值5的语句是____
A、intx=y=z=5; B、intx,y,z=5;
C、intx=5,y=5,z=5; D、x=5,y=5,z=5;
16、下面程序段的输出结果是____
inta=023;
printf("%d\n",--a);
A、23 B、17 C、18 D、24
17、已知ch是字符型变量,则不正确的赋值语句是____
A、ch=5+9; B、ch='\0';
C、ch='7'+'9'; D、ch='a+b';
18、以下程序段的输出结果是____
inti=1,j=4,k=2;
floatx=5.5,y=9.0,z;
z=(i+j)/k+sqrt((double)y)*1.2/k+x;
printf("%f\n",z);
A、9.800000 B、9.300000
C、8.500000 D、8.000000
19、若a为int类型变量,则执行以下程序段后a的值为____
a=5;
a*=a/=a++;
A、2 B、1 C、40 D、3
20、若x为unsignedint类型变量,则执行以下程序段后x的值是____
x=65535;
printf("%d\n",x);
A、65535 B、1 C、无定值 D、-1
21、执行语句printf("Theprogram'snameisc:
\\tools\book.txt");后的输出是____
A、Theprogram'snameisc:
toolsbook.txt
B、Theprogram'snameisc:
\toolsbook.txt
C、Theprogram'snameisc:
\\toolsbook.txt
D、Theprogram'snameisc:
\toolook.txt
22、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:
1234+123+12+1,正确的输入形式应当是____
scanf("%4d+%3d+%2d+%1d",&a,&b,&c,&d);
printf("%4d+%3d+%2d+%1d",a,b,c,d);
A、1234123121<回车>B、1234123412341234<回车>
C、1234+1234+1234+1234<回车>D、1234+123+12+1<回车>
23、逻辑运算符两侧运算对象的数据____
A、只能是0或1 B、只能是0或非0正数
C、只能是整型或字符型数据D、可以是任何类型的数据
24、判断char型变量c1是否为大写字母的正确表达式是____
A、'A'<=c1<='Z' B、(c1>='A')&(c1<='Z')
C、(c1>='A')&&(c1<='Z')D、('A'<=c1)AND('Z'>=c1)
25、设i、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是____
A、'i'&&'j' B、i<=j
C、i||j+k&&j-k D、!
((ik||1)
二、填空题
1、在C语言中,输入操作可以由库函数____完成,输出操作可以由库函数____完成。
2、若有定义:
inty=7;floatx=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为____。
3、若采用十进制数的表示形式,则077为___,0111为___,0x29为___,0xab为___。
4、设x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c的结果类型为____。
5、设有以下变量说明:
inta=5,b=10;
floatx=3.5,y=10.8;
charc1='A',c2='B';
请根据以下输出格式和结果,完成printf语句中的填空。
a=5,b=10,x+y=14.3
printf("________",_____);
x-y=-7.3└─┘a-b=-5
printf("________",_____);
c1='A'or65(ASCII)└─┘c2='B'or66(ASCII)
printf("________",_____);
6、已有定义intm;floatn,k;charch1,ch2;,为使m=3,n=6.5,k=12.6,ch1='a',ch2='A',对应的scanf语句是___________________,输入数据的方式是___________。
7、在C语言中,&作为双目运算符时表示的是___,而作为单目运算符时表示的是__。
8、设x、y、z均为int型变量,且x=3,y=-4,z=5,请写出下面每个表达式对应的结果。
、(x&&y)==(x||z) ____
、!
(x>y)+(y!
=z)||(x+y)&&(y-z)____
、x++-y+(++z) ____
9、以下程序的输出结果为____
main()
{
intx,y,z=246;
x=z/100%9;
y=(-1)&&(-1);
printf("%d,%d\n",x,y);
}
C语言程序设计第4章练习题
一、选择题
1、以下正确的if语句是____
A、if(n>0)printf("%f",n)
printf("%f",-n);
B、if(n>0)
{n=n+m;printf("%f",n);}
elseprintf("%f",-n);
C、if(n>0)
{n=n+m;printf("%f",n);};
elseprintf("%f",-n);
D、if(n>0)
{n=n+m;printf("%f",n)};
elseprintf("%f",-n);
2、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总是与__
A、缩排位置相同的if配对B、其之前最近且不带else的if配对
C、其之前最近的if配对D、第一个if配对
3、下面程序段所表示的数学函数关系是____
x=-1;
if(a!
=0)
if(a>0)x=1;
elsex=0;
-1(a<0) 1(a<0)
A、x=0(a=0)B、x=-1(a=0)
1(a>0)0(a>0)
0(a<0)-1(a<0)
C、x=-1(a=0) D、x=1(a=0)
1(a>0)0(a>0)
4、以下关于switch语句和break语句的描述中正确的是____
A、在switch语句中必须使用break语句
B、break语句只能用于switch语句体中
C、break语句只能用于循环语句中
D、在switch语句中使用break语句或continue语句的作用相同
5、设有程序段____
intx=10;
while(x=0)
x=x-1;
A、while循环执行10次 B、循环是无限循环
C、循环体语句一次也不执行D、循环体语句只执行一次
6、以下关于do-while循环不正确的描述是___
A、d0-while的循环体至少执行一次
B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D、do-while的循环体可以是复合语句
7、设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____
for(y=100;x!
=y;++x,y++)
printf("****\n");
A、循环体只执行一次 B、是无限循环
C、循环体一次都不执行
D、for语句中存在语法错误
8、语句for(表达式1;;表达式3)等价于____
A、for(表达式1;0;表达式3)
B、for(表达式1;1;表达式3)
C、for(表达式1;表达式1;表达式3)
D、for(表达式1;表达式3;表达式3)
9、以下程序段的执行结果是____
intx=-3;
do
{printf("%d\n",x++);
}while(!
x);
A、-3D、-3
B、-2-2
C、陷入死循环-1
10、执行以下程序段后,y的值是____,x的值是____
intx=1,y=10;
do
{y-=x;
x++;
}while(y--<0);
A、9B、8C、-2D、2 E、4F、3
11、执行以下程序段后a的值是____,b的值是____
inta,b;
for(b=1,a=1;b<=50;b++)
{if(a>=10)break;
if(a%2==1)
{a+=5;
continue;
}
a-=3; }
A、10B、6C、7D、8E、4
12、下面程序的运行结果是____
main()
{intm=0;
while(m<=2)
{m++;
printf("%d\n",m);
}
}
A、1 B、1
2
C、1D、1
22
33
13、若有以下程序段:
for(m=1;m<=100;m++)
{scanf("%d",&y);
if(y<0)
continue;
printf("%3d",m);}
正确的描述是____
A、当y<0时整个循环结束
B、y>=0时什么也不输出
C、printf函数永远也不执行
D、最多允许输出100个非负整数
14、以下程序段等价于____
for(k=100;k<=200;k++)
{if(k%3==0)
continue;
printf("%4d",k);
}
A、for(k=100;(k%3)&&k<=200;k++)
printf("%4d",k);
B、for(k=100;(k%3)||k<=200;k++)
printf("%4d",k);
C、for(k=100;k<=200;k++)
if(k%3!
=0)printf("%4d",k);
D、for(k=100;k<=200;k++)
{if(k%3)
printf("%4d",k);
else
continue;
break;
}
二、填空题
1、以下程序的功能是:
输入一个小写字母,按字母排列顺序后移5个位置后输出(如把'a'变为'f','w'变成'b')。
请填空。
#include"stdio.h"
main()
{charc1;
c1=getchar();
if(c1>='a'&&c1<='u')
______;
elseif(c1>='v'&&c1<='z')
______;
putchar(c1);
}
2、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。
请填空。
main()
{charch1;
scanf("%c",ch1);
if(________________)
ch1=ch1+32;
elseif(ch1>='a'&&ch1<='z')
________;
printf("%c",ch1);
}
3、以下程序的功能是判断输入的年份是否是闰年。
请填空。
main()
{intyear,yes;
scanf("%d",&year);
if(year%400==0)
year=1;
elseif(__________________)
yes=1;
else
____;
if(yes)
printf("%dis",year);
else
printf("%disnot",year);
printf("aleapyear.\n");
}
4、若运行以下程序时,输入下面指定数据,则运行结果为______
#include
main()
{intch;
while((ch=getchar())!
='\n')
{switch(ch-'1')
{case0:
case1:
putchar(ch+3);
case2:
putchar(ch+3);break;
case3:
putchar(ch+3);
default:
putchar(ch+1);break;
}
}
printf("\n");
}
输入数据(从第一列开始):
1234<回车>
5、将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段,请填空。
含有switch语句的程序段:
ints,t,m;
t=(int)(s/10);
switch(t)
{case10:
m=5;break;
case9:
m=4;break;
case8:
m=3;break;
case7:
m=2;break;
case6:
m=1;break;
default:
m=0;
}
含有非嵌套if语句的程序段:
ints,m;
if(______)m=5;
if((s<100)&&(s>=90))m=4;
if((s<90)&&(s>=80))m=3;
if((s<80)&&(s>=70))m=2;
if((s<70)&&(s>=60))m=1;
if(______)________;
6、用switch语句实现以下数学关系,请填空。
-1(x<0)
y=0(x=0)
1(x>0)
switch(x<0)
{case1:
y=-1;____
case0:
switch(x==0)
{case1:
y=0;____
____y=1;
}
}
7、设a、b、c均是int类型变量,则执行以下for循环后,c的值为____
for(a=1,b=5;a<=b;a++)
c=a+b;
8、以下程序的运行结果为____
main()
{intj=5;
while(j<=15)
if(++j%2!
=1)
continue;
elseprintf("%d",j);
printf("\n");
}
9、设ch1为char类型变量,若从键盘上由第一列输入以下数据:
right?
<回车>
则以下三个程序段的输出结果分别是_____,____,____。
、c=getchar();
while(c!
='?
')
{putchar(c);c=getchar();}
、while((c=getchar())!
='?
')
putchar(++c);
、while(putchar(getchar())!
='?
');
10、以下do-while语句中循环体的执行次数是____
a=10;b=0;
do
{b+=2;a-=2+b;
}while(a>=0);
11、若用以下形式表示for循环语句:
for(表达式1;表达式2;表达式3)
循环体语句
则执行语句for(i=0;i<3;i++)printf("*");时,表达式1执行____次,表达式3执行____次。
12、下面程序的功能是计算1-3+5-7+……-99+101的值,请填空。
main()
{inti,t=1,s=0;
for(i=1;i<=101;i+=2)
{____;s=s+t;____;}
printf("%d\n",s);
}
}
13、下面程序的功能是求1000以内的所有完全数,请填空。
(说明:
一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:
6=1+2+3,6为完全数。
)
main()
{inta,i,m;
for(z=1;a<=1000;a++)
{for(____;i<=a/2;i++)
if(!
(a%i))____;
if(m==a)printf("%4d",a);
}
}
14、下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5,请填空。
main()
{inti,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;k=i;
while(____)
{s=s+k%10;
k=____;}
if(s!
=5)
____;
count++;
}
printf("%d",count);
}
C语言程序设计第5章练习题
一、选择题
1、若有说明语句:
inta[2][4];,则对a数组元素的正确引用是____
A、a[0][3] B、a[0][4] C、a[2][2] D、a[2][2+1]
2、以下能对二维数组y进行初始化的语句是___
A、staticinty[2][]={{1,0,1},{5,2,3}};
B、staticinty[][3]={{1,2,3},{4,5,6}};
C、staticinty[2][4]={{1,2,3},{4,5},{6}};
D、staticinty[][3]={{1,0,1,0},{},{1,1}};
3、若有说明语句:
inta[][3]={1,2,3,4,5,6,7,8};,则a数组的行数为