解愿思路: 本题是考察先把给定的数据写入到文本文件中,再从该文件读出并是示在屏据幕上。 第一处:定义文本文件类型变量,所以应填:E“ 第二处:判断文件是否结束,所以应填:印。 第三处:显示读出的字符,所以应填:h。 给定程序MODI1.C中函数fm的功能是:依次取出字符串中所有数字字符,形 成新的字符申,并取代原字符中。 请政正函数中指定部位的错误,使它能得出正确的结果 注意:不要政动man函数,不得增行或刷行,也不得更改程序的结构! 给定源程序: 年include<stdio.h> void fun(chars) {nti fo(=0,j=0:s=0:it+) i讽sp=0&s=9y 4*found sUl-s[] found s="0 main( char item/801. printf"Enter astring:").gcts(itcm) printf"nThe string is:item) fun(item): printf"nThe string of changing 解愿思路: 第一处:要求是取出原字符中中所有数字字符组成一个新的字符,程序中是使用变量」来控制新字符中的位 置,所以应政为:s+=. 第二处:置新字符中的结来符,所以应政为:s0, 幸率家幸率神率家幸来神车家家非中幸家中华率中率中幸家中中中学率率幸车中车家草车率车率率率中率家家中家中 请编写函数f,函数的功能是:将M行N列的二雏数组中的字符数据,按列的顺序依次放到一个字符串中。 例如,二雄数组中的数据为 w www ssss .6
- 6 - 解题思路: 本题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。 第一处:定义文本文件类型变量,所以应填:FILE *。 第二处:判断文件是否结束,所以应填:fp。 第三处:显示读出的字符,所以应填:ch。 *************************************************** 给定程序 MODI1.C 中函数 fun 的功能是: 依次取出字符串中所有数字字符, 形 成新的字符串, 并取代原字符串。 请改正函数 fun 中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序: #include <stdio.h> void fun(char *s) { int i,j; for(i=0,j=0; s[i]!='\0'; i++) if(s[i]>='0' && s[i]<='9') /**********found**********/ s[j]=s[i]; /**********found**********/ s[j]="\0"; } main() { char item[80]; printf("\nEnter a string : ");gets(item); printf("\n\nThe string is : \"%s\"\n",item); fun(item); printf("\n\nThe string of changing is : \"%s\"\n",item ); } 解题思路: 第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量 j 来控制新字符串的位 置,所以应改为:s[j++]=s[i];。 第二处: 置新字符串的结束符,所以应改为:s[j]='\0';. *************************************************** 请编写函数 fun, 函数的功能是: 将 M 行 N 列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。 例如, 二维数组中的数据为: W W W W S S S S
HHHH 则字符串中的内容应是:WSHWSHWSH。 注意:部分源程序在文件PROG1.C中, 请勿改动主函数mi和其它函数中的任何内容.仅在函数un的花括号中填入你编写的若干语句 给定源程序: #define M3 #define N4 void fun(char sN],char"b) int iin=0: fo0,i<Nt+):请填写相应语句完成其功能/ b[n]-W. main( {char al100].w[M],W.W.W)t'S.S'SSH.H,H,H: int ii printf"The matrix:n") for(=0,i<M;++) for(j=0.j<N:++)printf7"%3c",wlilljl) fun(w.ak. printf"The Astring)puts(a) printf"\nin"): NONOO: 解题思路: 本愿是把二维数组中的字符数据按列存放到一个字符中中, 1.计算存放到一维数组中的位置。 2.取出二维数组中的字符存放到一锥数组(已计算出的位置)中。 参考答案: void fun(char sl[N].char "b) 7
- 7 - H H H H 则字符串中的内容应是: WSHWSHWSH。 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其它函数中的任何内容, 仅在函数 fun 的花括号中填入你编写的若干语句。 给定源程序: #include <stdio.h> #define M 3 #define N 4 void fun(char s[][N], char *b) { int i,j,n=0; for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */ { } b[n]='\0'; } main() { char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; int i,j; printf("The matrix:\n"); for(i=0; i<M; i++) { for(j=0;j<N; j++)printf("%3c",w[i][j]); printf("\n"); } fun(w,a); printf("The A string:\n");puts(a); printf("\n\n"); NONO(); } 解题思路: 本题是把二维数组中的字符数据按列存放到一个字符串中。 1. 计算存放到一维数组中的位置。 2. 取出二维数组中的字符存放到一维数组(已计算出的位置)中。 参考答案: void fun(char s[][N], char *b) {
int iin=o fo(C,i<N,+)请填写相应语句完成其功能 for(j=0;j<M;j++) b=s时: n=i*M+i+l: b[n]=10; ※※※※※※※※※※※※※※※※※※※※※※※ 第03套: 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成。所有学生数据均以二进制方式输出到 文件中。函数fum的功能是重写形参eame所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原 来的数据,其它学生的数据不变。 请在程序的下划线处填入正确的内容并把下划线除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中 不得增行或刑行,也不得更改程序的结构! 给定源程序: #define N5 typedef struct student long sno. char namel10l float score STU: void fun(char *filename,STU n) 体水家来*华幸率率率f山门d像率事华幸水单车家中 fp=fopen(I,"rb+"): fseck(_2_-lL*sizcof(STU),SEEK_END): fwrite(&n,sizeof(STU),1.3_). felose(fp): -8-
- 8 - int i,j,n=0; for(i=0; i < N;i++) /* 请填写相应语句完成其功能 */ { for(j = 0 ; j < M ; j++) { b[n] = s[j][i] ; n = i * M + j + 1; } } b[n]='\0'; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第 03 套: 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3 门课的成绩。所有学生数据均以二进制方式输出到 文件中。函数 fun 的功能是重写形参 filename 所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原 来的数据,其它学生的数据不变。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include <stdio.h> #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename, STU n) { FILE *fp; /**********found**********/ fp = fopen(_1_, "rb+"); /**********found**********/ fseek(_2_, -1L*sizeof(STU), SEEK_END); /**********found**********/ fwrite(&n, sizeof(STU), 1, _3_); fclose(fp);
main() STUINH{{10001,"MaChao,"91,92,77,I0002,CaoKai,75,60,883 {10003,"LiS,85,70,783.{10004,"FangFang",90,82,87, f10005,ZhangSan",95,80,88} STU=10006,Zha0S7,55,70,68,sN int ii:FILE *fp; fp=fopen("student.dat","wb") fwrite(sizeof(STU),N.fp). felosc(fp) fp=fopen("studentdat") fread(ss,sizeofSTU),N,fp). fclose(fp): for(j=0.j<N:j++) print"nNo:%d Name%s Scores:".sslname) for (3)printf".score printfr"\n") fun("student dat".n) printf"nThe data after modifing nin"): fp=fopen("student dat) fread(ss,sizeoflSTU).N.fp). fclose(p). for(j-0.j<N.j++) printf"nNo:Name Scores:"ss[ilsno,sslilname). for (3)print") printf"\n"): 解题思路: 本恩是考察如何从文件中读出数据,再把结构中的数据写入文件中。 第一处:从指定的文件中读出数据,所以应填:lename. 第二处:读取文件中的最后一条记录,所以应填:印: 第三处:再把读出的记录,写入文件印指定的位置上,所以应填:中 9
- 9 - } main() { STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88}, {10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87}, {10005,"ZhangSan", 95, 80, 88}}; STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N]; int i,j; FILE *fp; fp = fopen("student.dat", "wb"); fwrite(t, sizeof(STU), N, fp); fclose(fp); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); printf("\nThe original data :\n\n"); for (j=0; j<N; j++) { printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name); for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]); printf("\n"); } fun("student.dat", n); printf("\nThe data after modifing :\n\n"); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j=0; j<N; j++) { printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name); for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]); printf("\n"); } } 解题思路: 本题是考察如何从文件中读出数据,再把结构中的数据写入文件中。 第一处:从指定的文件中读出数据,所以应填:filename。 第二处:读取文件 fp 的最后一条记录,所以应填:fp。 第三处:再把读出的记录,写入文件 fp 指定的位置上,所以应填:fp。 ***************************************************
给定程序MODI.C中的函数Creatlink的功能是创建带头结点的单向表,并为各结点数据域赋0到m-1的值。 请政正函数Creatlink中指定部位的错误,使它能得出正确的结果。 注意:不要改动mn函数,不得增行或行,也不得更政程序的结构, 给定源程序: #include <stdio.h> typedef struct aa {int data; NODE NODE*Creatlink(int n,intm) NODE*h-NULL "p.*s, int i: 作found p=(NODE )malloc(sizeof(NODE)). h=p; p->next-NULI fo=1:in:i计+) =(NODE)malloc(sizoNODE)). s->data-rand%ms>nexi-p->next p->next=s:p=p->next: 伸本率中中单幸来率率山nd像率幸率李水单幸率中中) retum p; outlink(NODE*h) {NODE*p. p=h->next printf"nnTHE LISTnn HEAD") while(p) {printf%d"p->data) p=p->next, printf("n"). main() (NODE*head. .10
- 10 - 给定程序 MODI1.C 中的函数 Creatlink 的功能是创建带头结点的单向链表, 并为各结点数据域赋 0 到 m-1 的值。 请改正函数 Creatlink 中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序: #include <stdio.h> #include <stdlib.h> typedef struct aa { int data; struct aa *next; } NODE; NODE *Creatlink(int n, int m) { NODE *h=NULL, *p, *s; int i; /**********found***********/ p=(NODE )malloc(sizeof(NODE)); h=p; p->next=NULL; for(i=1; i<=n; i++) { s=(NODE *)malloc(sizeof(NODE)); s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; } /**********found***********/ return p; } outlink(NODE *h) { NODE *p; p=h->next; printf("\n\nTHE LIST :\n\n HEAD "); while(p) { printf("->%d ",p->data); p=p->next; } printf("\n"); } main() { NODE *head;