资源描述:
《全国计算机等级考试2级C语言上机题库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
此题库为二级上机考试专用第一套:1.1填空给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶函数的数去除,剩余的书按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。voidfun(unsignedlong*n){unsignedlongx=0,i;intt;i=l;while(*n)/**********^ound**********/{t=*n%10;/**********^Qund**********/if(t%2!=0){x=x+t*i;i=i*10;}*n=*n/10;}/**********found**********/*n=x;}1.2改错给定程序MODI1.C中函数fun的功能是:计算n!。doublefun(intn){doubleresult=1.0;/************nd************/if(n==0)return1.0;while(n>1&&n<170)/************found************/result*=n-;returnresult;}1.3程序请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。longfun(char*p){/*以下代码仅供参考*/inti,len,t;/*len为串长,t为正负标识*/longx=0;len=strlen(p);if(p[O]=='-'){t=-l;len-;p++;}elset=l;/*以下完成数字字符串转换为一个数字*/while(*p)x=x*10-48+(*p++);returnx*t;}第二套:2.1填空给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数些到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕匕voidfun(char*s,inta,doublef)।/**********found**********/
1FILE*fp;charch;fp:fopenCfilel.txt",”w“);fprintf(fp,n%s%d%f
2",s,a,f);fclose(fp);fp=fopen(nfilel.txtH,Hrn);printf(u
3Theresult:
4
5n);ch=fgetc(fp);/**********found**********/while(!feof(fp)){/**********^Qund**********/putchar(ch);ch=fgetc(fp);}putchar(
6');fclose(fp);}2.1改错给定程序M0DI1.C中函数ftm的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数fun中指定部位的错误,使它能得出正确的结果。#includevoidfun(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]>=*0'&&s[i]<='9')/**********f[)und**********/s[j++]=s[i];/**********'found**********/s|j】='O';}2.2程序请编写函数ftin,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。voidfun(chars[][N],char*b){intij,n=O;for(i=0;i7fseek(fp,-lL*sizeof(STU),SEEK_END);/**********l^ound**********/fwrite(&n,sizeof(STU),1,fp);fclose(fp);}3.1改错给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。typedefstructaa{intdata;structaa*next;}NODE;NODE*Creatlink(intn,intm){NODE*h=NULL,*p,*s;inti;/**********f^c^und***********/p=(NODE*)malloc(sizeof(NODE));h=p;p->next=NULL;for(i=l;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;p->next=s;p=p->next;}/**********fiound***********/returnh;}3.2程序请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。(有问题)intfun(char*s){intk=1;while(*s){if(*s==,f)k++;s++;}returnk;}第四套:4.1填空程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排列后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfiin(char*filename)
8{FILE*fp;inti,j;STUs[N],t;/**********found**********/fp=fopen(filename,MrbM);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;is[j].sno){t=s[i];s[i]=s|j];s|j]=t;}fp=fopen(filename,nwbM);/**********found**********/fwrite(s,sizeof(STU),N,fp);fclose(fp);)4.1改错给定程序MODILC中函数fun的功能是:在字符串的最前端假如n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。voidfun(chars[],intn){chara[80],*p;inti;/豕*********d***********/p=s;for(i=0;i10)b[M-1]++;elseb[j]++;)}第五套:5.1填空给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成响应的整数、浮点数,然后将其显示在屏幕上。
9voidftin(char*s,inta,doublef){/**********found**********/FILE*fp;charstr[100],strl[100],str2[100];intal;doublefl;fp=fopen("file1.txt'1,nw");fprintf(fp,n%s%d%f
10M,s,a,f);/**********^^und**********/fclose(fp);fp=fopen("file1.txt'1,•'r'1);/**********^Qund**********/fscanf(fp,M%s%s%sM,str,strl,str2);fclose(fp);al=atoi(strl);fl=atof(str2);printf(n
11Theresult:
12
13%s%d%f
14\str,al,fl);}5.1改错给定程序MODIl.C中函数fun的功能是:对N名学生的学习成绩按从高到低的顺序找出前m仁10)名学生出来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首笛子作为函数值返回。typedefstructss{charnum[10];ints;}STU;STU*fun(STUa[],intm){STUb[N],*t;inti,j,k;/**********found**********/t=(STU*)calloc(sizeof(STU),m);for(i=0;ib|j].s)j=i;/*********豕found**********/t[k]=bU];b(j].s=O;}returnt;}5.2程序请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2223445666677899101010o删除后,数组中的内容应该是:2345678910ointfun(inta[],intn){inti,j=1,k=a[0];fbr(i=1;i15returnj;}第六套:6.1填空给定程序中:函数ftm的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:x1=5.000000,x2=3.000000,xl*xl+xl*x2=40.000000odoublefl(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}]**********found**********/doublefun(inti,doublex,doubley){if(i==l)/**********d**********/returnfl(x);else/**********found**********/returnf2(x,y);}6.2改错给定程序MODI1.C中函数fijn的功能是:比较两个字符串,将长的那个字符串的苜地址作为函数值返回。/**********f(*)und**********/char*fun(char*s,char*t){intsl=O,tl=O;char*ss,*tt;ss=s;tt=t;while(*ss){sl++;/**********d**********/ss++;}while(*tt){tl++;/**********found**********/tt++;}if(tl>sl)returnt;elsereturns;}6.3程序请编写函数fun函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移动到字符串的前部。例如,字符串中原由的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是DEFGHIJKABCovoidfunl(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/{inti;chart;t=w[0];fbr(i=0;i16charsex;struct{intyear,month,day;}birthday;floatscore[3];}STU;/**********d**********/voidshow(STUtt){inti;printf(An%d%s%c%d-%d-%dn,tt.num,tt.name,tt.sex,tt.birthday,year,tt.birthday.month,tt.birthday.day);fbr(i=O;i<3;i++)/**********tound**********/printf(n%5.1f,tt.score[i]);printf(,!
17n);}7.2改错给定程序MODILC中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[l]中的数对调。intfun(int*a,intn){inti,m,t,k;for(i=0;i<2;i++){/**********d**********/m=i;for(k=i+l;ka[m])m=k;t=a[i];a[i]=a[m];a[m]=t;}}7.3程序请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(W2)位的整数,函数求出的w的低位的数作为函数值返回。例如:W值为5923,则函数返回923;W值位923则函数返回23。unsignedfun(unsignedw){if(w>10000)w%=10000;elseif(w>1000)w%=1000;elseif(w>100)w%=100;elseif(w>10)w%=10;returnw;}第八套:8.1填空给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数ftm的功能是将该学生的各科成绩都乘以一个系数a。voidshow(STUtt){inti;printf("%d%s:for(i=0;i<3;i++)printf(n%5.1f',tt.score[i]);printf(u
18H);}/**********^^und**********/voidmodify(STU*ss,floata){inti;for(i=0;i<3;i++)/**********&^und**********/ss->score[i]*=a;}
198.1改错给定程序MODI1.C中的函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若K=10,则应输出:3628800。longfun(intk){/************found************/if(k>0)return(k*fun(k-l));/************nd************/elseif(k==0)returnIL;}8.2程序程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[],intn),函数的功能是:使数组左下三角元素中的值乘以n。例IH若n的值为3,a数组中的值为则返回主程序后a数组中的值应为。intfun(inta[][N],intn){inti.j;for(i=0;inext;/**********found**********/while(q){if(p->data>q->data){t=p->data;p->data=q->data;q->data=t;}q=q->next;}p=p->next;}}9.2改错给定程序M0DI1.C中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其他字符不变。voidfun(char*s){/**********found***********/while(*s){if(*s>='A'&*s<=fZ'II*s>=,a,&&*s<=,z,){if(*s=,Z,)elseif(*s==,zr)*s='a';else*s+=1;}/**********^^und***********/
20s++;})9.3程序请编写函数ftm,函数的功能是:移动一维数组中的内容;若猪组中有N个整数,要求把下标从。到P(含P,P小于等于N-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;P的值为3。移动后一维数组中的内容应为:5,6,7,8.9,10,1,2,3,4。voidfun(int*w,intp,intn){inti,j=O,b[N];fbr(i=p+1;i21if(*p!=*)str[i++]=*p;P++;}str[i]=O;}第十一套:11.1填空给定程序,函数fun的功能是将带头结点的单向链表逆置。即若原链表结点数据域从头至尾的数据位:2、4、6、8、10,逆置后,从头至尾数据域依次为:10、8、6、4,2。voidfun(NODE*h){NODE*p,*q,*r;/**********^Qund**********/p=h->next;/*******************/if(p==0)return;q=p->next;p->next=NULL;while(q){r=q->next;q->next=p;/**********d**********/p=q;q=r;}h->next=p;}11.2改错给定程序MODI1.C中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。intfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){P=s;/*********found**********/
22r=t;while(*r)if(*r==*p){r++;p++;}elsebreak;********found**********/if(*r=0)n++;s++;}returnn;}11.1程序fun函数功能:将放在字符串数组中的M个字符串(每用的长度不超过N),将顺序合并组成一个新的字符串。函数fun中给出的语句仅供参考。例如,字符串数组中的M个字符串为AAAACCC则合并后的字符串的内容应是:AAAABBBBBBBCCCo提示:strcat(a,b)功能是将字符串b复制到字符串a的串尾上,成为一个新串。voidfun(chara|M][N],char*b){/*以下代码仅供参考*/inti;*b=0;for(i=0;inext;p->next=NULL;while(q){/**********found**********/r=q->next;q->next=p;p=q;/**********found**********/q=r;}returnp;}12.2改错给定程序MODI1.C中函数fun的功能是:计算s所指字符串中位于奇数位置的字符或ASCH码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。例如:字符串中的数据为:AABBCCDDDEEFF,则输出应当是:ABBCDDEFF,voidfiin(char*s,chart[])
23{inti,j=0;for(i=0;inext;while(p){/**********found**********/q=p->next;while(q){/字*********Rmnd**********/if(p->data>=q->data){t=p->data;p->data=q->data;q->data=t;}q=q->next;)p=p->next;}}13.2改错给定程序MODI1.C是建立一个带头节点的单向链表,并用随机函数为个节点数据域赋值。函数fun的作用是求出单向链表节点(不包括头节点)数据域中的最大值,并且作为函数值返回。
24typedefstruct{intdata;structaa}NODE;fun(NODE{intmax=-l;NODE*p;aa*next;*h)/***********f^ound**********/p=h->next;while(p){if(p->data>max)max=p->data;/***********nd**********/p=p->next;}returnmax;}13.3程序程序定义了MxN的二维数组中数据,按行的顺序依次放到一维数组中。•维数组中数据的个数放在形参n所指的存储单元中。例如:二维数组中的数据为则一维数组中为:333333334444444455555555。voidfun(int(*s)[1OJ,int*b,int*n,intmm,intnn){inti,j,k;fbr(i=0;inext;while(p){if(p->data%2==0)
25sum+=p->data;/***********nd**********/p=p->next;}returnsum;}14.3程序编写函数fun,函数功能:判断字符串是否为回文?若是,函数返回1,主函数输出:YES,否则返回0,主函数输出NO。回文是指顺读和倒读都一样的字符串。例如:字符串LEVEL是回文,而字符串123312就不是回文。#defineN80intfun(char*str){inti,j=strlen(str);for(i=0;i26。待排序字符串已在主程序中赋予。符仍然有序;再把第四个字符插入到前三个中去,#defineN80voidinsert(char*aa){inti,j,n;charch;[**********found**********/n=strlen(aa);for(i=l;i=0)&&(chs;STREC*p;p=h->next;while(p){if(p->s>max)max=p->s;p=p->next;}returnmax;}第十六套:16.1填空给定程序中函数fun的功能:求出行参ss所指字符串中最长的字符串的长度,将其余的字符串右边用字符*补齐,使其与最长的字符串等长。SS所指字符串数组中共有M个字符串,且长度小于N。voidfun(char(*ss)[N]){inti,j,n,len=0;for(i=0;in)n=len;}for(i=0;i27写成大写。(这里的“单词”是指空格隔离开的字符串)例如,若输入“1amastudenttotaketheexamination.",则输出"IaMAstudenTtOtakEthEexamination”。voidfun(char*p){intk=0;for(;*p;p++)if(k){/**********'found***********/if(*p="){k=0;/**********found***********/*(p-l)=toupper(*(p-1));}}elsek=1;}16.1程序请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCH码降序排列。例如,CEAedca排序后CedcEAa。intfun(char*s,intnum){charch;inti,j;fbr(i=1;i<6;i++)for(j=i+1;j<6;j++){if(*(s+i)<*(s+j)){ch=*(s+j);*(s+j)=*(s+i);*(s+i)=ch;}}}第十七套:17.1填空函数fun功能将存放学生的数据的结构体数组,按照姓名的字典序(从下到大)structstudent{longsno;charname[10];floatscore[3];};voidfun(structstudenta[],intn){/**********found**********/structstudentt;intij;/*******************/for(i=0;i0){t=a[i];a[i]=a[j];a|j]=t;}}17.2改错在P所指定的字符串找出ASCH码值最大的字符,将其放在第一个位置上;并将该字符向后顺序移动。例如:ABCDeFGH调用后eABCDFGHofun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(max28q=P+i;}i++;}/**********found**********/while(q>p){*q=*(q-l);q-;)p[0]=max;}17.1程序编写函数fun,其功能:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。例如:输入6069则应把分数在60-69的学生数据进行输出,包括60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b,int1,inth){intij=0;for(i=0;i=1&&a[i].s<=h)b[j++]=a[i];returnj;}第十八套:18.1填空Fun功能:将行参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数的值返回。例如:s指的字符串:asd123fgh543df,处理后:asdfghdfl23543。char*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+l;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;fbr(i=O;i=,a')&&(s[i]<=,z'))ll((s[i]>='A,)&&(s[i]<='Z'))){/******************/t|j]=s[i];j++;)else{p[k]=s[i];k++;}}[**********found**********/for(i=0;i29strcpy(w,s);/************found************/while(*w){p=w;r=tl;while(*r)if(*r==*p){r++;p++;)elsebreak;if(*r=)a=w;w++;}r=t2;while(*r){*a=*r;a++;r++;}}18.1程序函数fun功能:将s所指的字符串中ASCH值为奇数的字符删除,字符串中剩余字符形成一个新申放在t所指的数组中。例如:s所指的内容:ABCDEFG12345,其中字符A的ASCII码为奇数…、1的ASCII码为奇数都应当删除,其他以此类推。最后t所指的数组中的内容:BDF24ovoidfun(char*s,chart[J)
30{inti,j=O;for(i=0;isno=10002;strcpy(a->name,HLiSiM);/**********found**********/for(i=0;i<3;i++)a->score[i]+=1;/**********tound**********/returna;)19.2改错Fun功能:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各zfc在主函数中输入,并存放在一个zfc数组中。#defineN5#defineM81/********************/char*fun(char(*sq)[M]){inti;char*sp:sp=sq[0];for(i=0;i31#defineN10doublefun(double*x){inti,j;doubleav,y[N];av=0;/¥*********Rmnd**********/for(i=0;i=0)num[i]++;}}20.2程序函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:二维数组为则函数值为61。#defineM4#defineN5intfun(inta[M][N]){inttot=0,i,j;for(i=0;i3221.1填空计算行参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据以至x所指数组的后部,平均值作为函数值返回,在主函数输出平均值和移动后的数据。例如:有10个正数:4630324061745154826平均值:30.5移动后输出:4632404548306171526。#defineN10doublefun(double*x){inti,j;doubles,av,y[N];s=0;for(i=0;iav){/**********found**********/y|j++]=x[i];x[i]=-l;}fbr(i=0;i/************found************/upfst(char*p){intk=0;for(;*p;p+4-)if(k){if(*p==,')k=0;}elseif(*p!=**){k=1;*p=toupper(*p);}}21.3程序求出数组周边元素depjz并作为hansz返回主函数中的s例如:a数组中的值为主程序s的值为3.375o#defineN5doublefun(intw[][N]){inti,j,n=0;doublesum=0;
33for(i=0;i34,,,i,sqrt((double)i));printfCAnSucceed!!
35u);/**********found**********/fclose(fp);printf(AnThedatainfile:
36M);/**********found**********/if((fp=fopen(fname,"rn))==NULL)return0;fscanf(fp,"%d%f\&n,&x);while(!feof(fp)){printf(H%d%f
37H,n,x);fscanf(fp/,%d%f\&n,&x);}fclose(fp);return1;)22.2改错Fun的功能:将n个无序整数从小到大排序。fun(intn,int*a){inti,j,p,t;for(j=0;ja[i])/************found************/P=i;if(p!=j){t=a(j];a|j]=a[p];a[p]=t;}}}22.3程序将两个两位的正整数a,b合并成一个整数放在c中。合并方式是:将a数的十位和个位依次放在c数de个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后c=2514。voidfiin(inta,intb,long*c){*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);}main(){inta,b;longc;printf(Inputa,b:M);
38scanf(H%d,%dn,&a,&b);fun(a,b,&c);printfC'Theresultis:%ld
39",c);NONO();}第二十三套:23.1填空找出NxN矩阵中每列元素的最大值,并按顺序依次存放于行参b所指的一维数组中。#defineN4voidfun(int(*a)[N],int*b){inti,j;for(i=0;i/*********found**********/intfun(int*x,int*y){intt;/*********found**********/t=*x;*x=*y;*y=t;}23.3程序求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。#defineMAX100intfun(intlim,intaa[MAX]){/*以下代码仅供参考*/inti,j,k=O;/*其中变量k用于统计素数个数*/for(i=2;i<=lim;i++){/*以下完成判断aa数组中小于或等于lim的素数并统计个数*/for(j=2;j<=(i/2);j++)if(i%j==0)break;if(j>(i/2))aa[k++]=i;)returnk;}第二十四套:24.1填空函数fun功能是将行参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。例如a的数据中学号、姓名、和三门的成绩是:10001、“zhangsan”、95、80、88,修改后输出t中的数据应为:10002、“LiSi”、96、81、890structstudent{
40longsno;charname[10];floatscore[3];};/**********必und**********/structstudentfun(structstudenta){inti;a.sno=10002;/**********found**********/strcpy(a.name,"LiSi1');/***亭******found**********/for(i=0;i<3;i++)a.score[i]+=1;returna;}24.1改错删除数列中值为x的元素。n中存放的是数列中元素的个数。#defineN20fun(int*ajntn,intx){intp=0,i;a[n]=x;while(x!=a[p])P=P+1;/****亭*****found**********/if(p==n)return-1;else{for(i=p;ia[i].s){j=0;b[j++]=a[i];min=a[i].s;}elseif(min==a[i].s)b[j++]=a[i];}returnj;}第二十五套:25.1填空人员的记录由编号和出生年月日组成。编号唯一。找出指定编号人员的数据,作为函数值返回,由主函数输出,若制定编号不存在,返回数据中的编号为空串。
41#defineN8typedefstruct{charnum[10];intyear,month,day;}STU;/**********fiQund**********/STUfun(STU*std,char*num){inti;STUa={””,9999,99,99};for(i=0;i#includevoidfiin(char*s,chart[]){intij=0;for(i=0;inext;
42if(p!=NULL){q=p->next;while(q!=NULL){if(p->data==q->data){p->next=q->next;/******************/free(q);/**********found**********/q=p->next;}else{p=q:/**********^^und**********/q=q->next;}}}}26.2改错用选择法对数组中的n个元素按从小到大的顺序进行排序。#defineN20voidfiin(inta[],intn){inti,j,t,p;for(j=0;j43doublefun(intn){intdoubles,t;/**********found**********/s=0;/字*********Rmnd**********/for(i=l;i<=n;i++){t=2.0*i;/**********^^und**********/s=s+(2.0*i-l)*(2.0*i+l)/(t*t);)returns;}27.1改错统计substr所指zfc在str所指字符串中出现的次数。例如若字符串为aaasIkaaas,子字符串为as,则应输出2。fun(char*str,char*substr){inti,j,k,num=0;/***********nd************/for(i=0;str[i];i++)fbr(j=i,k=0;substr[k]==str|j];k++,j++)***********found************/if(substr[k+1]==*\0*){num++;break;}returnnum;}27.2程序编写函数fun根据以下公式求pi的值(要求满足精度0.0005,即某项小于0.0005时停止迭代)程序运行后,如果输入精度0.0005,则程序输出为3.14。doublefun(doubleeps){doubles=l,t=l./3;intn=l;while(t>=eps){s+=t;n++;t=t*n/(2.0*n+l);}return(s*2.0);}第二十八套:28.1填空统计形参s所指字符串中数字字符出现的次数,并放在形参t所指的变量中,最后在函数中输出。例如:形参s所指的字符串为:abcdef35adgh3kjsd7.结果输出:4。voidfun(char*s,int*t){inti,n;n=0;/¥*********Rmnd**********/for(i=0;s[i]!=NULL;i++)/**********^Qund**********/if(s[i]>=,O,&&s[i]<=V)n++;/**********four)d**********/*t=n;}28.2改错通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a
44中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。
45intfun(int*x,inty){intt;t=*x;*x=y;*************found**************/return(t);)28.1程序求出1--1000之间能被7或11整除、但不能同时被7和11整除的所有整数并将其放在a所指的数组中,通过n返回这些数的个数。voidfun(int*a,int*n){inti;*n=0;for(i=7;i<1000;i++)if(((i%7)==0ll(i%11)==0)&&(i%77)!=0)a[(*n)++]=i;}第二十九套:29.1填空函数fun功能是将行参b所指结构体中数据进行修改,把修改后的数据作为函数值返回主函数进行输出。例如b所指变量t中学号、姓名、“ZhangQi”、93、85、87,修改后输出t中的数据应为:10004、#include#includestructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudent*b){inti;/********************/b->sno=1()004;/**********d**********/strcpy(b・>name,"LiJie");}main(){structstudentt={10002,,'ZhangQiM,93,85,87);inti;printf(H
46
47Theoriginaldata:
48u);printf(H
49No:%ldName:%s
50Scores:n,t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f\t.score[i]);printf(,,
51n);/**********nd**********/fun(&t);printf(M
52Thedataaftermodified:
53");printR'^nNo:%ldName:%s
54Scores:M,t.sno,t.name);for(i=0;i<3;i++)printf(n%6.2f\t.score[i]);printf(,,
55,');}和三门的成绩是:10002、“LiJie“、93、85、870例如,a为2时,平方根值29.2改错应用递归发求a的平方根。求平方根的迭代公式为:为:1.414214。/*********¥found**********/doublefun(doublea,doublexO){doublexl,y;
56x1=(x0+a/x0)/2.0;/¥*********Rmnd**********/if(fabs(xl-x0)>0.00001)y=fun(a,xl);elsey=xl;returny;}29.1程序学牛的记录由学好和成绩组成,N名学生的数据放在主函数中结构体数组s中,编写函数,把高于等于平均分的学生数据放在b所指的数组中,把高于或等于平均分的学生人数通过形参n传回,pjf通过函数值返回。#defineN12typedefstruct{charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){doublet=0;inti;*n=0;for(i=0;it)b[(*n)++]=a[i];returnt;}第三十套:30.1填空函数fun功能是将行参a所指结构体变量中数据赋给函数中的结构体变量bJ进行修改b中的学号和姓名,最后输出修改后的数据。例如a所指变量中学号、姓名、和三门的成绩是:10001、“ZhangSan"、93、80、88,修改后输出b中的数据应为:10002、“LiSi”、95、80、88ostructstudent{longsno;charname[10];floatscore[3];};voidfiin(structstudenta){structstudentb;inti;/**********Rmnd**********/b=a;b.sno=10002;/**********d**********/strq)y(b.name,MLiSiM);printfCAnThedataaftermodified:
57M);printfCAnNo:%ldName:%s
58Scores:",b.sno,b.name);/**********d**********/for(i=0;i<3;i++)printf(w%6.2f0,b.score[i]);printf(AnH);)30.2改错函数功能:从s所指字符串中删除所有小写字母c。voidfun(char*s){inti,j;for(i=j=0;s[i]!=W;i++)if(s[i]!='c)/************found************/s[i++]=s[i];/************f^jund************/30.3程序函数功能:将字符中的前导*号全部移到字符串的尾部。例如,字符串中的内容为:
59*******a*bc*DEF*G****移动后,字符串中的内容应当是:A*BC*DEF*G***********ovoidfun(char*a){/*以下代码仅供参考*/char*p,*q;intn=0;p=a;while(*p==**1)/*统计串头个数n*/{n++;p++;}q=a;/*向前复制字符串,请填写相应的语句完成其功能*/while(*p){*q=*p;p++;q++;}for(;n>0;n-)/*在串尾补n个的*/*q++=+;*q=\0';}第三H^一套:31.1填空对形参s所指字符串中下表为奇数的字符按ASCH码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,行参s所指的字符串为:baawrakjghzlicda,执行后p所指字符数组中的字符串应为:aachjlswo#includevoidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!=W;i++)n++;for(i=l;is[j])t=j;
60if(t!=i){x=s[i];s[i]=s[t];s[t]=x;}}for(i=lj=0;i=num){pi=pi+1;n=n+2;s=-s;/**************nd**************/t=s/n;}pi=pi*4;returnpi;}31.2程序编写函数viodfun(chara[],charb[],intn),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的小标。例如,输入一个字符串:World,然后输入3,则调用该函数后的结果为:Wordo#defineLEN20voidftin(chara|],charb[],intn){strncpy(b,a,n);b[n]=0;strcat(b,a+n+1);}第三十二套:32」填空在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。510#define#define/**********f^jund**********/voidfun(char(*ss)[M],intk){inti=0;/**********nd**********/while(i61t=l;while(t>eps){s+=t;t=t*n/(2*n+l);n++;}/************found************/retum(2*s);}32.2程序使字符串的前导*号不得多于n个:若多于n个,则删除多余的*号;若少于或等于n个,则什么都不做,字符串中间和尾部de*号不删除。例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****若nwei8则字符串仍为*******A*BC*DEF*G****。n的值在主程序中输入。voidfun(char*a,intn){/*以下代码仅供参考*/inti=O,j,k=O;while(a[k]='*')k++;/*k为统计*字符个数*/if(k>n){i=n;j=k;/*以下完成将下标为k至串尾的字符前移k-n个位置*/for(;a|j]!=0;j++)a[i++]=a[j];a[i]=0;}}第三十三套:33.1填空调用函数fun指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回为0.在复制的过程中,把复制的内容输出到终端屏幕。主函数中的源文件名放在变量sfname中,目标文件名放在变量tfname中。intfun(char*source,char*target){HLE*fs,*ft;charch;/**********found**********/if((fs=fopen(source,,'r',))==NULL)return0;if((ft=fopen(target,nwn))==NULL)return0;printf(AnThedatainfile:
62M);ch=fgetc(fs);/**********l^und**********/while(!feof(fs)){putchar(ch);/**********f^jund**********/fputc(ch,ft);ch=fgetc(fs);}fclose(fs);fclose(ft);printf(An
63u);return1;}33.2改错将长整数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍为高位,地位仍在低位。例如,当s中的数为:87653142时,t中的数为:8642»voidfun(longs,long*t)
64{intd;longsl=l;*t=0;while(s>0){d=s%10;/************nd************/if(d%2==0){*t=d*sl+*t;si*=10;}/************found************/s/=10;)}33.1程序将两个两位数的正整数a,b合并形成一个整数放在C中。合并的方式是:将a的十位和个位依次放在c数的十位和千位上,b数的十位和个位依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=5142ovoidfun(inta,intb,long*c){*c=(a%l0)*1000+(b/10)*100+(a/10)*10+(b%10);)第三十四套:34.1填空用筛选法可得到2——n(n小于10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找一下非0数,并从数表中删去该数的所有倍数;依次类推,直到找到的下一个数等于n为止,这样会得到一个序列:2,3,5,7,11,13,17,19,23,函数fun用筛选法找出所有小于等于n的素数,并统计的个数作为函数值返回。intfun(intn){inta[10000],ij,count=0;for(i=2;i<=n;i++)a[i]=i;i=2;while(i65u,n);for(i=2;i<=n;i++)/*******************/if(a[i]!=0){count-H-;printf(count%15?1,%5dM:,,
66%5dM,a[i]);}
67returncount;}34.1改错为一个偶数寻找两个素数,这两素数之和等于该偶数,并将这俩个素数通过形参指针传回主函数。voidfun(inta,int*b,int*c){inti,j,d,y;for(i=3;i<=a/2;i=i+2){y=l;for(j=2;j<=sqrt((double)i);j++)if(i%j=O)y=0;if(y=l){[**************found**************/d=a-i;for(j=2;j<=sqrt((double)d);j++)if(d%j==O)y=0;if(y==l){*b=i;*c=d;}}}}34.2程序计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中键盘给nshuru20后,输出为:s=0583333odoublefun(intn){inti;doublesum=0.0;fbr(i=l;i<=n;i++)if(i%5==0IIi%9=0)/*被5或9整除*/sum+=1.0/i;returnsum;}第三十五套:35.1填空函数fun的功能是建立一个NxN的矩阵,矩阵元素的结构规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为:。#defineN7/**********d**********/voidftin(int(*a)[N]){intij,k,m;if(N%2==0)m=N/2;elsem=N/2+l;fbr(i=O;i68/**********j^jund**********/printf(H%dn,aa[i-1]);}35.1程序编写一个函数从num个字符串中找到最长的一个字符串,并通过形参指针max传回该串地址(注意:主函数中用****作为结果输入的标志,函数fun中给出的语句仅供参考)。fun(char(*a)|81|,intnum,char**max){/*以下代码仅供参考*/inti,k=0,len,maxlen;/*k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长*/maxlen=strlen(a[k]);for(i=1;inext;while(p){(*n)++;p=p->next;}}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48},num;head=creatlist(a);outlist(head);
69/******************/fun(head,&num);printf(Annumber=%d
70M,num);)36.2改错求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从地址开始的字符串;若未找到,则函数值为NULL例如,当字符串的内容为:“abcdabfabcdx”,t中的内容为:"abd"时,ze程序输出未找到信息:notbefound!«char*fun(char*s,char*t){char*p,*r,*a;/************nd************/a=NULL;while(*s){p=s;r=t;while(*r)/示***********^^uncl************/if(*r=*p){r++;p++;)elsebreak;if(*r==,\0')a=s;s++;}returna;}36.3程序将s所指字符串中除了下标为偶数、同时ASCH值也为偶数的字符外,其余的全部都删除:串中剩余字符所形成的一个新申放在t所指的数组中。例如,若s所指zf窜中的内容为:“ABCDEFG123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它依次类推。最后t所指的数组中的内容应是:246”。voidftin(char*s,chart[]){intij=0;for(i=0;i71M);}/**********d**********/if(find==O)printf("
72Don'tfound!
73M);}37.2改错求三个函数的最小公倍数例如,给主函数中的变量xl、x2、x3分别输入15112,则输出结果应当是:330。
74fiin(intx,inty,intz){intj,t,n,m;j=1;t=j%x;m=j%y;n=j%z;while(t!=0llm!=0lln!=0){j=j+l;t=j%x;m=j%y;n=j%z;}/************found************/returnj;}37.1程序只删除字符串前导和尾部的*号,串中之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。例如,字符串的内容为:****A*BC*DEF*G*******删除后A*BC*DEF*G。voidfiin(char*a){intj=0;char*p=a;while(*p){if(*p!='*')a|j-H-]=*p;P++;}a|j]=O;}第三十八套:38.1填空把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[l],a[2]……中,把偶数从数组中删除,奇数个数通过函数返回值。例如,若a所指数组中的数据最初排序为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i75r=a%b;while(r!=O){a=b;b=r;r=a%b;}]************found************/retum(b);}38.1程序函数功能删除字符串中的所有*号。例如字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFGovoidfun(char*a){intj=0;char*p=a;while(*p){if(*p!='**)a(j++|=*p;P++;}a[j]=O;}第三十九套:39.1填空在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串数组共有N个字符串,且串长小于M。#defineN5#defineM10intfun(char(*ss)[M],intk){inti,j=0,len;/**********&^und**********/for(i=0;i76k=i;while(a[i]!=A01)/*以下程序段实现非*字符前移*/{if(a[i]!='*')a[k++]=a[i];i++;}a[k]=\0,;}第四十套:40.1填空给定程序中建立•个带头结点的单向链表,链表中的各节点按结点数据域的数据递增有序链接。函数功能:把形参值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h,intx){SLIST*p,*q,*s;s=(SLIST*)malloc(sizeof(SLIST));/*******************/s->data=x;q=h;p=h->next;while(p!=NULL&&x>p->data){/**********found**********/q=p;p=p->next;}s->next=p;/**********tound**********/q->next=s;}40.2改错功能:计算正整数的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出是:0olongfun(longnum){/************nd************/longk=l;do{k*=num%10;/************nd************/num/=10;}while(num);return(k);)40.3程序功能:计算n门课程的平均分,计算结果作为函数值返回。例如,若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.80。floatfun(float*a,intn){inti;floatave=0.0;fbr(i=0;i77ave=ave/n;returnave;}第四十一套:41.1填空功能:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。例如,有10个整数:46,30,32,40,6,17,45,15,48,26,平均值为:30.500000主函数中输出:m=30.0o#defineN10doublefun(doublex[],double*av){intij;doubled,s;s=0;for(i=0;i78if(s[i]>=,0,&&s[i]<=,9,)[**********found**********/t2U]=s[i];j++;}elsetl[k++]=s[i];t2[j]=0;tl[k]=O;*********d**********/for(i=0;i0){p=*(pstr+i);/**************found**************/(pstr+i)=*(pstr+j);(pstr+j)=p;}}}}42.2程序功能:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串:123412132,输入字符为:1,则输出:3o#defineM81intfun(char*ss,charc){intent=0;char*p=ss;while(*p){if(*p=c)cnt++;P++;}returnent;}第四十三套:43.1填空功能:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后改串在字符串数组中的位置(下标值),未找到泽返回-1。ss所指所指字符串数组中共有N个内容的字符串,且串长小于M。#define#defineintfun(char(*ss)[M],char*t){inti;/**********found**********/for(i=0;i79al=k-a2*10;if((k%3=0&&a2=5)ll(k%3=0&&al==5)){b[i]=k;i++;})/************nd************/returni;}43.1程序功能:将字符串尾部的*号全部删除,前面的和中间的*号不删除。例如,字符串中的内容为:****a*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。voidfun(char*a){char*p=a;while(*p)p++;p—;while(*p=='*')p-;P++;*p=0;}第四十四套:44」填空功能:进行数字字符转换。若形参ch中是数字字符O---'9',则O转换成9,T转换成,8,,2,转换成79转换成,0';若是其他字符则保持不变;并将转换后的结果作为函数值返回。/**********^Qund**********/charfun(charch)
80/**********l^ound**********/if(ch>='0,&&chv='9)/**********found**********/return'9'・(ch・'O);returnch;}44.2改错功能:将p所指字符串的所有字符复制到b中,耍求每复制三个字符之后插入一个空格。例如,在调用fiin函数之前给a输入字符串:ABCDEFGHIJK调用函数之后字符串b中的内容为:ABCDEFGHIJK«voidfun(char*p,char*b){inti,k=0;while(*p){i=l;while(i<=3&&*p){/**********found**********/b[k]=*p;k++;p++;i++;}if(*p){/**********found**********/b[k++]='}}b[k]=*\0';}44.3程序N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头结点。功能。求出平均分,由函数值返回。例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当;78.625ostructslist{doubles;structslist*next;);typedefstructslistSTREC;doublefun(STREC*h{STREC*p=h->next;doubleav=0.0;intn=0;while(p!=NULL){av=av+p->s;)/*由于头结点中没有存放数据*//*对计算成绩平均值的变量进行初始化*/p=p->next;n++;av/=n;returnav;第四十五套:45.1填空功能:/*判断链表是否结束*//*对成绩进行累加*//*到下一个结点位置*//*人数加1*/}/*计算成绩平均值*//*返回成绩平均值*/}将字符串尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。例如,字符串中的内容为:****A*BC*DEF*G*******,若n为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****。若若n为7,删除后,字符串中的内容应当是:****a*bc*def*g*******o#defineN9intfiin(inta[],intn){inti,j;j=0;for(i=0;i81returnj;}45.2改错功能是:“按以下递归公式求函数值。例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。/************found************/fbn(intn){intc;/************found************/if(n==l)c=10;elsec=fun(n-l)+2;retum(c);}45.3程序功能:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。例如,字符串的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为****A*BC*DEF*G*******。n的值在主函数中输入。voidfun(char*a,intn){char*p=a;intj=0;while(*p)p++;p-;/*字符串的长度*/while(*p=='*')p-;/*字符串右的'*'*/P++;while(j82Thestringaftersortingbylength:
83
84");for(i=0;i8546.1改错已知一个数列从第0项开始的前三项分别为0,0,1,以后的各个项都是其相邻的前三项之和。给定程序函数功能:计算并输出该数列前n项的平方跟之和。N的值通过形参传入。例如,当n=10时,程序的输出结果应为:23.197745。/************found************/doublefun(intn){doublesum,sO,si,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;sO=0.0;si=0.0;s2=1.0;for(k=4;k<=n;k++){s=sO+si+s2;sum+=sqrt(s);sO=si;si=s2;s2=s;}/************nd************/returnsum;}46.2程序编写函数他的功能是计算下列级数和,和值由函数值返回。例如,当n=10,x=0.3时,函数值为1.349859clongjc(intn){longs=1;inti;fbr(i=1;i<=n;i++)s*=i;returns;}doublefun(doublex,intn){doubles=1.0,y=x;inti;fbr(i=1;i<=n;i++){s+=y/(double)jc(i);y*=x;}returns;}第四十七套:47.1填空功能:找出形参字符串中出现的频率最高的字母(不区分大小写),并统计其出现的次数。例如,形参s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为:letter'a':3timesletter's':3timesovoidfiin(char*s){intk[26]={0},n,i,max=0;charch;while(*s){if(isalpha(*s)){/**********found**********/ch=tolower(*s);n=ch-'a';/**********於und**********/k[n]+=1;}s++;/**********^^und**********/if(max86Aftercount:
87n);for(i=0;iv26;i++)if(k[i]==max)printf(AnletterV%cV:%dtimes
88",i+'a\k[i]);}
8947.1改错函数fun功能是求S的值例如,当为10时,函数值为:1.533852。/************found************/floatfun(intk){intn;floats,w,p,q;n=1;s=1.0;while(n<=k){w=2.0*n;p=w-1.0;q=w+1.0;s=s*w*w/p/q;n++;}/************found************/returns;}47.3程序函数功能:计算并输出下列级数和例如:当n=10时,函数值为:0.909091。doublefun(intn){doubles=0.0;inti;for(i=1;i<=n;i++)s=s+1.0/(i*(i+1));returns;}第四十八套:48.1填空函数功能:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数的值返回。例如,形参s所指的字符串为:abs5defl26jkm8,程序执行后的输出结果为22。intfun(char*s){intsum=0;while(*s){/******************/if(isdigit(*s))sum+=*s-48;/**********found**********/S++;}/¥*********Rmnd**********/returnsum;}48.2改错函数功能:计算小于形参最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。intfun(intk){intm=0,mc=0,j;while((k>=2)&&(me<10))/************^Qund************/if((k%13==0)ll(k%17==0)){m=m+k;mc++;}k--;}returnm;/***********nd************/}48.3程序功能:求小于形参n同时能被3与7整除的所有自然数之和的平方根,作为函数值返回。例如若n为1000时,程序输出应为:s=153.909064。
90doublefun(intn){doublesum=0.0;inti;fbr(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);}第四十九套:49.1填空功能:将形参s所指字符串中的所有ASCII码值小于97的字符存入形参t所指字符组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。例如,形参s所指的字符串为:Abc@lx56*,程序执行后的t所指的字符数组的字符串应为:A@156*«intfiin(char*s,char*t){intn=0;while(*s){if(*s<97){/**********found**********/*(t+n)=*s;n++;}/字*********Rmnd**********/s++;)*(t+n)=0;/**********於und**********/returnn;}49.2改错功能:由形参给定n个实数,输出平均值,并统计在平均值以上的(平均值)实数个数。例如n=8时,输入:193.199,195.673,195.757,196.757,196.051,196.092,196.596,196.579,196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5.
91intfun(floatx|],intn)/************nd************/intj,c=0;floatxa=0.0;for(j=0;j92M,xa);for(j=0;j=xa)C++;returnc;}49.2程序函数功能:根据以下公式求p的值,结果由函数数值带回。M与n为两个正整数且要求m>n,例如:m=12,n=8时,运行结果为495.000000。longjc(intm){longs=l;inti;fbr(i=l;i<=m;i+4-)s=s*i;returns;}floatfun(intm,intn){floatp;p=1.0*jc(m)/jc(n)/jc(m-n);returnp;}第五十套:50.1填空功能:有NxN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,N=3,有下列矩阵:计算结果为.#defineN4/**********d**********/voidfun(int(*t)[N]){inti,j;for(i=l;i93P++;)a|j]=O;}51.1:填空Fun:计算出形参s所指字符串中包含的单词个数,作为函数值返回,为便于统计,规定各单词之间用空格隔开。如形参s所指的字符串为:ThisisaClanguageprogram,函数的返回值为6ointfun(char*s){intn=0,flag=O;while(*s!=W){if(*s!=’‘&&flag=0){n++;flag=l;}if(*s=,')flag=0;s++;}returnn;}51.2:改错Fun:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。如输入8名学生的成绩:80.5607290.59851.58864,则低于平均分的学生人数为:4(平均分为:75.5625)o#defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;for(k=0;k94{inti,pos=0,max=*s;for(i=1;i=l;j-)t[i]Dl=t[i]U-l];/**********found**********/t[i][0]=x;}}52.2:改错Fun:计算并输出下列级数的前N项之和,直到大于q为止,q的值通过形参传入。,如q的值为50.0,则函数值为:49.394948。doublefun(doubleq){intn;doubles,t;n=2;s=2.0;while(s<=q){t=s;/************nd************/s=s+(n+l.)/n;n++;}printf(Mn=%d
95H,n);returnt;}523设计Fun:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)定义为:F(0)=0,F⑴=l,F(n)=F(n・l)+F(n・2),如当t=1000时,函数值为1597。#includeintfun(intt){intfO=0,fl=1,f;do{
96f=ro+fi;fO=fl;fl=f;}while(fdoublefun(doublex){doublef,t;intf=1.0+x;/**********f^c^und**********/t=x;n=1;do{n++;/**********found**********/t*=(-1.0)*x/n;f+=t:/**********found**********/while(fabs(t)>=le-6);returnf;}53.2:改错Fun:求整数x的y次方的低3位值。如整数5的6次方为15625,此值的低3位值为625。longfiin(intx,inty,long*p){inti;longt=l;/**************^ound**************/for(i=l;i<=y;i++)t=t*x;*p=t;/**************found**************/t=t%1000;returnt;}53.3:设计Fun:计算并输出当xv0.97时下列多项式的值,直到为止。如在主函数中从键盘给x输入0.21后,输出为:s=l.100000.#includedoublefun(doublex){intn=l;/*循环计数*/doublesn=1;/*累计数*/doublexn=l,xnl=0;/*x的n值,以及x的n-1值;*/while(fabs(xn-xnl)>=0.000001)/*绝对值是否满足条件*/{xn=xn*x*(0.5-n+l)/n;/*表达式分解以后xn=(xn-1)*x*(0.5-n+1)/n*/n+=l;sn+=xn;/*sn累力口hxn*/}return(sn);}
9754.1:填空Fun:计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。#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->data;/**********found**********/p=p->next;}returns;}54.2:改错Fun:将s所指字符串中出现的与tl所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。要求tl和t2所指字符串的长度相同。如当s所指字符串中内容为:“abcdabfabhl所指子串中的内容为:“ab”,t2所指子串中的内容为:“99”时,结果在w所指的数组中的内容应为:“99cd99f99”。#includeintfun(char*s,char*tl,char*t2,char*w){inti;char*p,*r,*a;strcpy(w,s);while(*w){p=w;r=tl;/************found************/while(*r)if(*r==*p){r++;p++;)elsebreak;if(*r=='\O'){a=w;r=t2;while(*r){/************^^)und************/*a=*r;a++;r++;}w+=strlen(t2);}elsew++;}}54.3:设计
98Fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。如当s所指字符串中的内容为“ABCDEFGHIJK”,在t所指数组中的内容应是:“BDFHJ”。#includevoidfun(char*s,chart[]){inti,j=0;for(i=1;i#includeintfun(char*s){char*lp,*rp;/**********fiQund**********/lp=s;rp=s+strlen(s)-l;while((toupper(*lp)==toupper(*rp))&&(lp