计算机程序设计期中考试_计算机基础期中考试
计算机程序设计期中考试由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“计算机基础期中考试”。
《计算机程序设计》期中考试试卷答案分析
一、单项选择题(每空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';
分析:字符型数据只包含一个字符.9.判断char型变量c1是否为大写字母的正确表达式是()
A、'A'='A')&(c1
C、(c1>='A')&&(c1=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__,0xab为___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||x=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);
分析:do_while循环先执行循环体,然后判断while后的表达式是否为真;
第1次执行循环体,k=k*n%10=3,n=n/10=26,此时n不为0,因此循环继续;
第2次执行循环体,k=3*26%10=18,n=n/10=2,n不为0,循环继续
第3次执行循环体,k=18*2%10=36,n=n/10=0,n为0,循环结束
13.设a、b、c均是int类型变量,则执行以下for循环后,c的值为_40_
for(a=1, b=5; a
c+=a+b;
分析:c的初值为0,循环初值a=1,b=5,循环条件a
三、分析程序并写出运行结果(每题5分,共20分)
1.设有说明:int a=1,b=0; 则执行以下语句后的输出结果是**0**
______**2**_________
switch(a)
{ case 1:
switch(b)
{ case 0: printf(”** 0 **n“); break;
case 1: printf(”** 1 **n“);break;
}
case 2: printf(”** 2 **n“); break;
}
分析:这是一个switch的嵌套,外层switch,由于a的值为1,所以进入case1 分支;
执行内层swtich,由于b的值为0,所以,执行case 0分支,输出**0**;遇到break,结束内层swtich;
外层switch的case 1分支没有break语句,因此继续执行下一个分支case 2,输出**2**
2.当a=1, b=3, c=5, d=4 时,执行完下面一段程序后x的值是__2___
if(a
分析:else总是与它距离最近的if配对。
3.下面程序的输出结果是____a=16 y=60_____
#include “stdio.h”
main()
{int a,y;
a=10;y=0;
do{
a+=2;y+=a;
if(y>50)break;
}while(a=14);
printf(“a=%d y=%dn”,a,y);
}
4.下面程序的输出结果是__7__
#include void main(){} int k=1;long sum=0;do{k=k*(k+1)/2;sum+=k;}while(sum%7);printf(“%ld”,sum);
四、程序填空(每题5分,共10分)
1.下面程序的功能是计算1至10之间的奇数之和以及偶数之和。
main()
{int x, y, z, k;x=z=0;for(k=0; k
printf(”偶数之和 = %dn“, x);
printf(”奇数之和 =%dn“,__z+1_);此时对应z=k-11
}
2.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。请填空。
main()
{ charch1;
scanf(”%c“, ch1);
if(_ch1>=’A’&& ch1
ch1=ch1+32;
elseif(ch1>='a' && ch1
__ch1=ch1-32__;
printf(”%c“, ch1);
}
五、编程题(共20分)
1.从键盘输入3个数,找出其中的最小数和最大数并输出。(10分)
答案有多种,下面给出二种参考(注意在使用if~else时,尽量使程序简洁,效率高)参考1:利用if语句
#include
int main(){
int a,b,c,max,min;
printf(“input a,b,c:”);
scanf(“%d%d%d”,&a,&b,&c);
if(a>b){
max=a;min=b;
}else{
max=b;min=a;
}
if(c>max)
max=c;
if(c
min=c;
printf(“max=%d,min=%d”,max,min);
return 0;
}
参考2:利用条件表达式
#include
ina main(){
int a,b,c,max,min;
printf(“input a,b,c:”);
scanf(“%d%d%d”,&a,&b,&c);
max=a>b?a:b;
max=c>max?c:max;
min=a
min=c
printf(“max=%d,min=%d”,max,min);
return 0;
}
2.编程计算1
21
51
81
111
14...1
3n1的和并输出,直到某一项的绝对值小于10-6为止。(10分)
#include
#include
int main(){
int n=2;
double item,flag,sum=0;/*注意item和sum应均为实型数*/ flag=1;
item=flag/n;
while(fabs(item)>1e-6){/*fabs函数是对实型数求绝对值*/
sum=sum+item;
flag=-flag;/*flag用来控制符号的正负*/
n=n+3;
item=flag/n;
}
printf(“sum=%f”,sum);
return 0;
}
我对程序设计的一点粗浅看法——计算机程序设计发展史【内容提要】 程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计一般是以某......
《计算机程序设计实践》任务书时间: 2014年上学期 第14-16周;18-19周班级:指导教师:一、实践目的和要求1.巩固C++基础知识,了解基于对话框应用程序、文档/视图应用程序的框架结构......
计算机程序设计比赛试卷(考试时间120分钟,总分100分 )说明:1、比赛使用语言:C、C++、VB2、题目完成后,存放在D:\Test下以题号名单的文件夹当中班别:姓名:机号:成绩:1、输入一个摄氏温度,......
计信系“技能接力赛 ——程序找茬” 活动总结计算机在各行各业中应用都很广泛,基本上每个公司都会用到PPT、WORD等很多应用软件,为了促进计算机与信息工程系学生努力学习关于......
《计算机程序设计基础A》课程教学大纲(2015-2016-2)课程代码:1571002 课程学科类别:理工科 课程类别:课程性质:必修 开课时间:第2学期 课程类型: 公共基础课 适应学科专业:理工......
