机试样卷一 一、程序调试题(40分) 磁盘上有一个 C 程序文件 test1-1.c,其作用是:输入 10 个整数,将其中最小的数与第 一个数对换,把最大的数与最后一个数对换。调试程序,可以增加和修改程序行,但不得 删除程序中的整行。注意:在一处增加的程序行不得超过两行。 #define N 10 main() { int number[N]; input(number); max_min_value(); output(number); } input(number) { int i; printf("Please input 10 number:\n"); for (i=0;i<N;i++) scanf("%d",&number[i]); } max_min_value (array) int array[N]; { int *max, *min; int *p, *array_end; array_end=array+10; max=min=array; for (p=array+1;p<array_end;) if (*p>*max) *max=*p; else if (*p<*min) *min=*p; *p=array[0]; array[min-array]=*p; *p=array[9]; array[max-array]=*p; return; } output(array) int array[10]; { int *p; printf("Result is: "); for(p=array;p<array+10;) printf("%d ", *p++); } 二、编写程序(程序文件名为test1-2.c)(60分) 从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,输出到磁盘文件 “ test1-2.txt”中保存。然后再将文件 test1-2.txt 中的内容读出并显示在屏幕上。请编写程 序。 要求:自定义函数 convert(),用于实现小写字母转换成大写字母。在主函数中进行文 件的打开和写入,输入字符串,调用函数 convert()和显示转换后的字符串。 样卷二 一、程序调试题(40分) 磁盘上有一个 C 程序文件 test2-1.c,其作用是:将 3 人的姓名和年龄存在结构数组中, 在程序中输出 3 人中年龄居中者的姓名和年龄。调试该程序,可以增加和修改程序行,但 不得删除程序中的整行。注意:在一处增加的程序行不得超过两行。 static struct man { char name[20]; int age; } person[]={"li_ming",18, "wang_hua",19, "zhang_ping",20; }; main() { int i,j,max,min; for(i=1,i<3,i++) if(person[i].age>max) max= else if(person[i].age<min) min= for(i=0;i<3;i++) if(person[i].age!=max||person[i].age!=min) { printf("%d %d\n",person[i].name,person[i].age); break; } } 二、编写程序(程序文件名为test2-2.c)(60分) 主函数从命令行读入一个文件名,然后调用函数 getline 从文件中读入一个字符串放到 字符数组 str 中(字符个数最多为 100 个) 。函数返回字符串的长度。在主函数中输出字符 串及其长度。请编写程序。 样卷三 一、程序调试题(40分) 磁盘上有一文件 test3-1.c,程序的功能是将字符串 b 复制到字符串 a 之后。请改正程序 中的错误,使其能得到正确的结果。 注意:不能修改主函数,不得删除行,一处只能增加一行,不得改变程序的结构。 #include "stdio.h" main() { char a[]="I am a boy."; char b="We are student."; int i,j; while(a[i]!='\0') i++; for( j++;*(b+j)!='\0';i++,j++) a[i]=b+j; printf("Now!\nstring a is: %s\n",a[i]); printf("string b is:"); for(i=0;b[i]!='\0';i++) printf("%c",b); printf("\n"); } 二、编写程序(程序文件名为test3-2.c)(60分) 设文件 test3-2.in 中存放了一组整数。分别统计并输出文件中正整数、零和负整数的个 数,将统计结果显示在屏幕上,同时输出到文件 test3-2.out 中。请编写程序。 要求:两个文件名 test3-2.in 和 test3-2.out 均由命令行输入。