C语言程序设计期末考试模拟题
0 课程成绩组成与考试环境
(1)课程成绩=平时成绩(100分制)×0.3+考试成绩(100分制)×0.7。 (2)平时成绩中,教师应考虑30分以上的成绩为团队互助与协作能力考核。 (3)考试成绩=程序设计能力模块成绩×0.7+编程规范与算法表示模块成绩×0.3 注意:程序设计能力模块和编程规范与算法表示模块为必过(模块成绩≥60分)模块,若期末考试中有其中任一模块未通过,则课程成绩置为缓考,须在下学期开学时重考相应的模块,重考模块的成绩将打8折,即模块成绩=考试卷面成绩×0.8。若经过下学期开学时重考后还有模块未通过,则课程成绩置为58分以下,学生应在以后学年重修本课程。
考试在机房闭卷上机完成,即闭卷机考。程序调试环境为Microsoft VC 6.0。
1 程序设计能力模块 100分、150分钟
1.1 程序调试、修改 10小题、40分
给出的程序可能存在语法或算法上的问题或需要补充完整,但需要修改的地方肯定在/*******Found*******/下的第一行上且每行仅有一个(类)错误,不能修改其它地方,不能修改或删除/*******Found*******/本身,遵循最少修改、保持一行一条语句及{与}单独一行的原则。由于是计算机自动阅卷,修改时不能增加行或删除行,哪怕是一个空行都不行,否则可能得0分。
应当提醒考生的是:由于考生在考前作了大量练习,知道考题的大概考法——实际考题与此公布的考题肯定会有所变化、程序需要修改调试的地方会有所不同,因此,请考生考试时务必仔细阅读实际考题的要求,严格按实际考题的要求做,避免先入为主,切记!
以下需要调试、修改的程序供考生复习本题型的考点、考法使用,实际考题与此将有所区别,并且是以C语言源程序文件的形式提供——非在Word中修改。
(1)从键盘读入一个数并在屏幕上显示
#include
void main() {
int i;
/*********Found************/ scanf(\
/*********Found************/ printf(\}
1
(2)调用函数,显示两个实数间最大的一个
#include
float fmax(float x, float y);
void main() {
/*********Found************/ float i, 0;
O = 3.0; i = 5.6;
/*********Found************/
printf(\}
/*********Found************/ int fmax(float x, float y) {
if (x < y) return y; else return x; }
(3)将字符串yy在屏幕上输出
#include
void main() {
/*********Found************/ char yy[100] = \
/*********Found************/ f0r (; *yy; yy++) {
putchar(*yy); } }
(4)计算半径为2+3的圆的面积
#include
/*********Found************/ #define S(r) PI*r*r
void main() {
/*********Found************/ int mianJi;
mianJi = S(2+3);
printf(\}
(5)将字符串yy显示在屏幕上
#include
2
void main() {
/*********Found************/ char yy[100] = \
/*********Found************/ print(\}
(6)从键盘读入一行字符(包括空格、TAB等字符)并在屏幕上显示
#include
void main() {
/*********Found************/ char yy(128);
/*********Found************/ getchar(yy);
/*********Found************/ printf(\}
(7)判断x和y是否相等,相等则显示x=y,不等则显示x<>y
#include
void main() {
/*********Found************/ char x, y;
x = 39270; y = 41001;
/*********Found************/ if (x = y) {
printf(\ }
/*********Found************/ else; {
printf(\ } }
(8)打开文件d:\\te.c用于读并判断打开是否成功
#include
void main() {
FILE *fp;
/*********Found************/ char fileName[] = \
/*********Found************/ fp = fopen(fileName, \
3
/*********Found************/ if (fp == EOF) {
puts(\ exit(1); }
putchar(fgetc(fp)); fclose(fp); }
(9)申请100个字节的内存空间,显示其首地址,然后释放申请到的内存空间
#include
void main() {
/*********Found************/ char p[100];
/*********Found************/
if (p = (char *)malloc(100) == NULL) {
printf(\ return ; }
printf(\
/*********Found************/ fclose(p); }
(10)将字符串p显示在屏幕上
#include
/*********Found************/ #define BEGIN
/*********Found************/ #define END
void main() {
char *p = \ const int i = 0;
for (printf(\ BEGIN
putchar(p[i]);
/*********Found************/ i++; END }
(11)计算1/1 + 1/2 + ? + 1/N之和并显示
#include
void main()
4
{
/*********Found************/ int sum = 0; int i;
for (i = 1; i <= N; i++) {
/*********Found************/ sum += 1 / i; }
printf(\}
(12)从键盘读入a和b的值(输入格式为a,b),在屏幕上显示b行a
#include
void main() {
int a, b;
/*********Found************/ scanf(\ while (b > 0)
/*********Found************/ ___________
printf(\ b--;
/*********Found************/ ___________
printf(\}
(13)从键盘输入最多10个字符(遇换行则停止输入)到数组Buf中,然后在屏幕上显示
#include
void main() {
char c, Buf[11]; int i;
/*********Found************/ for (i = 1; i <= 10; i++) {
/*********Found************/ if ((c = getchar() == '\\n') {
break; }
Buf[i] = c; }
/*********Found************/ ___________
printf(\}
5