一、 选择题(第题2分,共20分)
1. 一个C程序的执行是从 A 。
A) 本程序的main函数开始,到main函数结束
B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束
2. 若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32)
A) 4
B) 16
C) 32
D) 52
3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。
A) 0~255 65535
B) 0~32767 C) 0~
D) 0~2147483647
4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。
A) float B) char C) int D) double 5. putchar函数可以向终端输出一个
D 。
A) 整型变量表达式 C) 字符串
B) 实型变量值
D) 字符或字符型变量值
6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则
输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息
7. 判断char型变量ch是否为大写字母的正确表达式是 C 。
A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z;
A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x);
A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____.
A)continue语句的作用是结束整个循环的执行 B)只能在循环体内和switch语句体内使用break语句 C)在循环体内使用break语句或continue语句的作用相同 D)从多层循环嵌套中退出时,只能使用goto语句
二、 填空题(每空2分,共20分)
1. C语言中,用关键字 int 定义基本整型变量,用关键字 float 定义单精度实型变量,用关键字 char 定义字符型变量。 2.表达式3*20/4的计算结果是 5 。
3.复合语句是将多个语句用 花括号 括起来组成一个语句。 4.程序中使用putchar( )函数和getchar( )函数,在程序的开头必须加上 char 。 5. C语言源程序文件名的后缀是 .c 。
6.从程序流程看,C语言程序分为3种基本结构,它们是 顺序结构 选择结构 、 循环结构 。
、 三、 改错题(每处1分,共5分)
下面的程序要求输出x和y的值,其中有5处错误,请找出并改正之: (把改正后的完整的各个声明或语句直接写在原语句的右边) #include
void main()
{ int x; int x,y; scanf(“%d”,x) scanf(“%d”,&x); y=2x+1;
printf(“x=%d,y=%d\\n”); } printf(“x=%d\\n,y=%d\\n”,x,y); }
四、 程序分析与程序填空题(每题5分,共10分)
(1) 1. 写程序,判断某一年是否为闰年。
闰年的条件是:①能被4整除,但不能被100整除的年份是闰年;②能被100整除,又能
被400整除的年份是闰年
(年份:year;若闰年,令leap=1;非闰年,leap=0.)
请填空,完成下面的程序 #include
{
int year,leap; scanf(“%d”,&year); if(year%4==0) {
(1) year0==0 {
if(year@0==0)
(2) year@0==0 else
(3) leap=1 } else leap=1; } else
leap==0;
if( (4) leap ) printf(“%d is”,year);
else
printf(“%d is not”,year);
printf(“ a leap year.\\n”); }
2. 下面的程序输出9*9乘法表,请填空。 #include \void main() { int i,j,result; printf(\
for (i=1; (1) i<=9 ;i++) { for(j=1;j<=i;j++) {
result=i*j;
printf(\ (2) ); }
printf(\ }
printf(\
}
五、 简答题(每题5分,共10分) 1. 简述字符常量'a'与字符串常量\有何区别?
'a'是字符型数据,\是字符串数据,分别用putchar和getchar输入。
2. 简述下列for语句的执行过程: for(e1;e2;e3) 语句A;
(1) 先求解表达式e1
(2) =求解表达式e2,若值为真,则执行for语句中指定的内嵌语句,然后执行第(3)步,若假,则
结束循环,转到第(5)步。 (3) 求解表达式e3
(4) 转回上面第(2)步继续执行 (5) 循环结束,执行下个for语句的执行
六、 程序设计题(1题5分,2题10分,3题10分,4题10分) 1. 输入一个华氏温度,要求输出相应的摄氏温度。(保留两位小数)
#include
float c,f;
printf(\请输出一个华氏温度:\ scanf(\ c=(5.0/9.0)*(f-32.0);
printf(\摄氏温度为:%5.2f\\n\}
2. 编程:从键盘任意输入3个整数,输出其中的最大者。 #include
int a,b,c,max;
scanf(“%d%d%d”,&a,&b,&c); if(a>b)
if(a>c) max=a; else max=c; else if(b>c) max=b; else max=c;
printf(“最大者是%d\\n”,max); }
4. 编程实现1!+2!+…+n!的和。 #include
void main() {
long i,n,p,sum; p=1; sum=0;
scanf(“%d”,&n); for(i=1;i<=n;i++) { p=p*i; sum=sum+p; }
printf(“sum=%ld\\n”,sum); }