上机样题参考答案 样题 、程序调试题(40分 lber[10 input(number) max min value(number); 原程序中缺少 number output(number); input(int number[10D /*原程序中缺少int int 1: printf( Enter 10 number: ) for(i=0;i10;i++) scanf("%d", &numberiD) max min value(array) int array 1ol int"p, *array end for(p=array+l; p*max)max=p; /*原程序为*max=*p else if(*p<*min)min=p; /*原程序为*mn=p p=arrays array /原程序缺少该行4 arraylmin-arrayl= p;
1 上机样题参考答案 样题一 一、程序调试题(40 分) main() { int number[10]; input(number); max_min_value(number); /* 原程序中缺少 number */ output(number); } input(int number[10]) /* 原程序中缺少 int */ { int i; printf("Enter 10 number:"); for (i=0;i*max) max=p; /* 原程序为*max=*p */ else if (*p<*min) min=p; /* 原程序为*min=*p */ *p=array[0]; array[0]=*min; /* 原程序缺少该行 */ array[min-array]=*p;
*p=array 9; array 9=*max /原程序缺少该行* arraylmax-array=*p return output(array) int arrayl1ol printf("result is: ) for(p=array: p maino f FILE*fp char str[1001 if(fp=fopen("testl-2 txt","W"))=NULL printf("can not open filein); exit(o) intf( " Enter a string: In"); gets(str); convert(str); fputs(str, fp) fclose(fp); fp=fopen("test1-2txt","r"); fgets(str, strlen(str)+l, fp) printf("%os\n", str); fclose(fp); convert(str) char strll; f int i=0; while(strj!="0”)
2 *p=array[9]; array[9]=*max; /* 原程序缺少该行 */ array[max-array]=*p; return; } output(array) int array[10]; { int *p; printf("result is:"); for(p=array;p main() { FILE *fp; char str[100],filename[10]; if((fp=fopen("test1-2.txt","w"))==NULL) {printf("can not open file\n"); exit(0); } printf("Enter a string:\n"); gets(str); convert(str); fputs(str,fp); fclose(fp); fp=fopen("test1-2.txt","r"); fgets(str,strlen(str)+1,fp); printf("%s\n",str); fclose(fp); } convert(str) char str[]; { int i=0; while(str[i]!='\0')
f if(strip='a,&& strikmax) max-person[.age /原程序中缺少 person il. age;* else if(person il.age<min) /*原程序中缺少 person[,age;* for(i=0;i<3;i++) if(person]age!=max&& personl]age!=min)/*原程序将&&写成了‖* { printf("%s%dn", person[ i- name, person[ i- age);/*原程序将s写成了d* 、编写程序(程序文件名为test2-2.c)(60分) 参考程序: #include stdio. h FILE fp; getline(char * str)
3 { if(str[i]>='a'&& str[i]max) max=person[i].age; /* 原程序中缺少 person[i].age; */ else if(person[i].age<min) min=person[i].age; /* 原程序中缺少 person[i].age; */ for(i=0;i<3;i++) if(person[i].age!=max&&person[i].age!=min) /* 原程序将&&写成了|| */ { printf("%s %d\n",person[i].name,person[i].age); /* 原程序将 s 写成了 d */ break; } } 二、编写程序(程序文件名为 test2-2.c)(60 分) 参考程序: #include "stdio.h" FILE *fp; getline(char *str)
i int i; char c: c=fgetc(fp); while(c!="ln&& cl=EOF i strip i++; c=fgetc(fp); c==EoF)return(-1); arn(1); main(int argc, char *argvID) f char str[1011 int len printf("error! n"); i fp=fopen(argv||, r); f len=getline(str); puts(str); printf("len=%d\n",len) while(len>=0); fclose(fp) 样题三 、程序调试题(40分) #include ' 'stdio. h" maino i char a|80]="I am a boy. i /原程序中缺少80* char bll="We are student. /*原程序中缺少[ int i i=0 /原程序中缺少该行*
4 { int i; char c; i=0; c=fgetc(fp); while(c!='\n' && c!=EOF) { str[i]=c; i++; c=fgetc(fp); } str[i]=0; if(c==EOF) return(-1); else return(i); } main(int argc,char *argv[]) { char str[101]; int len; if(argc!=2) printf("error!\n"); else { fp=fopen(argv[1],"r"); do { len=getline(str); puts(str); printf("len=%d\n",len); } while(len>=0); fclose(fp); } } 样题三 一、程序调试题(40 分) #include "stdio.h" main() { char a[80]="I am a boy."; /* 原程序中缺少 80 */ char b[]="We are student."; /* 原程序中缺少[ ] */ int i,j; i=0; /* 原程序中缺少该行 */
while(ali!=\0)i++ for(j=0;(b+j)!="0;i+++) ai=*(b+j) /*原程序中为bj* ai=10 /原程序中缺少该行 printf("Now! A\string a is:%sln'",a);/原程序中的a为a{ printf("string b is: ) for(i=0;b|i!="0;i+) printf("%c", b[iD); /原程序中为b* printf("\n); 二、編写程序(程序文件名为test3-2.c)(60分) 参考程序 FILE in, *out; main(int argc, char argvD f int P=0, n=0, Z=0, temp out=fopen(argv 2, W"); in=fopen(argv|1,r); f(in-NULL) printf("file not found\n"); els while( feof(in)) i fscanf(in, %d", &temp); if(temp>0)p++ else if(temp<0)n++; else z++ fclose(in); printf("positive: %3d, negtive: %3d, zero: %3d\n",p, n, z); fprintf(out, "positive: %3d, negtive: % 3d, zero: %3d\n",p, n, 2); fclose(out)
5 while(a[i]!='\0') i++; for(j=0;*(b+j)!='\0';i++,j++) a[i]=*(b+j); /* 原程序中为 b+j */ a[i]='\0'; /* 原程序中缺少该行 */ printf("Now!\nstring a is: %s\n",a); /* 原程序中的 a 为 a[i] */ printf("string b is:"); for(i=0;b[i]!='\0';i++) printf("%c",b[i]); /* 原程序中为 b */ printf("\n"); } 二、编写程序(程序文件名为 test3-2.c)(60 分) 参考程序: #include "stdio.h" FILE *in,*out; main(int argc,char *argv[]) { int p=0,n=0,z=0,temp; out=fopen(argv[2],"w"); in=fopen(argv[1],"r"); if(in==NULL) printf("file not found\n"); else while(!feof(in)) { fscanf(in,"%d",&temp); if(temp>0) p++; else if(temp<0) n++; else z++; } fclose(in); printf("positive:%3d,negtive:%3d,zero:%3d\n",p,n,z); fprintf(out,"positive:%3d,negtive:%3d,zero:%3d\n",p,n,z); fclose(out); }