二级C语言答案,最新题库1

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

二级C语言答案,最新题库1

第1套1.程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。#include#include#defineN5typedefstructnode{intdata;structnode*next;}NODE;/**********found**********/__1__fun(NODE*h){NODE*p,*q,*r;p=h;if(p==NULL)returnNULL;q=p->next;p->next=NULL;/**********found**********/while(__2__){r=q->next;q->next=p;p=q;/**********found**********/q=__3__;}returnp;}NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h=NULL;for(i=0;idata=a[i];q->next=NULL;if(h==NULL)h=p=q;else{p->next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;p=h;if(p==NULL)printf("ThelistisNULL!n");else{printf("nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->Endn");}}main(){NODE*head;inta[N]={2,4,6,8,10};head=creatlist(a);printf("nTheoriginallist:n");outlist(head);head=fun(head);printf("nThelistafterinverting:n");outlist(head);}答案:(1)NODE*(2)q(3)r2..给定程序MODI1.C中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。#include#include#defineN80voidfun(char*s,chart[]){inti,j=0;for(i=0;ivoidfun(int(*s)[10],int*b,int*n,intmm,intnn){}nmain(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=0;printf("Thematrix:n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",w[i][j]);printf("n");}fun(w,a,&n,3,4);printf("TheAarray:n");for(i=0;istructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudent*b){/**********found**********/b__1__=10004;/**********found**********/strcpy(b__2__,"LiJie");}main(){structstudentt={10002,"ZhangQi",93,85,87};inti;printf("nnTheoriginaldata:n");printf("nNo:%ldName:%snScores:",t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.score[i]);printf("n");/**********found**********/fun(__3__);printf("nThedataaftermodified:n");printf("nNo:%ldName:%snScores:",t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.score[i]);printf("n");答案:1)->sno(2)->name(3)&t2.给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a的平方根。#include#include/**********found**********/doublefun(doublea,dounlex0){doublex1,y;x1=(x0+a/x0)/2.0;/**********found**********/if(fabs(x1-xo)>0.00001)y=fun(a,x1);elsey=x1;returny;}main(){doublex;printf("Enterx:");scanf("%lf",&x);nprintf("Thesquarerootof%lfis%lfn",x,fun(x,1.0));}答案:(1)doublefun(doublea,doublex0)(2)if(fabs(x1-x0)>0.00001)3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中。请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。#include#defineN12typedefstruct{charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}main(){STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}};STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichishigherthan%7.3f:n",n,ave);for(i=0;i=ave){b[j]=a[i];j++;(*n)++;}i++;}returnave;}第3套1.程序中,函数fun的功能是计算下式,并把计算结果作为函数值返回。#includedoublefun(doublee){inti;doubles,x;/**********found**********/s=0;i=__1__;x=1.0;while(x>e){/**********found**********/__2__;/**********found**********/x=(2.0*i-1)/((__3__)*(2.0*i));s=s+x;}returns;}main(){doublee=1e-3;printf("nTheresultis:%fn",fun(e));}答案:(1)0(2)i++(3)2.*in2.给定程序MODI1.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。#include#include/************found************/voidfun(chars,chart){inti,d;d=strlen(s);for(i=0;i#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("nTheresultis:%sn",t);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%sn",t);}fclose(rf);fclose(wf);}答案:52.voidfun(char*s,chart[]){inti=0,j=0;while(s[i]){if((i%2!=0)&&(s[i]%2!=0)){t[j]=s[i];j++;}i++;}t[j]=0;}第4套1.程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。#includevoidfun(char*s){inti,j=0,k=0;chart1[80],t2[80];for(i=0;s[i]!='';i++)if(s[i]>='0'&&s[i]<='9'){/**********found**********/t2[j]=s[i];___1___;n}elset1[k++]=s[i];t2[j]=0;t1[k]=0;/**********found**********/for(i=0;i#include#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++){/**************found**************/for(j=i+1,j<6,j++){if(strcmp(*(pstr+i),*(pstr+j))>0){p=*(pstr+i);/**************found**************/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf("nEnter6string(1stringateachline):n");for(i=0;i<6;i++)scanf("%s",pstr[i]);fun(pstr);printf("Thestringsaftersorting:n");for(i=0;i<6;i++)printf("%sn",pstr[i]);}答案:(1)for(j=i+1;j<6;j++)(2)*(pstr+i)=*(pstr+j);3.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。#include#include#defineM81intfun(char*ss,charc){}main(){chara[M],ch;voidNONO();printf("nPleaseenterastring:");gets(a);printf("nPleaseenterachar:");ch=getchar();printf("nThenumberofthecharis:%dn",fun(a,ch));NONO();}voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti;FILE*rf,*wf;chara[M],b[M],ch;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",a);fscanf(rf,"%s",b);ch=*b;fprintf(wf,"%c=%dn",ch,fun(a,ch));}fclose(rf);fclose(wf);}n答案:53.intfun(char*ss,charc){intn=0,i=0;while(ss[i]){if(ss[i]==c){n++;}i++;}returnn;}第5套1.程序中,函数fun的功能是:有NxN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:123456789计算结果为10065010149#include#defineN4/**********found**********/voidfun(int(*t)___1___){inti,j;for(i=1;i#include#include/************found************/#defineFU(m,n)(m/n)floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)+FU(c+b,c-b);/************found************/Return(Value);}main(){floatx,y,z,sum;printf("Inputxyz:");scanf("%f%f%f",&x,&y,&z);printf("x=%f,y=%f,z=%fn",x,y,z);if(x==y||y==z){printf("Dataerror!n");exit(0);}sum=fun(x,y,z);printf("Theresultis:%5.2fn",sum);}答案:(1)#defineFU(m,n)((m)/(n))(2)return(value);3.规定输入的字符中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。#includevoidfun(char*a){}main(){chars[81];voidNONO();nprintf("Enterastring:n");gets(s);fun(s);printf("Thestringafterdeleted:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:54..voidfun(char*a){inti=0,j=0;while(a[i]){if(a[i]!='*'){j=i;break;}i++;}while(a[i]){a[i-j]=a[i];i++;}a[i-j]='';}第6套1.程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。#includevoidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!='';i++)n++;for(i=1;is[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=x;}}for(i=1,j=0;i#includefloatfun(floatnum){ints;floatn,t,pi;t=1;pi=0;n=1;s=1;/**************found**************/while(t>=num){pi=pi+t;n=n+2;s=-s;/**************found**************/t=s%n;}pi=pi*4;returnpi;}nmain(){floatn1,n2;printf("Enterafloatnumber:");scanf("%f",&n1);n2=fun(n1);printf("%6.4fn",n2);}答案:(1)while((fabs(t))>=num)(2)t=s/n;3.请编写一个函数voidfun(chara[],charb[],intn),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。#include#include#defineLEN20voidfun(chara[],charb[],intn){}main(){charstr1[LEN],str2[LEN];intn;voidNONO();printf("Enterthestring:n");gets(str1);printf("Enterthepositionofthestringdeleted:");scanf("%d",&n);fun(str1,str2,n);printf("Thenewstringis:%sn",str2);NONO();}voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/charstr1[LEN],str2[LEN];inti,n;FILE*rf,*wf;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s%d",str1,&n);fun(str1,str2,n);fprintf(wf,"%sn",str2);}fclose(rf);fclose(wf);}答案:55.voidfun(chara[],charb[],intn){inti=0,j=0;while(a[i]){if(i!=n){b[j]=a[i];j++;}i++;}b[j]='';}第7套1.程序中已建立一个带有头结点的单向链表,在main函数中将有多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*p){SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL){s=t;/**********found**********/t=t->___1___;}/**********found**********/printf("%d",___2___);s->next=NULL;/**********found**********/free(___3___);n}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("nThelistisNULL!n");else{printf("nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->Endn");}}main(){SLIST*head;inta[N]={11,12,15,18,19,22,25,29};head=creatlist(a);printf("nOutputfromhead:n");outlist(head);printf("nOutputfromtail:n");while(head->next!=NULL){fun(head);printf("nn");printf("nOutputfromheadagain:n");outlist(head);}}答案:(1)next(2)t->data(3)t2.给定程序MODI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。#include/************found************/fun(chara){if(*a){fun(a+1);/************found************/printf("%c"*a);}}main(){chars[10]="abcd";printf("处理前字符串=%sn处理后字符串=",s);fun(s);printf("n");}答案:(1)fun(char*a)(2)printf(“%c”,*a);3.请编写一个函数fun,它的功能是:比较两个字符串的长度(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。#includechar*fun(char*s,char*t){}main(){chara[20],b[20];voidNONO();printf("Input1thstring:");gets(a);printf("Input2thstring:");gets(b);printf("%sn",fun(a,b));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;chara[20],b[20];fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%s%s",a,b);fprintf(wf,"%sn",fun(a,b));}fclose(fp);fclose(wf);}答案:56.char*fun(char*s,char*t)n{char*m,*n;m=s;n=t;while(*s&&*t){t++;s++;}if(*t)returnn;elsereturnm;}第8套1.给定程序中,函数fun的功能是:计算NxN矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。例如,若N=3,有下列矩阵:123456789fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。#include#defineN4fun(intt[][N],intn){inti,sum;/**********found**********/___1___;for(i=0;i#includedoublefunx(doublex){return(2*x*x*x-4*x*x+3*x-6);}doublefun(doublem,doublen){/************found************/intr;r=(m+n)/2;/************found************/while(fabs(n-m)<0.001){if(funx(r)*funx(n)<0)m=r;elsen=r;r=(m+n)/2;}returnr;}main(){doublem,n,root;printf("Entermn:n");scanf("%lf%lf",&m,&n);root=fun(m,n);printf("root=%6.3fn",root);}答案:(1)doubler;(2)while(fabs(m-n)>0.001)3.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。#includevoidfun(char*a,char*h,char*p){}main(){chars[81],*t,*f;voidNONO();printf("Enterastring:n");gets(s);t=f=s;while(*t)t++;t--;while(*t=='*')t--;nwhile(*f=='*')f++;fun(s,f,t);printf("Thestringafterdeleted:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81],*t,*f;in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);t=f=s;while(*t)t++;t--;while(*t=='*')t--;while(*f=='*')f++;fun(s,f,t);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:57.voidfun(char*a,char*h,char*p){inti=0;for(;a[i]=='*';i++)a[i]='*';while(hintfun(intx){intn,s1,s2,s3,t;n=0;t=100;/**********found**********/while(t<=__1__){/**********found**********/s1=t%10;s2=(__2__)%10;s3=t/100;/**********found**********/if(s1+s2+s3==__3__){printf("%d",t);n++;}t++;}returnn;}main(){intx=-1;while(x<0){printf("Pleaseinput(x>0):");scanf("%d",&x);}printf("nTheresultis:%dn",fun(x));}答案:(1)999(2)t/10(3)x2.给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。#include/************found************/voidfun(longs,longt){longsl=10;s/=10;*t=s%10;/************found************/while(s<0){s=s/100;*t=s%10*sl+*t;sl=sl*10;}}nmain(){longs,t;printf("nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ldn",t);}答案:(1)voidfun(longs,long*t)(2)while(s>0)3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中。请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。#include#defineN16typedefstruct{charnum[10];ints;}STREC;voidfun(STRECa[]){}main(){STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};inti;FILE*out;fun(s);printf("Thedataaftersorted:n");for(i=0;ivoidfun(unsignedlong*n){unsignedlongx=0,i;intt;i=1;while(*n)/**********found**********/{t=*n%__1__;/**********found**********/if(t%2!=__2__){x=x+t*i;i=i*10;}*n=*n/10;}/**********found**********/*n=__3__;}main(){unsignedlongn=-1;while(n>99999999||n<0){printf("Pleaseinput(0ndoublefun(intn){doubleresult=1.0;/************found************/ifn==0return1.0;while(n>1&&n<170)/************found************/result*=n--returnresult;}main(){intn;printf("InputN:");scanf("%d",&n);printf("nn%d!=%lfnn",n,fun(n));}答案:(1)if(n==0)(2)result*=n--;3.请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。#include#includelongfun(char*p){/*以下代码仅供参考*/inti,len,t;/*len为串长,t为正负标识*/longx=0;len=strlen(p);if(p[0]=='-'){t=-1;len--;p++;}elset=1;/*以下完成数字字符串转换为一个数字*/returnx*t;}main()/*主函数*/{chars[6];voidNONO();longn;printf("Enterastring:n");gets(s);n=fun(s);printf("%ldn",n);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;chars[20];longn;fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%s",s);n=fun(s);fprintf(wf,"%ldn",n);}fclose(fp);fclose(wf);}答案:59.longfun(char*p){longi,s=0;if(p[0]=='-'){i=1;while(p[i]){s=s*10+p[i]-'0';i++;}s*=-1;}else{i=0;while(p[i]){s=s*10+p[i]-'0';i++;}}returns;}第11套1.给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。n#includeunsignedlongfun(unsignedlongn){unsignedlongx=0;intt;while(n){t=n%10;/**********found**********/if(t%2==__1__)/**********found**********/x=__2__+t;/**********found**********/n=__3__;}returnx;}main(){unsignedlongn=-1;while(n>99999999||n<0){printf("Pleaseinput(0voidfun(longs,long*t){intd;longsl=1;/************found************/t=0;while(s>0){d=s%10;/************found************/if(d%2==0){*t=d*sl+*t;sl*=10;}s/=10;}}main(){longs,t;printf("nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ldn",t);}答案:(1)*t=0;(2)if(d%2!=0)3.编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。#includevoidfun(charp1[],charp2[]){}main(){chars1[80],s2[40];voidNONO();printf("Enters1ands2:n");scanf("%s%s",s1,s2);printf("s1=%sn",s1);printf("s2=%sn",s2);printf("Invokefun(s1,s2):n");fun(s1,s2);printf("Afterinvoking:n");printf("%sn",s1);NONO();}voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti;FILE*rf,*wf;chars1[80],s2[40];rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s1);fscanf(rf,"%s",s2);fun(s1,s2);fprintf(wf,"%sn",s1);}fclose(rf);fclose(wf);}答案:60.voidfun(charp1[],charp2[]){nchar*p,*q;p=p1;q=p2;while(*p)p++;while(*q)*p++=*q++;*p='';}第12套1.函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0],a[1],a[2],……中,创建新的字符串保存偶数数据。奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。#include#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;iintfun(inta,intb){intr,t;if(avoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:n");gets(s);fun(s);printf("Thestringafterdeleted:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%sn",s);}nfclose(in);fclose(out);}答案:61.voidfun(char*a){inti=0,j=0;while(a[i]){if(a[i]!='*')a[j++]=a[i];i++;}a[j]=0;}第13套1.给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长#include#defineM5#defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;/**********found**********/for(i=0;i<___1___;i++){len=strlen(ss[i]);if(i==0)*n=len;/**********found**********/if(len___2___*n){*n=len;k=i;}}/**********found**********/return(___3___);}main(){charss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"};intn,k,i;printf("nTheoriginalstringsare:n");for(i=0;i#includechar*fun(chartt[]){inti;for(i=0;tt[i];i++)/**********found***********/if(('a'<=tt[i])||(tt[i]<='z'))/**********found***********/tt[i]+=32;return(tt);}main(){chartt[81];printf("nPleaseenterastring:");gets(tt);printf("nTheresultstringis:n%s",fun(tt));}答案:(1)if((`a`<=tt[i])&&(tt[i]<=`z`))(2)tt[i]-=32;3.请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。#includevoidfun(intm,int*k,intxx[]){}main(){intm,n,zz[100];voidNONO();printf("nPleaseenteranintegernumberbetween10and100:");scanf("%d",&n);nfun(n,&m,zz);printf("nnThereare%dnon-primenumberslessthan%d:",m,n);for(n=0;n#include#includevoidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen("myfile4.txt","w"))==NULL){printf("openfail!!n");exit(0);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt","r"))==NULL){printf("openfail!!n");exit(0);}ReadText(fp);fclose(fp);}/**********found**********/voidWriteText(FILE___1___){charstr[81];printf("nEnterstringwith-1toend:n");gets(str);while(strcmp(str,"-1")!=0){/**********found**********/fputs(___2___,fw);fputs("n",fw);gets(str);}}voidReadText(FILE*fr){charstr[81];printf("nReadfileandoutputtoscreen:n");fgets(str,81,fr);while(!feof(fr)){/**********found**********/printf("%s",___3___);fgets(str,81,fr);}}答案:(1)*fw(2)str(3)str2.给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。#include/************found************/voidfun(longs,longt){longsl=10;*t=s%10;nwhile(s>0){s=s/100;*t=s%10*sl+*t;/************found************/sl=sl*100;}}main(){longs,t;printf("nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ldn",t);}答案:(1)voidfun(longs,long*t)(2)s1=s1*10;3.函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。#includevoidfun(inta,intb,long*c){}main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d,%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ldn",c);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\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);}答案:63.*c=a/10+a%10*100+b%10*10+b/10*1000;第15套1.函数fun的功能是:将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则调换后为:6、7、8、9、5、1、2、3、4。#include#defineN9voidfun(inta[],intn){inti,t,p;/**********found**********/p=(n%2==0)?n/2:n/2+___1___;for(i=0;ivoidfun(float*a,float*b,float*c){/**********found**********/float*k;if(*a<*b)n{k=*a;*a=*b;*b=k;}/**********found**********/if(*a>*c){k=*c;*c=*a;*a=k;}if(*b<*c){k=*b;*b=*c;*c=k;}}main(){floata,b,c;printf("Inputabc:");scanf("%f%f%f",&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1fnn",a,b,c);fun(&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1fnn",a,b,c);}答案:(1)floatk;(2)if(*c>*a)3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中。请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个。函数返回分数最高的学生的人数。#include#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b){}main(){STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh[N];inti,n;FILE*out;n=fun(s,h);printf("The%dhighestscore:n",n);for(i=0;is)s=a[i].s;for(i=0;i#include#defineN5#defineM10intfun(char(*ss)[M],intk){inti,j=0,len;/**********found**********/for(i=0;i<__1__;i++){len=strlen(ss[i]);/**********found**********/if(len<=__2__)/**********found**********/strcpy(ss[j++],__3__);}returnj;}main(){charnx[N][M]={"Beijing","Shanghai","Tianjing","Nanjing","Wuhan"};inti,f;printf("nTheoriginalstringnn");for(i=0;i#includevoidfun(char*p,char*q,char*c){/************found************/intk=1;/************found************/while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;}}main(){chara[10]="aBCDeFgH",b[10]="ABcd",c[80]={''};fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);}答案:(1)intk=0;(2)while(*p||*q)3.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。#includevoidfun(char*a){/*以下代码仅供参考*/inti=0,k;while(a[i]=='*')i++;k=i;while(a[i]!='')/*以下程序段实现非*字符前移*/{}a[k]='';}main(){chars[81];voidNONO();printf("Enterastring:n");gets(s);fun(s);printf("Thestringafterdeleted:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:65.voidfun(char*a){inti=0,j=0;while(a[i]){if(j==0&&a[i]!='*'){j=i+1;}elseif(a[i]!='*'){a[j]=a[i];j++;}i++;}a[j]=0;n}第17套1.给定程序中,函数fun的功能是计算下式,,并把计算结果作为函数值返回。#includedoublefun(doublee){inti,k;doubles,t,x;s=0;k=1;i=2;/**********found**********/x=__1__/4;/**********found**********/while(x__2__e){s=s+k*x;k=k*(-1);t=2*i;/**********found**********/x=__3__/(t*t);i++;}returns;}main(){doublee=1e-3;printf("nTheresultis:%fn",fun(e));}答案:(1)3.(2)>(3)(2*i+1)2.给定程序MODI1.C中函数fun的功能是:求出以下分数序列的前n项之和,和值通过函数值返回到main函数。#include/************found************/voidfun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k<=n;k++){/************found************/s=s+(Double)a/b;c=a;a=a+b;b=c;}returns;}main(){intn=5;printf("nThevalueoffunctionis:%lfn",fun(n));}答案:(1)doublefun(intn)(2)s=s+(double)a/b;3.请编写一个函数fun,它的功能是:求出一个2XM整型二维数组中最大元素的值,并将此值返回调用函数。#include#defineM4intfun(inta[][M]){}main(){intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();printf("max=%dn",fun(arr));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;intarr[][M]={5,8,3,90,76,-4,12,82};wf=fopen("c:\test\out.dat","w");fprintf(wf,"max=%dn",fun(arr));fclose(wf);}答案:66.intfun(inta[][M]){inti,j,max=0;for(i=0;i<2;i++)for(j=0;jvoidfun(char*s,int*t){inti,n;n=0;/**********found**********/for(i=0;___1___!=0;i++)/**********found**********/if(s[i]>='0'&&s[i]<=___2___)n++;/**********found**********/___3___;}main(){chars[80]="abcdef35adgh3kjsdf7";intt;printf("nTheoriginalstringis:%sn",s);fun(s,&t);printf("nTheresultis:%dn",t);}答案:(1)s[i](2)`9`(3)*t=n2.给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。#includeintfun(int*x,inty){intt;/**************found**************/t=x;x=y;/**************found**************/return(y);}main(){inta=3,b=8;printf("%d%dn",a,b);b=fun(&a,b);printf("%d%dn",a,b);}答案:(1)t=*x;*x=y;(2)returnt;3.请编写函数fun,它的功能是:求出1~1000之间能被7或11整除、但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数。#includevoidfun(int*a,int*n){}main(){intaa[1000],n,k;voidNONO();fun(aa,&n);for(k=0;k#defineN9voidfun(inta[],intn){inti,j,max,min,px,pn,t;for(i=0;i___3___){min=a[j];pn=j;}}if(pn!=i){t=a[i];a[i]=min;a[pn]=t;if(px==i)px=pn;}if(px!=i+1){t=a[i+1];a[i+1]=max;a[px]=t;}}}main(){intb[N]={9,1,4,2,3,6,5,8,7},i;printf("nTheoriginaldata:n");for(i=0;ilongfun(intg){/**********found**********/switch(g);{case0:return0;/**********found**********/case1;case2:return1;}return(fun(g-1)+fun(g-2));}main(){longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%dn",n);fib=fun(n);printf("fib=%dnn",fib);}答案:(1)switch(g)(2)case1:return1;case2:return1;3.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分,放在记录的age成员中。#include#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voidfun(STREC*a){}main(){STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};inti;voidNONO();fun(&s);printf("The%s'sstudentdata:n",s.num);for(i=0;is[i];}a->ave=sum/N;}第20套1.给定程序中,函数fun的功能是:找出100至x(x≤999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。#includeintfun(intx){intn,s1,s2,s3,t;/**********found**********/n=__1__;t=100;/**********found**********/while(t<=__2__){s1=t%10;s2=(t/10)%10;s3=t/100;if(s1+s2+s3==15){printf("%d",t);n++;}/**********found**********/__3__;}returnn;}main(){intx=-1;while(x>999||x<0){printf("Pleaseinput(0#includevoidfun(char*s,char*t){/************found************/inti;sl=strlen(s);for(i=0;ivoidfun(inta,intb,long*c)n{}main()/*主函数*/{inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ldn",c);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\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);}答案:69.voidfun(inta,intb,long*c){*c=a/10*100+a%10+b/10*1000+b%10*10;}第21套1.给定程序中,函数fun的功能是:NxN矩阵,根据给定的m(m≤N)值,将每行元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵#include#defineN4voidfun(int(*t)[N],intm){inti,j;/**********found**********/for(i=0;i=0;j--)/**********found**********/t[i][j+___2___]=t[i][j];/**********found**********/for(j=0;j<___3___;j++)t[i][j]=0;}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j,m;printf("nTheoriginalarray:n");for(i=0;i#includeintfun(inthigh){intsum=0,n=0,j,yes;/************found************/while((high>=2)&&(n<10){yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/************found************/yes=0;break}if(yes){sum+=high;n++;}high--;}returnsum;}main()n{printf("%dn",fun(100));}答案:(1)while((2<=high)&&(n<10))(2)yes=0;break;3.编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。#include#includedoublefun(){}main(){voidNONO();printf("Root=%fn",fun());NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;wf=fopen("c:\test\out.dat","w");fprintf(wf,"%fn",fun());fclose(wf);}答案:70.doublefun(){floatx0,x1=0.0;while(1){x0=x1;x1=cos(x0);if(fabs(x0-x1)<1e-6)break;}returnx1;}第22套1.函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0],a[1],a[2],……中,把奇数从数组中删除,偶数个数通过函数值返回。#include#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;ivoidfun(char*a,intn){}main(){chars[81];intn;voidNONO();printf("Enterastring:n");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:n");puts(s);NONO();n}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,n;chars[81];in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fscanf(in,"%d",&n);fun(s,n);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:71.voidfun(char*a,intn){inti=0,j=0,c,k;while(a[i])i++;c=i;while(a[i-1]=='*'){j++;i--;}if(j>n){k=j-n;a[c-k]='';}}第23套1.给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。#include#include#includechar*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+1;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;for(i=0;i='a')&&(s[i]<='z'))||((s[i]>='A')&&(s[i]<='Z'))){/**********found**********/t[j]=__1__;j++;}else{p[k]=s[i];k++;}}/**********found**********/for(i=0;i<__2__;i++)t[j+i]=p[i];/**********found**********/t[j+k]=__3__;returnt;}main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("nTheresultis:%sn",fun(s));}答案:(1)s[i](2)k(3)02.给定程序MODI1.C中函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串。形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。#include#includevoidfun(char*s,char*t1,char*t2,char*w){char*p,*r,*a=s;strcpy(w,s);/************found************/while(w){p=w;r=t1;while(*r)/************found************/IF(*r==*p){r++;p++;}elsebreak;if(*r=='')a=w;w++;}r=t2;while(*r){*a=*r;a++;r++;}}main(){nchars[100],t1[100],t2[100],w[100];printf("nPleaseenterstringS:");scanf("%s",s);printf("nPleaseentersubstringt1:");scanf("%s",t1);printf("nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,t1,t2,w);printf("nTheresultis:%sn",w);}elseprintf("nError:strlen(t1)!=strlen(t2)n");}答案:(1)while(*w)(2)if(*r==*p)3.函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("nTheresultis:%sn",t);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%sn",t);}fclose(rf);fclose(wf);}答案:72.voidfun(char*s,chart[]){inti=0,j=0,m;while(m=s[i]){if(m%2==0){t[j]=s[i];j++;}i++;}t[j]='';}第24套1.给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。#includedoublefun(intn){inti;doubles,t;/**********found**********/s=__1__;/**********found**********/for(i=1;i<=__2__;i++){t=2.0*i;/**********found**********/s=s+(2.0*i-1)*(2.0*i+1)/__3__;}returns;}main(){intn=-1;while(n<0){printf("Pleaseinput(n>0):");scanf("%d",&n);}printf("nTheresultis:%fn",fun(n));}答案:(1)0(2)n(3)(t*t)2.给定程序MODI1.C中函数fun的功能是:统计substr所指子字符串在str所指字符串中出现的次数。#includeintfun(char*str,char*substr){inti,j,k,num=0;n/************found************/for(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++,j++)/************found************/If(substr[k+1]==''){num++;break;}returnnum;}main(){charstr[80],substr[80];printf("Inputastring:");gets(str);printf("Inputasubstring:");gets(substr);printf("%dn",fun(str,substr));}答案:(1)for(i=0;str[i];i++)(2)if(substr[k+1]==’’)3.请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):程序运行后,如果输入精度0.0005,则程序输出为3.14…。#include#includedoublefun(doubleeps){}main(){doublex;voidNONO();printf("Inputeps:");scanf("%lf",&x);printf("neps=%lf,PI=%lfn",x,fun(x));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;doublex;fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%lf",&x);fprintf(wf,"%lfn",fun(x));}fclose(fp);fclose(wf);}答案:73.doublefun(doubleeps){inti=0;doublepi=0,a=1;while(a>=eps){pi+=a;i++;a=a*i/(2*i+1);}returnpi*2;}第25套1.给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。#includevoidfun(char*s){inti,n,k;charc;n=0;for(i=0;s[i]!='';i++)n++;/**********found**********/if(n%2==0)k=n-___1___;elsek=n-2;/**********found**********/c=___2___;for(i=k-2;i>=1;i=i-2)s[i+2]=s[i];/**********found**********/s[1]=___3___;}main(){chars[80]="abcdefgh";printf("nTheoriginalstringis:%sn",s);fun(s);printf("nTheresultis:%sn",s);}n答案:(1)1(2)s[k](3)c2.给定程序MODI1.C中函数fun的功能是:求s=aa…aa-…-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)#includelongfun(inta,intn){intj;/**************found**************/longs=0,t=1;for(j=0;j#includevoidfun(char*tt,intpp[]){}main(){charaa[1000];intbb[26],k;voidNONO();printf("nPleaseenteracharstring:");scanf("%s",aa);fun(aa,bb);for(k=0;k<26;k++)printf("%d",bb[k]);printf("n");NONO();}voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/charaa[1000];intbb[26],k,i;FILE*rf,*wf;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",aa);fun(aa,bb);for(k=0;k<26;k++)fprintf(wf,"%d",bb[k]);fprintf(wf,"n");}fclose(rf);fclose(wf);}答案:74.voidfun(char*tt,intpp[]){inti;for(i=0;i<26;i++)pp[i]=0;i=0;while(tt[i]){pp[tt[i]-97]++;i++;}}第26套1.给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。#include#include#defineN8typedefstructlistn{intdata;structlist*next;}SLIST;SLIST*creatlist(int*a);voidoutlist(SLIST*);voidfun(SLIST*h,int*n){SLIST*p;/**********found**********/___1___=0;p=h->next;while(p){(*n)++;/**********found**********/p=p->___2___;}}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48},num;head=creatlist(a);outlist(head);/**********found**********/fun(___3___,&num);printf("nnumber=%dn",num);}SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("ThelistisNULL!n");else{printf("nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->Endn");}}答案:(1)*n(2)next(3)head2.给定程序MODI1.C中函数fun的功能是:求出s所指字符串中最后一次出现的t所指字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。#include#includechar*fun(char*s,char*t){char*p,*r,*a;/************found************/a=Null;while(*s){p=s;r=t;while(*r)/************found************/if(r==p){r++;p++;}elsebreak;if(*r=='')a=s;s++;}returna;}main(){chars[100],t[100],*p;printf("nPleaseenterstringS:");scanf("%s",s);printf("nPleaseentersubstringt:");scanf("%s",t);p=fun(s,t);if(p)printf("nTheresultis:%sn",p);elseprintf("nNotfound!n");}答案:(1)a=0;(2)if(*r==*p)3.函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。#include#includevoidfun(char*s,chart[]){}main(){nchars[100],t[100];voidNONO();printf("nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("nTheresultis:%sn",t);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%sn",t);}fclose(rf);fclose(wf);}答案:75.voidfun(char*s,chart[]){inti=0,k=0,length;length=strlen(s);while(i#defineN4voidfun(int(*t)[N]){inti,j,x;/**********found**********/for(i=0;i<___1___;i++){/**********found**********/x=t[i][___2___];for(j=N-1;j>=1;j--)t[i][j]=t[i][j-1];/**********found**********/t[i][___3___]=x;}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("Theoriginalarray:n");for(i=0;idoublefun(doubleq){intn;doubles,t;n=2;s=2.0;while(s<=q){t=s;/************found************/s=s+(n+1)/n;n++;}printf("n=%dn",n);n/************found************/returns;}main(){printf("%fn",fun(50));}答案:(1)s=s+(n+1.)/n;(2)returnt;3.编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)#include#includeintfun(intt){}main()/*主函数*/{intn;voidNONO();n=1000;printf("n=%d,f=%dn",n,fun(n));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n,s;fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,"%dn",s);}fclose(fp);fclose(wf);}答案:76.intfun(intt){inta=1,b=1,c=0,i;for(i=4;i<=t;i++){if(c#include#defineN5#defineM8intfun(char(*ss)[M],char*t){inti;/**********found**********/for(i=0;i<__1__;i++)/**********found**********/if(strcmp(ss[i],t)==0)return__2__;return-1;}main(){charch[N][M]={"if","while","switch","int","for"},t[M];intn,i;printf("nTheoriginalstringnn");for(i=0;iintfun(int*b){intk,a1,a2,i=0;nfor(k=10;k<=55;k++){/************found************/a2=k/1O;a1=k-a2*10;if((k%3==0&&a2==5)||(k%3==0&&a1==5)){b[i]=k;i++;}}/************found************/returnk;}main(){inta[100],k,m;m=fun(a);printf("Theresultis:n");for(k=0;kvoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:n");gets(s);fun(s);printf("Thestringafterdeleted:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:77.voidfun(char*a){while(*a!=NULL)a++;a--;while(*a=='*')a--;a++;*a='';}第29套1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。#include#includestructstudent{longsno;charname[10];floatscore[3];};/**********found**********/__1__fun(structstudent*a){inti;a->sno=10002;strcpy(a->name,"LiSi");/**********found**********/for(i=0;i<3;i++)__2__+=1;/**********found**********/return__3__;}main(){structstudents={10001,"ZhangSan",95,80,88},*t;inti;printf("nnTheoriginaldata:n");printf("nNo:%ldName:%snScores:",s.sno,s.name);for(i=0;i<3;i++)printf("%6.2f",s.score[i]);printf("n");t=fun(&s);printf("nThedataaftermodified:n");printf("nNo:%ldName:%snScores:",t->sno,t->name);for(i=0;i<3;i++)printf("%6.2f",t->score[i]);printf("n");}n答案:(1)structstudent*(2)a->score[i](3)a2.给定程序MODI1.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。#include#include#defineN5#defineM81/**********found**********/fun(char(*sq)[M]){inti;char*sp;sp=sq[0];for(i=0;ivoidfun(inta,intb,long*c){}main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ldn",c);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\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);}答案:78.voidfun(inta,intb,long*c){*c=a/10*100+a%10+b/10*10+b%10*1000;}第30套1.给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(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;/**********found**********/free(___1___);/**********found**********/q=p->___2___;}nelse{p=q;/**********found**********/q=q->___3___;}}}}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("nThelistisNULL!n");else{printf("nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->Endn");}}main(){SLIST*head;inta[N]={1,2,2,3,4,4,4,5};head=creatlist(a);printf("nThelistbeforedeleting:n");outlist(head);fun(head);printf("nThelistafterdeleting:n");outlist(head);}答案:(1)q(2)next(3)next2.给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j#defineM100voidfun(intm,int*a,int*n){}main(){intaa[M],n,k;voidNONO();fun(50,aa,&n);for(k=0;k#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,longsno){FILE*fp;STUn;inti;fp=fopen(filename,"rb+");/**********found**********/while(!feof(__1__)){fread(&n,sizeof(STU),1,fp);/**********found**********/if(n.sno__2__sno)break;}if(!feof(fp)){for(i=0;i<3;i++)n.score[i]+=3;/**********found**********/fseek(__3__,-(long)sizeof(STU),SEEK_CUR);fwrite(&n,sizeof(STU),1,fp);}fclose(fp);}main(){STUt[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}},ss[N];inti,j;FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);printf("nTheoriginaldata:n");fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j#include#defineN80voidinsert(char*aa){inti,j,n;charch;/**********found**********/n=strlen[aa];for(i=1;i=0)&&(ch#include#defineN8structslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h){}STREC*creat(double*s){STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;returnh;}outlist(STREC*h){STREC*p;p=h->next;printf("head");do{printf("->%2.0f",p->s);p=p->next;}while(p!=0);printf("nn");}main(){doubles[N]={85,76,69,85,91,72,64,87},max;voidNONO();STREC*h;h=creat(s);outlist(h);max=fun(h);printf("max=%6.1fn",max);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,j;doubles[N],max;STREC*h;in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){for(j=0;jnext;max=p->s;while(p){if(p->s>max){nmax=p->s;}p=p->next;}returnmax;}第32套1.给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。#includevoidfun(char*s){inti,j,n;for(i=0;s[i]!='';i++)/**********found**********/if(s[i]>='0'___1___s[i]<='9'){n=0;/**********found**********/while(s[i+1+n]!=___2___)n++;for(j=i+n+1;j>i;j--)/**********found**********/s[j+1]=___3___;s[j+1]='*';i=i+1;}}main(){chars[80]="ba3a54cd23a";printf("nTheoriginalstringis:%sn",s);fun(s);printf("nTheresultis:%sn",s);}答案:(1)&&(2)0(3)s[j]2.给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。#includedoublefun(intm){doubley=1.0;inti;/**************found**************/for(i=2;ivoidfun(inta[3][3],intb[3][3]){}main()/*主程序*/{inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;voidNONO();fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",t[i][j]);printf("n");}NONO();}voidNONO(){/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/inti,j,k,a[3][3],t[3][3];FILE*rf,*wf;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(k=0;k<5;k++){for(i=0;i<3;i++)fscanf(rf,"%d%d%d",&a[i][0],&a[i][1],&a[i][2]);nfun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)fprintf(wf,"%7d",t[i][j]);fprintf(wf,"n");}}fclose(rf);fclose(wf);}答案:81. voidfun(inta[3][3],intb[3][3]){inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=0;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];}第33套1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。#include#includestructstudent{longsno;charname[10];floatscore[3];};/**********found**********/__1__fun(structstudenta){inti;a.sno=10002;/**********found**********/strcpy(__2__,"LiSi");/**********found**********/for(i=0;i<3;i++)__3__+=1;returna;}main(){structstudents={10001,"ZhangSan",95,80,88},t;inti;printf("nnTheoriginaldata:n");printf("nNo:%ldName:%snScores:",s.sno,s.name);for(i=0;i<3;i++)printf("%6.2f",s.score[i]);printf("n");t=fun(s);printf("nThedataaftermodified:n");printf("nNo:%ldName:%snScores:",t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.score[i]);printf("n");}答案:(1)stuctstudent(2)a.name(3)a.score[i]2.假定整数数列中的数步重复,并存放在数组中。给定程序MODI1.C中函数fun的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。#include#defineN20intfun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/**********found**********/if(P==n)return-1;else{for(i=p;i#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b){}main(){STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh[N];inti,n;FILE*out;n=fun(s,h);printf("The%dlowestscore:n",n);for(i=0;ia[i].s)score=a[i].s;for(i=0;idoublefun(intn){inti,k;doubles,t;s=0;/**********found**********/k=__1__;for(i=1;i<=n;i++){/**********found**********/t=__2__;s=s+k*(2*i-1)*(2*i+1)/(t*t);/**********found**********/k=k*__3__;}returns;}main(){intn=-1;while(n<0){printf("Pleaseinput(n>0):");scanf("%d",&n);}printf("nTheresultis:%fn",fun(n));}答案:(1)1(2)2*I(3)(-1)2.给定程序MODI1.C中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。#includeintfun(intm){intk=2;while(k<=m&&(m%k))/************found************/k++/************found************/if(m=k)return1;elsereturn0;}nmain(){intn;printf("nPleaseentern:");scanf("%d",&n);if(fun(n))printf("YESn");elseprintf("NO!n");}答案:(1)k++;(2)if(m==k)3.请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标。最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。#include#includevoidfun(inta[],intn,int*max,int*d){}main(){inti,x[20],max,index,n=10;voidNONO();for(i=0;i/**********found**********/___1___fun(charch){/**********found**********/if(ch>='0'&&___2___)/**********found**********/return'9'-(ch-___3___);returnch;}main(){charc1,c2;printf("nTheresult:n");c1='2';c2=fun(c1);printf("c1=%cc2=%cn",c1,c2);c1='8';c2=fun(c1);printf("c1=%cc2=%cn",c1,c2);c1='a';c2=fun(c1);printf("c1=%cc2=%cn",c1,c2);}答案:(1)char(2)ch<=`9`(3)`0`2.给定程序MODI1.C中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制3个字符之后插入一个空格。#includevoidfun(char*p,char*b){inti,k=0;while(*p){i=1;while(i<=3&&*p){/**********found**********/nb[k]=p;k++;p++;i++;}if(*p){/**********found**********/b[k++]="";}}b[k]='';}main(){chara[80],b[80];printf("Enterastring:");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("nThestringafterinsertspace:");puts(b);printf("nn");}答案:(1)b[k]=*p;(2)b[k]=``;k++;3.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。#include#include#defineN8structslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h){}STREC*creat(double*s){STREC*h,*p,*q;inti=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(is=s[i];i++;p->next=q;p=q;}p->next=0;returnh;}outlist(STREC*h){STREC*p;p=h->next;printf("head");do{printf("->%4.1f",p->s);p=p->next;}while(p!=0);printf("nn");}main(){doubles[N]={85,76,69,85,91,72,64,87},ave;voidNONO();STREC*h;h=creat(s);outlist(h);ave=fun(h);printf("ave=%6.3fn",ave);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,j;doubles[N],ave;STREC*h;in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){for(j=0;jnext;while(p){sum+=p->s;p=p->next;}ave=sum/N;returnave;}第36套1.给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。n#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p){/**********found**********/s+=p->___1___;/**********found**********/p=p->___2___;}returns;}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48};head=creatlist(a);outlist(head);/**********found**********/printf("nsum=%dn",fun(___3___));}SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("ThelistisNULL!n");else{printf("nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->Endn");}}答案:(1)data(2)next(3)head2.给定程序MODI1.C中函数fun的功能是:将s所指字符串中出现的与t1所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。#include#includevoidfun(char*s,char*t1,char*t2,char*w){char*p,*r,*a;strcpy(w,s);while(*w){p=w;r=t1;/************found************/while(r)if(*r==*p){r++;p++;}elsebreak;if(*r==''){a=w;r=t2;while(*r){/************found************/*a=*r;a++;r++}w+=strlen(t2);}elsew++;}}main(){chars[100],t1[100],t2[100],w[100];printf("nPleaseenterstringS:");scanf("%s",s);printf("nPleaseentersubstringt1:");scanf("%s",t1);printf("nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,t1,t2,w);printf("nTheresultis:%sn",w);}elseprintf("Error:strlen(t1)!=strlen(t2)n");}答案:(1)while(*r)(2)*a=*r,a++;r++;3.函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。#includen#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("nTheresultis:%sn",t);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%sn",t);}fclose(rf);fclose(wf);}答案:85.voidfun(char*s,chart[]){inti;for(i=0;i<50;i++)t[i]=s[2*i+1];}第37套1.给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(char*);voidoutlist(SLIST*);intfun(SLIST*h,charch){SLIST*p;intn=0;p=h->next;/**********found**********/while(p!=___1___){n++;/**********found**********/if(p->data==ch)return___2___;elsep=p->next;}return0;}main(){SLIST*head;intk;charch;chara[N]={'m','p','g','a','w','x','r','d'};head=creatlist(a);outlist(head);printf("Enteraletter:");scanf("%c",&ch);/**********found**********/k=fun(___3___);if(k==0)printf("nNotfound!n");elseprintf("Thesequencenumberis:%dn",k);}SLIST*creatlist(char*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("nThelistisNULL!n");elsen{printf("nHead");do{printf("->%c",p->data);p=p->next;}while(p!=NULL);printf("->Endn");}}答案:(1)0(2)n(3)head,ch2.给定程序MODI1.C中函数fun的功能是:删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用`#`结束输入。#include#include#includefun(char*p){inti,t;charc[80];/************found************/For(i=0,t=0;p[i];i++)if(!isspace(*(p+i)))c[t++]=p[i];/************found************/c[t]="";strcpy(p,c);}main(){charc,s[80];inti=0;printf("Inputastring:");c=getchar();while(c!='#'){s[i]=c;i++;c=getchar();}s[i]='';fun(s);puts(s);}答案:(1)for(i=0,t=0;p[i];i++)(2)c[t]=’’;3.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。#include#includevoidfun(char*ss){}main(){chartt[81];voidNONO();printf("nPleaseenteranstringwithin80characters:n");gets(tt);printf("nnAfterchanging,thestringn"%s"",tt);fun(tt);printf("nbecomesn"%s"n",tt);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;chartt[81];inti;fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%s",tt);fun(tt);fprintf(wf,"%sn",tt);}fclose(fp);fclose(wf);}答案:86.voidfun(char*ss){inti=0;while(ss[i]){if(i%2!=0){if(ss[i]>='a'&&ss[i]<='z'){ss[i]-=32;}}i++;}}第38套1.给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。n#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h,intx){SLIST*p,*q,*s;s=(SLIST*)malloc(sizeof(SLIST));/**********found**********/s->data=___1___;q=h;p=h->next;while(p!=NULL&&x>p->data){/**********found**********/q=___2___;p=p->next;}s->next=p;/**********found**********/q->next=___3___;}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("nThelistisNULL!n");else{printf("nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->Endn");}}main(){SLIST*head;intx;inta[N]={11,12,15,18,19,22,25,29};head=creatlist(a);printf("nThelistbeforeinserting:n");outlist(head);printf("nEnteranumber:");scanf("%d",&x);fun(head,x);printf("nThelistafterinserting:n");outlist(head);}答案:(1)x(2)p(3)s2.给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。#includelongfun(longnum){/************found************/longk;do{k*=num%10;/************found************/num=10;}while(num);return(k);}main(){longn;printf("nPleaseenteranumber:");scanf("%ld",&n);printf("n%ldn",fun(n));}答案:(1)longk=1;(2)num/=10;3.请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。#includefloatfun(float*a,intn){}main(){floatscore[30]={90.5,72,80,61.5,55},aver;voidNONO();aver=fun(score,5);printf("nAveragescoreis:%5.2fn",aver);NONO();}voidNONO()n{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,j;floataver,score[5];fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){for(j=0;j<5;j++)fscanf(fp,"%f,",&score[j]);aver=fun(score,5);fprintf(wf,"%5.2fn",aver);}fclose(fp);fclose(wf);}答案:87.floatfun(float*a,intn){inti;doublesum=0.0,ave;for(i=0;i#include#defineN5typedefstruct{intnum;charname[10];chartel[10];}STYPE;voidcheck();/**********found**********/intfun(___1___*std){/**********found**********/___2___*fp;inti;if((fp=fopen("myfile5.dat","wb"))==NULL)return(0);printf("nOutputdatatofile!n");for(i=0;i#includevoidfun(char*s,char*t){inti,sl;sl=strlen(s);/************found************/for(i=0;i<=s1;i++)t[i]=s[i];for(i=0;ivoidfun(inta,intb,long*c){}main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d,%d",&a,&b);fun(a,b,&c);printf("Theresultis:%dn",c);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\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);}答案:88.voidfun(inta,intb,long*c){*c=a/10*1000+a%10*10+b/10*100+b%10;}第40套1.给定程序中,函数fun的功能是:有NxN矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。例如,若N=3,有下列矩阵:#include#defineN4voidfun(int(*t)[N]){intj,r[N];for(j=0;j=0;___2___)t[N-1][N-1-j]=t[j][N-1];for(j=N-1;j>=0;j--)/**********found**********/t[j][N-1]=r[___3___];}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("nTheoriginalarray:n");for(i=0;i#include/************found************/f(doublex){if(x==0.0||x==2.0)return0.0;elseif(x<0.0)return(x-1)/(x-2);elsereturn(x+1)/(x-2);}doublefun(intn){inti;doubles=0.0,y;for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}/************found************/returns}main(){printf("%fn",fun(5));}答案:(1)doublef(doublex)(2)returns;3.编写函数fun,它的功能是计算:s作为函数值返回。在C语言中科调用log(n)函数求ln(n)。log函数的引用说明是:doublelog(doublex)。#include#includedoublefun(intm){}main(){voidNONO();printf("%fn",fun(20));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,"%fn",s);}fclose(fp);fclose(wf);}答案:89.doublefun(intm){inti=1;doublesum=0.0;for(;i<=20;i++){sum=sum+log(i);}sum=sqrt(sum);returnsum;}第41套1.给定程序中,函数fun的功能是:将NxN矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。例如,若N=3,有下列矩阵:#include#defineN4/**********found**********/voidfun(int___1___,intn){inti,s;/**********found**********/for(___2___;i++){s=t[i][i];t[i][i]=t[i][n-i-1];/**********found**********/t[i][n-1-i]=___3___;}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,nj;printf("nTheoriginalarray:n");for(i=0;i#defineN10/************found************/voidfun(inta[],intm){intlow=0,high=N-1,mid;while(low<=high){mid=(low+high)/2;if(ma[mid])low=mid+1;elsereturn(mid);}return(-1);}main(){inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;printf("a数组中的数据如下:");for(i=0;i=0)printf("m=%d,index=%dn",m,k);elseprintf("Notbefound!n");}答案:(1)fun(inta[],intm)(2)elseif(m>a[mid])3.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除,形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。#includevoidfun(char*a,char*p){}main(){chars[81],*t;voidNONO();printf("Enterastring:n");gets(s);t=s;while(*t)t++;t--;while(*t=='*')t--;fun(s,t);printf("Thestringafterdeleted:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81],*t;in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);t=s;while(*t)t++;t--;while(*t=='*')t--;fun(s,t);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:90.voidfun(char*a,char*p){char*q;while(avoidfun(char*s,charc){inti,j,n;/**********found**********/for(i=0;s[i]!=___1___;i++)if(s[i]==c){/**********found**********/n=___2___;while(s[i+1+n]!='')n++;for(j=i+n+1;j>i;j--)s[j+1]=s[j];/**********found**********/s[j+1]=___3___;i=i+1;}}main(){chars[80]="baacda",c;printf("nThestring:%sn",s);printf("nInputacharacter:");scanf("%c",&c);fun(s,c);printf("nTheresultis:%sn",s);}答案:(1)0(2)0(3)c2.在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。给定程序MODI1.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。#includedoublefun(intx[]){/************found************/intsum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;}/************found************/sum=c;returnsum;}main(){intx[1000];inti=0;printf("nPleaseentersomedata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%fn",fun(x));}答案:(1)doublesum=0.;(2)sum/=c;3.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。#includedoublefun(intn){}main(){intn;doubles;voidNONO();printf("nPleaseenterN:");scanf("%d",&n);s=fun(n);printf("theresultis:%fn",s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopen("c:\test\in.dat","r");wf=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,"%fn",s);n}fclose(fp);fclose(wf);}答案:91.doublefunc(intn){inti,j;floatsum,resu;resu=0;for(i=1;i<=n;i++){sum=0;for(j=1;j<=i;j++){sum=sum+j;}resu=resu+1/sum;}returnresu;}第43套1.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。#include#includestructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudenta){structstudentb;inti;/**********found**********/b=__1__;b.sno=10002;/**********found**********/strcpy(__2__,"LiSi");printf("nThedataaftermodified:n");printf("nNo:%ldName:%snScores:",b.sno,b.name);/**********found**********/for(i=0;i<3;i++)printf("%6.2f",b.__3__);printf("n");}main(){structstudents={10001,"ZhangSan",95,80,88};inti;printf("nnTheoriginaldata:n");printf("nNo:%ldName:%snScores:",s.sno,s.name);for(i=0;i<3;i++)printf("%6.2f",s.score[i]);printf("n");fun(s);}答案:(1)a(2)b.name(3)score[i]2.给定程序MODI1.C中函数fun的功能是:从s所指字符串中删除所有小写字母c。#includevoidfun(char*s){inti,j;for(i=j=0;s[i]!='';i++)if(s[i]!='c')/************found************/s[j]=s[i];/************found************/s[i]='';}main(){chars[80];printf("Enterastring:");gets(s);printf("Theoriginalstring:");puts(s);fun(s);printf("Thestringafterdeleted:");puts(s);printf("nn");}答案:(1)s[j++]=s[i];(2)s[j]=’’;3.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中前导*号全部移到字符串的尾部。函数fun中给出的语句仅供参考。#includevoidfun(char*a){/*以下代码仅供参考*/char*p,*q;intn=0;p=a;while(*p=='*')/*统计串头'*'个数n*/{n++;p++;}q=a;/*向前复制字符串,请填写相应的语句完成其功能*/nfor(;n>0;n--)/*在串尾补n个'*'*/*q++='*';*q='';}main(){chars[81];intn=0;voidNONO();printf("Enterastring:n");gets(s);fun(s);printf("Thestringaftermoveing:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:92.voidfunc(char*a){char*p,*q;intn=0;p=a;while(*p=='*'){n++;p++;}q=a;while(*p!=NULL){*q=*p;p++;q++;}for(;n>0;n--){*q++='*';}*q='';}第44套1.给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。#include#include#defineN5#defineM10/**********found**********/voidfun(char(*ss)__1__,intk){inti=0;/**********found**********/while(i<__2__){/**********found**********/ss[i][k]=__3__;i++;}}main(){charx[N][M]={"Create","Modify","Sort","skip","Delete"};inti;printf("nTheoriginalstringnn");for(i=0;i#includedoublefun(doubleeps){doubles,t;intn=1;s=0.0;/************found************/t=0;while(t>eps){s+=t;t=t*n/(2*n+1);n++;}/************found************/nreturn(s);}main(){doublex;printf("nPleaseenteraprecision:");scanf("%lf",&x);printf("neps=%lf,Pi=%lfnn",x,fun(x));}答案:(1)t=1;(2)return(2*s);3.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。函数fun中给出的语句仅供参考。#includevoidfun(char*a,intn){/*以下代码仅供参考*/inti=0,j,k=0;while(a[k]=='*')k++;/*k为统计*字符个数*/if(k>n){i=n;j=k;/*以下完成将下标为k至串尾的字符前移k-n个位置*/}}main(){chars[81];intn;voidNONO();printf("Enterastring:n");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,n;chars[81];in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fscanf(in,"%d",&n);fun(s,n);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:93.voidfunc(char*a,intn){inti=0,j=0;while(a[i]){if(a[i]!='*'){j=i;break;}i++;}if(j>n){while(a[i]){a[i-j+n]=a[i];i++;}a[i-j+n]=0;}}第45套1.给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中。复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。#include#includeintfun(char*source,char*target){FILE*fs,*ft;charch;/**********found**********/if((fs=fopen(source,___1___))==NULL)return0;if((ft=fopen(target,"w"))==NULL)return0;printf("nThedatainfile:n");ch=fgetc(fs);/**********found**********/while(!feof(___2___))n{putchar(ch);/**********found**********/fputc(ch,___3___);ch=fgetc(fs);}fclose(fs);fclose(ft);printf("nn");return1;}main(){charsfname[20]="myfile1",tfname[20]="myfile2";FILE*myf;inti;charc;myf=fopen(sfname,"w");printf("nTheoriginaldata:n");for(i=1;i<30;i++){c='A'+rand()%25;fprintf(myf,"%c",c);printf("%c",c);}fclose(myf);printf("nn");if(fun(sfname,tfname))printf("Succeed!");elseprintf("Fail!");}答案:(1)`r``(2)fs(3)ft2.给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。#includevoidfun(longs,long*t){intd;longsl=1;*t=0;while(s>0){d=s%10;/************found************/if(d%2=0){*t=d*sl+*t;sl*=10;}/************found************/s=10;}}main(){longs,t;printf("nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ldn",t);}答案:(1)if(d%2==0)(2)s/=10;3.函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。#includevoidfun(inta,intb,long*c){}main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d,%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ldn",c);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\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);}答案:94.voidfun(inta,intb,long*c){*c=a/10*10+a%10*1000+b/10*100+b%10;}第46套1.给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。#includenunsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;/**********found**********/i=__1__;/**********found**********/while(__2__){t=s%10;if(t%2==0){/**********found**********/x=x+t*i;i=__3__;}s=s/10;}returnx;}main(){unsignedlongn=-1;while(n>99999999||n<0){printf("Pleaseinput(0#defineM5/************found************/intfun(intn,intxx[][]){inti,j,sum=0;printf("nThe%dx%dmatrix:n",M,M);for(i=0;ivoidfun(inta,intb,long*c){}main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ldn",c);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\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);}答案:95.voidfun(inta,intb,long*c){*c=a/10*1000+a%10*10+b/10+b%10*100;}第47套1.n给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。#include#includeintfun(char*fname){FILE*fp;inti,n;floatx;if((fp=fopen(fname,"w"))==NULL)return0;for(i=1;i<=10;i++)/**********found**********/fprintf(___1___,"%d%fn",i,sqrt((double)i));printf("nSucceed!!n");/**********found**********/___2___;printf("nThedatainfile:n");/**********found**********/if((fp=fopen(___3___,"r"))==NULL)return0;fscanf(fp,"%d%f",&n,&x);while(!feof(fp)){printf("%d%fn",n,x);fscanf(fp,"%d%f",&n,&x);}fclose(fp);return1;}main(){charfname[]="myfile3.txt";fun(fname);}答案:(1)fp(2)fclose(fp)(3)fname2.给定程序MODI1.C中函数fun的功能是:将n个无序整数从小到大排序。#include#includefun(intn,int*a){inti,j,p,t;for(j=0;ja[i])/************found************/t=i;if(p!=j){t=a[j];a[j]=a[p];a[p]=t;}}}putarr(intn,int*z){inti;for(i=1;i<=n;i++,z++){printf("%4d",*z);if(!(i%10))printf("n");}printf("n");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;printf("nnBeforesorting%dnumbers:n",n);putarr(n,aa);fun(n,aa);printf("nAftersorting%dnumbers:n",n);putarr(n,aa);}答案:(1)for=(i=j+1;ivoidfun(inta,intb,long*c){}main(){inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d,%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ldn",c);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("c:\test\in.dat","r");wf=fopen("c:\test\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);n}fclose(rf);fclose(wf);}答案:96.voidfun(inta,intb,long*c){*c=a/10+a%10*100+b/10*10+b%10*1000;}第48套1.程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典顺序(从大到小)排序。#include#includestructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudenta[],intn){/**********found**********/__1__t;inti,j;/**********found**********/for(i=0;i<__2__;i++)for(j=i+1;j0){t=a[i];a[i]=a[j];a[j]=t;}}main(){structstudents[4]={{10001,"ZhangSan",95,80,88},{10002,"LiSi",85,70,78},{10003,"CaoKai",75,60,88},{10004,"FangFang",90,82,87}};inti,j;printf("nnTheoriginaldata:nn");for(j=0;j<4;j++){printf("nNo:%ldName:%-8sScores:",s[j].sno,s[j].name);for(i=0;i<3;i++)printf("%6.2f",s[j].score[i]);printf("n");}fun(s,4);printf("nnThedataaftersorting:nn");for(j=0;j<4;j++){printf("nNo:%ldName:%-8sScores:",s[j].sno,s[j].name);for(i=0;i<3;i++)printf("%6.2f",s[j].score[i]);printf("n");}}答案:(1)structstudent(2)n-1(3)a[i].name,a[j].name2.给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。#includevoidfun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(maxp){*q=*(q-1);q--;}p[0]=max;}main(){charstr[80];printf("Enterastring:");gets(str);printf("nTheoriginalstring:");puts(str);fun(str);printf("nThestringaftermoving:");puts(str);printf("nn");}答案:(2)while(q>p)3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中。请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。#include#defineN16typedefstructn{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b,intl,inth){}main(){STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh[N],tt;FILE*out;inti,j,n,low,heigh,t;printf("Enter2integernumberlow&heigh:");scanf("%d%d",&low,&heigh);if(heighh[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}for(i=0;i=l&&a[i].s<=h){b[j]=a[i];j++;}}returnj;}第49套1.函数fun的功能是:逆置数组元素中的值。例如,若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。#includevoidfun(inta[],intn){inti,t;/**********found**********/for(i=0;i<___1___;i++){t=a[i];/**********found**********/a[i]=a[n-1-___2___];/**********found**********/___3___=t;}}main(){intb[9]={1,2,3,4,5,6,7,8,9},i;printf("nTheoriginaldata:n");for(i=0;i<9;i++)printf("%4d",b[i]);printf("n");fun(b,9);printf("nThedataafterinvert:n");for(i=0;i<9;i++)printf("%4d",b[i]);printf("n");}答案:(1)n/2(2)i(3)a[n-i-1]2.给定程序MODI1.C中函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。#includenintfun(char*p){intn;/**********found**********/n=*P-'o';p++;while(*p!=0){/**********found**********/n=n*8+*P-'o';p++;}returnn;}main(){chars[6];inti;intn;printf("Enterastring(Ocataldigits):");gets(s);if(strlen(s)>5){printf("Error:Stringtoolonger!nn");exit(0);}for(i=0;s[i];i++)if(s[i]<'0'||s[i]>'7'){printf("Error:%cnotisocataldigits!nn",s[i]);exit(0);}printf("Theoriginalstring:");puts(s);n=fun(s);printf("n%sisconveredtointegernumber:%dnn",s,n);}答案:(1)n=*p-`0`;(2)n=n*8+*p-`0`3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中。请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)#include#include#defineN16typedefstruct{charnum[10];ints;}STREC;STRECfun(STREC*a,char*b){}main(){STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh;charm[10];inti;FILE*out;printf("Theoriginaldata:n");for(i=0;i#defineN9/**********found**********/voidfun(int___1___,intn){inti,j,max,min,px,pn,t;/**********found**********/for(i=0;ia[j]){min=a[j];pn=j;}}if(px!=i){t=a[i];a[i]=max;a[px]=t;if(pn==i)pn=px;}if(pn!=i+1){t=a[i+1];a[i+1]=min;a[pn]=t;}}}main(){intb[N]={1,4,2,3,9,6,5,8,7},i;printf("nTheoriginaldata:n");for(i=0;i#defineSIZE20fun(double*s,double*w){intk,i;doublesum;for(k=2,i=0;i#defineN8typedefstruct{charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}main(){STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},n{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichislowerthan%7.3f:n",n,ave);for(i=0;ih[j].s){t=h[i];h[i]=h[j];h[j]=t;}for(i=0;i#include#defineN5#defineM15voidfun(char(*ss)[M],char*substr){inti,find=0;/**********found**********/for(i=0;i<__1__;i++)/**********found**********/if(strstr(ss[i],__2__)!=NULL){find=1;puts(ss[i]);printf("n");}/**********found**********/if(find==__3__)printf("nDon'tfound!n");}main(){charx[N][M]={"BASIC","Clangwage","Java","QBASIC","Access"},str[M];inti;printf("nTheoriginalstringnn");for(i=0;i/************found************/fun(intx,y,z){intj,t,n,m;j=1;t=j%x;m=j%y;n=j%z;while(t!=0||m!=0||n!=0){j=j+1;t=j%x;m=j%y;n=j%z;}/************found************/returni;}main(){intx1,x2,x3,j;nprintf("Inputx1x2x3:");scanf("%d%d%d",&x1,&x2,&x3);printf("x1=%d,x2=%d,x3=%dn",x1,x2,x3);j=fun(x1,x2,x3);printf("Theminimalcommonmultipleis:%dn",j);}答案:(1)fun(intx,inty,intz)(2)returnj;3.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。#includevoidfun(char*a,intn,inth,inte){}main(){chars[81],*t,*f;intm=0,tn=0,fn=0;voidNONO();printf("Enterastring:n");gets(s);t=f=s;while(*t){t++;m++;}t--;while(*t=='*'){t--;tn++;}while(*f=='*'){f++;fn++;}fun(s,m,fn,tn);printf("Thestringafterdeleted:n");puts(s);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81],*t,*f;intm=0,tn=0,fn=0;in=fopen("c:\test\in.dat","r");out=fopen("c:\test\out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);t=f=s;m=0;tn=0;fn=0;while(*t){t++;m++;}t--;while(*t=='*'){t--;tn++;}while(*f=='*'){f++;fn++;}fun(s,m,fn,tn);fprintf(out,"%sn",s);}fclose(in);fclose(out);}答案:100.voidfun(char*a,intn,inth,inte){inti;for(i=0;i
查看更多

相关文章