武汉理工大学教务
试题标准答案及评分标准用纸
课程名称计算机技术基础(C语言)(B 卷)
一、单项选择题(每小题1分,共20分)
1~5 B C DD C 6~10 A C C D C
11~15 B D D B A 16~20 A D B A B
二、填空题(每小题2分,共20分)
21~25 实,return , 23 ,main , int , 类型
26~30 3 , 3 , 2 , 12 , static
三、判断改错(对打“√”,错打“×”并改正或说明错误原因。
每小题2分,共10分)
31~35 对,对,错(是5 ),错(是1),错(常量PI不能被赋值)
四、阅读下列各程序,写出运行结果(每小题4分,共20分)
数据正确2分格式正确2分
36.9;11;9;10
37.2
3
38.value=72
39. z=9
40. 1111
五、编程题(每小题10分,共30分)
41. 用for 循环编写一个求s的值的程序。
其中,s=1-1/3+1/5-1/7+……+1/97-1/99
main()
{ int i,t=1;
float s=0.0; 定义完整,s初始化 2分
for(i=1;i<100;i+=2) for循环起始句正确 2分
{ s+=t*1.0/i;
t=-t; 累加算法正确 5分
}
printf("s=%f",s); 输出格式正确 1分
}
42.按以下要求编写一个完整的程序:
1) 编写一个名为opposite的函数,实现将一个整型一维数组(长度不超过100)的元素按逆序存放;4分
2) 定义一个长度为10的整型一维数组x ; 1分
3) 从键盘输入10个整数,按序存放在x 的10个数组元素中; 1分
4)调用函数opposite,实现数组x元素的逆序存放;2分
5) 在main函数中分2行、每行5个输出项,以%6d的格式输出x全部数组元素的值。
2分
(函数)
void opposite(int x[],int n) { int i,j,t;
for (i=0,j=n-1;i<j;i++,j--) t=x[i],x[i]=x[j],x[j]=t; } (函数)或
void opposite(int x[],int n) { int i,y[100];
for(i=0;i<n;i++)
y[i]=x[n-i-1];
for(i=0;i<n;i++)
x[i]=y[i];
}
main()
{ int x[10],i;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
opposite(x,10);
for(i=0;i<10;i++)
{ printf("%6d",x[i]);
if((i+1)%5==0) printf("\n");
}
}
43.编写一个完整的程序,对于一个不多于4位的正整数x,完成:
1) 对输入的数为零或负数或超过4位数的不合法输入作重新输入的处理; 3分
2) 按逆序在屏幕上输出x的每一位数字 (例如原数为1234,应输出4321); 4分
3) 求出并在屏幕上以格式 x is *-digit显示x是几位数 3分 (例如原数为1234,应显示x is 4-digit)。
main()
{ int x,t,i=0;
do{
printf("Input a int number:");
scanf("%d",&x);
} while(x<=0||x>9999);
while(x)
{ i++;
t=x%10;
x=x/10;
printf("%d",t);
}
printf("\nx is %d-digit",i);
}。