资源描述
全国计算机二级C语言上 机参考题库注意:填空题填好答案要去掉下划线。改错题*found*下面的一行为错误地方,直接按答 案更正即可。程序题答案只填在花括号中。(记得保存)第01套:一、填空题:程序通过定义学生结构体变量,存储了学生 的学号、姓名和3门课的成绩。所有学生数据均以二进制 方式输出到文件中。函数firn的功能是重写形参filename 所指文件中最后一个学生的数据,即用新的学生数据覆盖 该学生原来的数据,其它学生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除,使 程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ftinclude#define N 5typedef struct student long sno;char name10;float score3;STU;void fun(char filename,STU n)FILE*fp;/*found*/fp 二 fopen(_1_,rb+);/*found*/fseek(_2_,-(long)sizeof(STU),SEEK_END);/*found*/fwrite(&n,sizeof(STU),1,_3_);fclose(fp);)main()STU tN=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,ssN;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(XnThe original data:nn);for(j=0;jN;j+)printf(/znNo:%ld Name:%-8s Scores:,ssj.sno,ssj.name);for(i=0;i3;i+)printf(z,%6.2f,ssj,scorei);printf(n);)fun(student.dat,n);printf(/znThe data after modifing:nn);fp 二 fopen(student.dat,rb);fread(ss,;for(j=0;jN;j+)printf(/znNo:%ld Name:%-8s Scores:,ssj.sno,ssj.name);for(i=0;i3;i+)printf(/z%6.2f,ssj.scorei);printf(n);)解题答案:/*第一空*/fp=fopen(filename,rb+);/*第二空*/fseek(fp,-(long)sizeof(STU),SEEK_END);/*第三空*/fwrite(&n,sizeof(STU),1,fp);二、改错题:给定程序MODH.C中的函数Creatlink的功能 是创建带头结点的单向链表,并为各结点数据域赋0到m-1 的值。请改正函数Creatlink中指定部位的错误,使它能得出正确 的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude ttinclude typedef struct aaint data;struct aa*next;NODE;NODE*Creatlink(int n,int m)NODE*h=NULL,*p,*s;int i;/*f ourid*/p=(NODE)malloc(sizeof(NODE);h二p;p-next=NULL;for(i=l;idata=rand()%m;s-next=p-next;p-next=s;p=p-next;)/*f ourid*/return p;)outlink(NODE*h)NODE*p;p=h-next;printf(/znnTHE LIST:nn HEAD);while(p)printf(z,-%d p-data);p=p-next;)printf(n);)main()NODE*head;head=Creatlink(8,22);outlink(head);解题答案:/*f ourid*/p=(NODE malloc(sizeof(NODE);/*f ourid*/return h;三、程序题:请编写函数fim,函数的功能是:统计一行字符 串中单词的个数,作为函数值返回。一行字符串在主函数中 输入,规定所有单词由小写字母组成,单词之间由若干个空 格隔开,一行的开始没有空格。注意:部分源程序在文件PROGLC中。请勿改动主函数main和其它函数中的任何内容,仅在函数 fon的花括号中填入你编写的若干语句。给定源程序:ttinclude ttinclude define N 80int fun(char*s)main()char lineN;int num=0;void NONO();printf(/zEnter a string:n);gets(line);num=fun(line);printf(z,The number of word is:%dnnz/,num);N0N0();void NONO()/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*wf;int i,num;char lineN,*p;rf 二 fopen(/zin.dat,r);wf 二 fopen(,out.dat,w);for(i=0;i 10;i+)fgets(line,N,rf);p 二 strchr(line,Jn);if(p!=NULL)*p=0;num=fun(line);fprintf(wf,%dn,num);)fclose(rf);fclose(wf);参考答案:int fiin(char*s)int k=1;while(*s)if(*s=1)k+;s+;)return k;#第02套:一、填空题:给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到 文件myfile4.txt中用T 作为字符串输入结束的标志。然后将文件的内容读出显示 在屏幕上。文件的读写分别由自定义函数ReadText和 WriteText 实现。请在程序的下划线处填入正确的内容并把下划线删除,使 程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ttinclude ftinclude#include void WriteText(FILE*);void ReadText(FILE*);main()FILE*fp;if(fp=fopen(/zmyfile4.txt,w)=NULL)printf(/z open fail!n,?);exit(0);)WriteText(fp);fclose(fp);if(fp=fopen(z,myf ile4.txt,r)=NULL)printf(/z open fail!n,?);exit(0);)ReadText(fp);fclose(fp);)/*found*/void WriteText(FILE _1_)char str81;printf(z,nEnter string with-1 to end:n);gets(str);while(strcmp(str,-1)!=0)/*found*/fputs(_2_,fw);fputs(n,fw);gets(str);)void ReadText(FILE*fr)char str81;printf(/znRead file and output to screen:n);fgets(str,81,fr);while(!feof(fr)/*found*/printf(%s,_3_);fgets(str,81,fr);)解题答案:/*第一空*/void WriteText(FILE*fw)/*第二空*/fputs(str,fw);fputs(n,fw);/*第三空*/printf(s,str);二、改错题:给定程序MODILC中函数的功能是:从低 位开始取出长整型变量s中奇数位上的数,依次构成一个 新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改 程序的结构!给定源程序:ttinclude/*f ourid*/void fun(long s,long t)long sl=10;二 s%10;while(s 0)s=s/100;*t=s%10*si+*t;/*f ourid*/si=sl*100;)mainOlong s,t;printf(z,nPlease enter s:);scanf(ld,&s);fun(s,&t);printf(/zThe result is:%ldnz,,t);)解题答案:/*f ourid*/void fun(long s,long*t)/*f ourid*/si=sl*10;三、程序题:函数fim的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的 十位和个位数依次放在c数的个位和百位上,b数的十位 和个位数依次放在c数的千位和十位上。例如,当a=45,b=12时,调用该函数后,c=1524。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT 中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数 fon的花括号中填入你编写的若干语句。给定源程序:ttinclude void fun(int a,int b,long*c)main()int a,b;long c;void NONO();printf(z,Input a,b:);scanf(d,%d,&a,&b);fun(a,b,&c);printf(/zThe result is:%ldn/z,c);N0N0();void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;int i,a,b;long c;rf=fopen(/zin.dat,/);wf 二 fopen(z,out.dat,w);for(i=0;i 10;i+)fscanf(rf,d,%d,&a,&b);fun(a,b,&c);fprintf(wf,a=%d,b=%d,c=%ldn,a,b,c);)fclose(rf);fclose(wf);)解题答案:(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);)#第03套:一、填空题:给定程序中,函数fim的功能是:将自然数1 10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。请在程序的下划线处填入 正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得 增行或删行,也不得更改程序的结构!给定源程序:ttinclude ftinclude int fun(char*fname)FILE*fp;int i,n;float x;if(fp=fopen(fname,w)二二NULL)return 0;for(i=l;i=10;i+)/*found*/fprintf(_1_,%d%fn,i,sqrt(double)i);printf(/znSucceed!n);/*found*/2;printf(,znThe data in file:n);/*found*/if(fp=fopen(_3_,:r)=NULL)return 0;f scanf(fp,%d%f,&n,&x);while(!feof(fp)printf(,z%d%fn,n,x);fscanf(fp,/z%d%f/z,&n,&x);fclose(fp);return 1;main()char fname=/zmyf ile3.txt/z;fun(fname);)解题答案:/*第一*空*/fprintf(fp,%d%fn/z,i,sqrt(double)i);printf(/znSucceed!n);/*第二空*/fclose(fp);/*第三空*/if(fp=fopen(fname,/)=NULL)改错题:给定程序MODI1.C中fun函数的功能是:将n个 无序整数从小到大排序。请改正程序中的错误,使它能得 出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改 程序的结构!给定源程序:ftinclude ttinclude fun(int n,int*a)int i,j,p,t;for(j=0;jn-l;j+)p 二 j;/*f ourid*/for(i=j+l;iai)/*f ourid*/t二 i;if(p!=j)t=aj;aj二 ap;ap二 t;)putarr(int n,int*z)int i;for(i-1;i=n;i+,z+)printf(/z%4d/z,*z);if(!(i%10)printf(n);printf TWO;)main()int aa20=9,3,0,4,1,2,5,6,8,10,7,n=ll;printf(z,nnBefore sorting%d numbers:n n);putarr(n,aa);fun(n,aa);printf(/znAfter sorting%d numbers:n/z,n);putarr(n,aa);解题答案:ttinclude ttinclude fun(int n,int*a)int i,j,p,t;for(j=0;jn-l;j+)p 二 j;/*f ourid*/for(i=j+l;in;i+)/*found*/P二 i;三、程序题:函数fim的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位 和百位上,b数的十位 和个位数依次放在c数的十位和千位 o例如,当a=45,b=12时,调用该函数后,c=2514。注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT 中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数 fon的花括号中填入你编写的若干语句。给定源程序:ttinclude void fun(int a,int b,long*c)main()int a,b;long c;void NONO();printf(,zInput a,b:);scanf(%d,%d”,&a,&b);fun(a,b,&c);printf(z,The result is:%ldn,c);N0N0();)void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数 据,关闭文件。*/FILE*wf;int i,a,b;long c;rf=fopen(in.dat,r);wf=fopen(/zout.dat,w);for(i=0;i 10;i+)fscanf(rf,d,%d,&a,&b);fun(a,b,&c);fprintf(wf,a=%d,b=%d,c=%ldn,a,b,c);)fclose(rf);fclose(wf);)解题答案:*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;)#第04套:一、填空题:程序通过定义学生结构体变量,存储了学生 的学号、姓名和3门课的成绩。所有学生数据均以二进制 方式输出到文件中。函数fon的功能是从形参filename所指 的文件中读入学生数据,并按照学号从小到大排序后,再用 二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件 内谷。请在程序的下划线处填入正确的内容并把下划线删除,使 程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:ftinclude#define N 5typedef struct student long sno;char name10;float score3;STU;void fun(char filename)FILE*fp;int i,j;STU sN,t;/*found*/fp 二 fopen(filename,1_);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;iN-l;i+)for(j=i+l;jN;j+)/*found*/if(si.sno _2_ sj.sno)t=si;si=sj;sj=t;fp 二 fopen(filename,wb);/*found*/3(s,sizeof(STU),N,fp);/*二进制输出*/fclose(fp);)main()STU tN=10005,ZhangSan,95,80,88,10003,LiSi,85,70,78,10002,z,CaoKaiz,,75,60,88,10004,FangFang,90,82,87,10001,MaChao,91,92,77,ssN;int i,j;FILE*fp;fp-fopen(student.dat,wb);fwrite(t,sizeof(STU),5,fp);fclose(fp);printf(z,nnThe original data:nn);for(j=0;jN;j+)printf(/znNo:%ld Name:%-8s Scores:z,,tj.sno,t j.name);for(i=0;i3;i+)printf(/z%6.2f,tj.scorei);printf(n);)fun(student.dat);printf(,znnThe data after sorting:nn);fp 二 fopen(student.dat,rb);fread(ss,sizeof(STU),5,fp);fclose(fp);for(j=0;jN;j+)printf(/znNo:%ld Name:%-8s Scores:/z,ssj.sno,ssj.name);for(i=0;i sj.sno)/*第三空*/fwrite(s,sizeof(STU),N,fp);/*二进制输出*/改错题:给定程序MODH.C中函数fim的功能是:在字符 串的最前端加入n个*号,形成二、新串,并且覆盖原串。注意:字符串的长度最长允许为79。请改正函数fon中指定部位的错误,使它能得出正确的结 果。注意:不要改动main函数,不得增行或删行,也不得更改 程序的结构!给定源程序:ftinclude ttinclude void fun(char s,int n)(char a80,*p;int i;/*f ourid*/s 二p;for(i=0;in;i+)*,;doai=*p;i+;)/*f ourid*/while(*p+)ai=0;strcpy(s,a);)main()int n;char s80;printf(/znEnter a string:);gets(s);printf(z,nThe string%sn,s);printf(z,nEnter n(number of*):);scanf(%d,&n);fun(s,n);解题答案:/*f ourid*/P二 s;/*f ourid*/while(*p+);三、程序题:请编写函数fim,函数的功能是:统计各年龄段 的人数。N个年龄通过调用随机函数获得,并放在主函数的 age数组中;要求函数把。至9岁年龄段的人数放在d0中,把10至19岁年龄段的人数放在dl中,把20至29岁年龄 段的人数放在d2中,其余依此类推,把100岁(含100)以 上年龄的人数都放在d10中。结果在主函数中输出。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数 fon的花括号中填入你编写的若干语句。给定源程序:ttinclude define N 50define M 11void fun(int*a,int*b)(double rnd()static t=29,c=217,m=1024,r=0;r=(r*t+c)%m;return(double)r/m);main()int ageN,i,dM;void NONO(int dM);for(i=0;1N;i+)agei=(int)(115*rnd();printf(/zThe original data:n);for(i=0;iN;i+)printf(i+l)%10=0?4dn:%4d,age i);printf(nn);fun(age,d);for(i=0;i10;i+)printf(/z%4d-%4d:%4dn,i*10,i*10+9,di);printf(/z0ver 100:%4dnzz,d10);N0N0(d);#define N 8void NONO(int dM)/*请在此函数内打开文件,输入测试数据,调用fun函 数,输出数据,关闭文件。*/FILE*wf;int i;wf=fopen(/zout.dat,w);for(i=0;i 10;i+)fprintf(wf,4d-%4d:%4dn/z,i*10,i*10+9,di);fprintf(wf,Over 100:%4dn,d10);fclose(wf);)参考答案:void fiin(int*a,int*b)(intij;for(i=0;i 10)bM-1+;else bj+;)double md()static t=29,c=217,m=1024j=0;r=(r*t+c)%m;return(double)r/m);)#第05套:一、填空题:给定程序中已建立一个带有头结点的单向链 表,链表中的各结点按结点数据域中的数据递增有序链接。函数fim的功能是:把形参x的值放入一个新结点并插入 到链表中,插入后各结点数据域的值仍保持递增有序。请在程序的下划线处填入正确的内容并把下划线删除,使 程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include typedef struct listint data;struct list*next;SLIST;void fun(SLIST*h,int x)SLIST*p,*q,*s;s=(SLIST*)malloc(sizeof(SLIST);/*/s-data=1 q=h;p=h-next;while(p!=NULL&xp-data)q=_2_;p=p-next;s-next=p;/*/q-next=_3_;)SLIST*creatlist(int*a)SLIST*h,*p,*q;int i;h=p=(SLIST*)malloc(sizeof(SLIST);for(i=0;idata=ai;p-next=q;p=q;)p-next=0;return h;)void outlist(SLIST*h)SLIST*p;p=h-next;if(p=NULL)printf(nnThe list is NULL!nn);elseprintf(nnHeadn);do printf(n-%dn,p-data);p=p-next;while(p!=NULL);printf(,-Endnn);)main()SLIST*head;int x;int aNll,12,15,l 8,19,22,25,29);head=creatlist(a);printf(nnThe list before inserting:nn);outlist(head);printf(nnEnter a number:);scanf(n%dn,&x);fun(head,x);printf(nnThe list after inserting:nn);outlist(head);解题答案:/*第一*空*/s-daa=x;/*第二空*/q 二p;/*第三空*/q-next=s;二、改错题:给定程序M0DI1.C中函数fim的功能是:计 算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20o若输入:202,则输出应该是:0o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include long fun(long num)long k;dok*=num%10;num=10;while(num);return(k);)mainQlong n;print*”nPlease enter a number:);scanf(n%ldn,&n);printf(nn%ldnn,fun(n);)解题答案:/*f ourid*/long k=l;/*f ourid*/num/=10;三、程序题:请编写一个函数fim,它的功能是:计算n门 课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.80。注意:部分源程序存在文件PROGLC中。请勿改动主函数main和其它函数中的任何内容,仅在函数 fim的花括号中填入你编写的若干语句。给定源程序:#include float fiin(float*a,int n)main()float score30=90.5,72,80,61.5,55,aver;void NONO();aver=fiin(score,5);printf(nnAverage score is:%5.2fn,aver);NONO();)void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*电*wf;intij;float aver,score 5;fy=fdpen(nm.datn,nrn);wf=fopen(nout.datn,nwn);for(i=0;i 10;i+)for(j=0;j v 5;j+)依canf(3/”,&scorejD;aver=fiin(score,5);中rin氓wf,5.2fn”,aver);fclose();fclose(wf);解题答案:(int i;float ave=0.0;for(i=0;in;i+)ave=ave+ai;ave=ave/n;return ave;)第06套:一、给定程序中已建立一个带有头结点的单向链表,在main 函数中将多次调用fon函数,每调用一次fim函数,输出链 表尾部结点中的数据,并释放该结点,使链表缩短。请在程序的下划线处填入正确的内容并把下划线删除,使 程序得出正确的结果。注意:源程序存放在考生文件夹下BLANKLC中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 8typedef struct listint data;struct list*next;SLIST;void fun(SLIST*p)SLIST*t,*s;t=p-next;s=p;while(t-next!=NULL)s=t;tX-_1_;)printf(n%d n,_2_);s-next=NULL;free(_3_);)SLIST*creatlist(int*a)SLIST*h,*p,*q;int i;h=p=(SLIST*)malloc(sizeof(SLIST);for(i=0;idata=ai;p-next=q;p=q;)p-next=0;return h;void outlist(SLIST*h)SLIST*p;p=h-next;if(p=NULL)printf(nnThe list is NULL!nn);elseprintf(MnHeadn);do printf(n-%d,p-data);p=p-next;while(p!=NULL);printf(n-Endnn);)mainQSLIST*head;int aN=l 1,12,15,18,19,22,25,29);head=creatlist(a);printf(nnOutput from head:nn);outlist(head);printf(nnOutput from tail:nn);while(head-next!=NULL)fiin(head);printf(,nnn);printfCOutput from head again:nn);outlist(head);)解题答案:/*第一*空*/t=t-next;/*第二空*/printf(%d,t-data);/*第三空*/free(t);二、改错题:给定程序MODH.C中函数Em的功能是:将字 符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出:debao请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include/*/fiin(char a)if(*a)fiin(a+l);printf(,%cn*a);main()chars10=abcdn;printf(”处理前字符串=%sn处理后字符串=,s);fun(s);printf(nnn);)解题答案:/*f ourid*/void fun(char*a)/*f ourid*/printf(%c,*a);三、程序题:请编写一个函数fim,它的功能是:比较两个 字符串的长度,(不得调用C语言提供的求字符串长度的函 数),函数返回较长的字符串。若两个字符串长度相同,则 返回第一个字符串。例如,输入 beijing shanghai (为回车键),函数将返回shanghai。注意:部分源程序存在文件PROGLC中。请勿改动主函数main和其它函数中的任何内容,仅在函数 fon的花括号中填入你编写的若干语句。给定源程序:#include char*flm(char*s,char*t)main()char a20,b20;void NONO();printfCInput 1th string:);gets(a);printf(,Input 2th string:);gets(b);printf(n%snn,fun(a,b);NONO();)void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*电*wf;inti;char a20,b20;fp=fopen(,in.dat,rn);wf=fopen(nouLdatn,nwn);for(i=0;i 10;i+)fscanf(中,s%s,a,b);令rintgwf,sn”,fiin(a,b);)fclose();fclose(wf);参考答案:(inti;char*p=s,*q=t;fbr(i=O;*p&*q;i+)p+;q+;)if(*p=0&*q=0)return s;if(*p)return s;else return t;)#第07套:一、填空题:给定程序中已建立一个带有头结点的单向链 表,链表中的各结点按数据域递增有序链接。函数fim的 功能是:删除链表中数据域值相同的结点,使之只保留一个。请在程序的下划线处填入正确的内容并把下划线删除,使 程序得出正确的结果。注意:源程序存放在考生文件夹的BLANK1.C中。不得增行或删行,也不得更改程序的结构!给定源程序:#include#include#define N 8typedef struct listint data;struct list*next;SLIST;void fun(SLIST*h)SLIST*p,*q;p=h-next;if(p!=NULL)q=p-next;while(q!=NULL)if(p-data=q-data)p-next=q-next;q=p-_2 elsep=q;K*8lq=q-3.SLIST*creatlist(int*a)SLIST*h,*p,*q;int i;h=p=(SLIST*)malloc(sizeof(SLIST);for(i=O;idata=ai;p-next=q;p=q;)p-next=O;return h;)void outlist(SLIST*h)SLIST*p;p=h-next;if(p=NULL)printf(nnThe list is NULL!nn);elseprintf(,nHeadn);do printf(n-%dn,p-data);p=p-next;while(p!=NULL);printf(,-Endnn);)main()SLIST*head;int aN=l,2,2,3,4,4,4,5;head=creatli st(a);printf(nnThe list before deleting:nn);outlist(head);fun(head);printf(nnThe list after deleting:nH);outlist(head);)解题答案:/*found*/free(q);/*found*/q=p-next;/*found*/q=q-next;二、改错题:给定程序MODH.C中函数Em的功能是:用选 择法对数组中的n个元素按从小到大的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行和删行,也不得更改 程序的结构!给定源程序:#include#define N 20void fiin(int a,int n)intij,t,p;for(j=0;j n-1;j+)/*fiz)und*/p=jfor(i=j;i n;i+)if(aiap)/*/p=j;t=ap;ap=aj;aj=t;)mainQint aN=9,6,8,3,-l,i,m=5;printf(排序前的数据:);for(i=0;i m;i+)printf(n%d H,ai);printf(”n);fiin(a,m);printg”排序后的数据:);for(i=0;i m;i+)printf(”d printf(n”);)解题答案:/*found*/P二 j;/*f ourid*/P二 i;三、程序题:请编写一个函数fim,它的功能是:求出1到 m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:7 11 14 21 22 28 33 35 42 44 49注意:部分源程序存在文件PROGLC中。请勿改动主函数main和其它函数中的任何内容,仅在函数 fim的花括号中填入你编写的若干语句。给定源程序:#include#define M 100void fiin(int m,int*a,int*n)(mainQint aaM,n,k;void NONO();fiin(50,aa,&n);for(k=0;k n;k+)if(k+l)%20=0)printf(nnn);else printf(n%4dn,aak);printf(nnn);NONO();)void NONO()/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*埴*wf;int i,n,j,k,aaM,sum;fp=fbpen(nin.datn,nrn);wf=fopen(nout.dat,7,wn);fdr(i=0;i 10;i+)fscanf(中,dj,&j);aa,&n);sum=0;for(k=0;k v n;k+)sum+=aak;Q)rintf(w
展开阅读全文