C语言上机模拟二 |
一、改错题(18分) 函数void fun(char *P,char *b)的功能是:将P所指字符串中每三个字符之后插入一 个空格,所得新字符串存放于字符数组b中。 例如,原始字符串为ABCDEFGH,插入空格后为ABC DEF GH。 含有错误的源程序如下: ’ l #include<stdio.h> 2 void fun(char *p,char *b) 3 { 4 int i,k=0; 5 while(*p) 6 { 7 i=1: 8 while(i<3&&*p) 9 { 10 b[k++]=p; 11 P++;i++; 12 } 13 if(*p) 14 { 15 b[k++]=""; 16 } 17 } 18 b[k]="\0"; 19 } 20 main() 21 { 22 char a[80],b[80]; 23 printf("Enter a string:");gets(a); 24 fun(a,b); 25 printf("\nThe result is:"); 26 puts(b); 27 } 【要求】 1•将上述程序录人到文件myfl.c中,根据题目要求及程序中语句之间的逻辑关系对 程序中的错误进行修改。 2•改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译 预处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myfl.c)必须放在考试软盘的根目录下,供阅卷用,否则不 予评分。 二、编程题(22分) 1.编写函数void fun(int n,int *t,int *r),其功能是计算1~n之间所有奇数之和,通 过指针t返回.,所有偶数之和通过指针r返回。。 2.编r写main函数,通过键盘输入一个不大于100的整数,调用fun函数,将指针t和r 返回的值写入文件myf2.out中。 【要求】 ‘ 1.将源文件取名为myf2.c,输出结果文件取名为myf2.out。 ‘ 2.数据文件的打开、使用和关闭等操作均用C标准库中缓冲文件系统的文件操作函数 实现。 3.源程序文件和运行结果文件均须保存在考试软盘的根目录下,供阅卷用。 4.不要将myf2.obj、myf2.exe保存到考试软盘中。 答案分析 一、改错题 1.第8行while(i<3&&*p) 改为 while(i<=3&&*p) 2.第10行b[k++]=p; 改为 b[k++]=*p; 3.第15行b[k++]=""; 改为 b[k++]=''; 4.第18行b[k]="\0"; 改为 b[k]='\0'; 分析:程序中,第一个循环用于遍历原始字符串,第二个循环用于把连续三个字符写入 数组b中,此循环结束后,先判断是否已到字符串尾部,若不是,则在三个字符之后插入一个 空格;若是,则在新生成的字符串尾部加入结束符。 二、编程题 #include<stdio.h> void fun(int n,int *t,int *r) { int i; *t=0;*r=0; for(i=1:i<=n:i++) { if(i%2) *t+=i; else *r+=i; } main() { int x,t,r; FILE *out: if((out=fopen("myf2.out","w"))==NULL) { printf("open file myf2.out failed!\n"); exit(0); } printf("\nPlease enter a integer numbers"); scanf("%d",&x); fun(x,&t,&x); ’ fprintf(out,"x is:%d,t is:%d, r is %d",m,n); fclose(out); } |