计算机程序设计期中考试
第一篇:计算机程序设计期中考试
《计算机程序设计》期中考试试卷答案分析
一、单项选择题(每空2分,共30分)
1.若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为()
A、4B、16C、32D、52
分析:先计算逗号表达式a=4,b=16,c=32;逗号表达式的结果为最后一个逗号后表达式的运算结果,因此为32;再将32赋值给num,因此选C.2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()
A、必须为字母B、必须为下划线
C、必须为字母或下划线D、可以是字母,数字和下划线中任一种字符
3.下面四个选项中,均是合法转义字符的选项是()
A、''''''n'B、'''17''“'
C、'18''f''xab'D、'' '101''xlf'
分析:转义字符是在一般字符前加,表示对其含义加以改变;主要有三类:
(1)单引号’,由于字符的定界符为单引号,因此要表示普通字符单引号,必须加;斜线,为了和转义字符的区别,因此也需要用转义’’,第1个表示转义,第2个表示普通字符;
(2)一些特殊的控制符,如换行符’n’,制表符’t’等;
(3)八进制,十六进制的转义字符,八进制以为开始,后面跟八进制数,十六进制以x为开始,后面跟十六进制数
4.下面四个选项中,均是不合法的用户标识符的选项是()
A、AP_0doB、float la0 _A
C、b-a goto intD、_123 temp INT
分析:b-a中间有-不合法,goto和int均使用系统关键字作为标识符不合法.5.若有定义:int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是()
A、2.500000B、2.7500000C、3.500000D、0.000000
分析:整型数据的%和/运算,其结果只能是整数,因此k%3*(int)(a+b)%2/4的计算结果为0
6.设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()
A、y=(y*100+0.5)/100.0B、x=y*100+0.5,y=x/100.0
C、y=y*100+0.5/100.0D、y=(y/100+0.5)*100.0
7.已知a、b、c为int类型变量,若有输入语句:scanf(”a=%db=%dc=%d“,&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是()
A、132B、a=1b=3c=2
C、132D、a=1b=3c=2
8.已知ch是字符型变量,则不正确的赋值语句是()
A、ch=5+9;B、ch='';C、ch='7'+'9';D、ch='a+b';
c语言中逗号表达式的用法分析:字符型数据只包含一个字符.9.判断char型变量c1是否为大写字母的正确表达式是()
A、'A'<=c1<='Z'B、(c1>='A')&(c1<='Z')
C、(c1>='A')&&(c1<='Z')D、('A'<=c1)AND('Z'>=c1)
10.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是()
A、num%2==1B、!(num%2==0)C、!(num%2)D、num%2
11.以下正确的if语句是()
A、if(n>0)printf(”%f“,n)C、if(n>0)
printf(”%f“,-n);{ n=n+m;printf(”%f“,n);};
elseprintf(”%f“,-n);
B、if(n>0)D、if(n>0)
{ n=n+m;printf(”%f“,n);}{ n=n+m;printf(”%f“,n)};elseprintf(”%f“,-n); elseprintf(”%f“,-n);
分析:复合语句{}后不能加;
12.以下程序运行的结果是()
main()
{intx1=3, x2=0, x3=0;
if(x1=x2+x3)
printf(”* * * *“);
else
} printf(”# # # #“);
C、存在语法错误D、无输出结果 A、输出:* * * *B、输出:# # # #
分析:x1=x2+x3是赋值表达式,其结果为0,因此表示假,执行else后的分支语句.13.语句while(!y)中的表达式!y 等价于()
A、y==0B、y!=1C、y!=0D、y==1
14.设有程序段如下,则描述正确的是()
int x=10;
while(x=0)x=x-1;
A、while循环执行10次B、循环是无限循环
C、循环体语句一次也不执行D、循环体语句只执行一次
分析:循环条件表达式x=0是赋值表达式,其结果为0,即假,所以循环一次也不执行。
15.设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____
for(y=100;x!=y;++x,y++)
printf(”****n“);
A、循环体只执行一次B、是无限循环
C、循环体一次都不执行D、for语句中存在语法错误
分析:循环判断条件x!=y的值为0,即为假,循环不执行
二、填空题(每空1分,共20分)
1.若有定义:int y=7; float x=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为___5.5_____。
2.若采用十进制数的表示形式,则077为___63___,0111为__73__,0x29为__41__,0x
ab为___171___。分析:077为八进制数:计算7×81+7×80=63;0111计算:1×81+1×80=73
0x29为十六进制数,计算2×161+9×160=41,0xab计算:a代表10,b代表11,10×161+11×160=171
3.设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。
① x或y中有一个小于z___x
② x、y和z中只有两个为负数 _x<0&&y<0&&z>=0||y<0&&z<0&&x>=0||x<0&&z<0&&y>=0___
③ y是奇数 __y%2(或y%2==1)__
4.设x、y、z均为int型变量,且x=3, y=-4, z=5,请写出下面每个表达式对应的结果。
①(x&&y)==(x||z)____1___
②!(x>y)+(y!=z)||(x+y)&&(y-z)____1__
5.若a是int型变量,且a的初值为6,则计算表达式后a的值为____-60____
a+=a-=a*a
分析:赋值运算符具有右结合性,因此先计算a-=a*a,相当a=a-a*a,a=6-6*6=-30,再计算a+=-30,即a=a+(-30)=-30+(-30)=-60
6.若a和b均为int型变量,则以下语句的功能是__交换变量ab的值__
a+=b;b=a-b;a-=b;
7.若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为___10__,n的值为__6___
x+=n++
8.若s是int型变量,且s=6,则下面表达式的值为___1___
s%2+(s+1)%2
9.已知有变量定义:int x=4;float y=3.5;则执行 x+=y+2 之后,x的值为__9__
分析:x+=y+2相当与x=x+y+2=4+3.5+2=9.5,但是由于x为整型,因此对9.5取整赋值给x
10.C语言规定,可执行程序的开始执行点是__主函数(main)___
11.有int a=3,b=4,c=5;则以下表达式的值是______1______
!(a+b)+c-1&&b+c/2
分析:先计算!(a+b),再计算算术表达式,最后计算逻辑表达式&&,因此结果只能是1或者0,此题结果为1
12.执行下面程序段后,k值是_____36____
k=1;n=263;
do{ k*=n%10;;n/=10;}while(n);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。