2013C语言上机题库

2013C语言上机题库

ID:82949547

大小:163.72 KB

页数:91页

时间:2023-09-25

上传者:灯火阑珊2019
2013C语言上机题库_第1页
2013C语言上机题库_第2页
2013C语言上机题库_第3页
2013C语言上机题库_第4页
2013C语言上机题库_第5页
2013C语言上机题库_第6页
2013C语言上机题库_第7页
2013C语言上机题库_第8页
2013C语言上机题库_第9页
2013C语言上机题库_第10页
资源描述:

《2013C语言上机题库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

第一套:1.1填空给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶函数的数去除,剩余的书按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。voidfun(unsignedlong*n){unsignedlongx=0,i;intt;i=l;while(*n)/**********^^und**********/{t=*n%10;/**********f^ound**********/if(t%2!=0){x=x+t*i;i=i*10;}*n=*n/10;}/**********f^c^und**********/*n=x;}1.2改错给定程序MODI1.C中函数fun的功能是:计算n!。doublefun(intn){doubleresult=1.0;/************found************/if(n==0)return1.0;while(n>l&&n<170)/***********nd************/result*=n-;returnresult;}1.3程序请编写一个函数fun,它的功能是:将一个数字字符串转换为ー个整数(不得调用C语言提供的将字符串转换为整数的函数)。longfun(char*p){/・以下代码仅供参考*/inti,len,t;/*len为串长,t为正负标识・/longx=0;len=strlen(p);if(p[0]==*J){t=-l;len--;p++;}elset=l;/・以下完成数字字符串转换为ー个数字・/while(*p)x=x*10-48+(*p++);returnx*t;}第二套:2.1填空给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数些到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。voidfun(char*s,inta,doublef){/**********found**********/FILE*fp;

1charch;fp二fopen("filel.txド,"w");fprintf(fp,n%s%d%f

2",s,a,f);fclose(fp);fp=fopen("file1.txt",''r'1);printf(u

3Theresult:

4

5");ch=fgetc(fp);/**********found**********/while(!feof(fp)){/**********found**********/putchar(ch);ch=fgetc(fp);)putchar(1

6');fclose(fp);}2.1改错给定程序MODI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数fun中指定部位的错误,使它能得出正确的结果。#includevoidfun(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)if($[i]>=O&&s[i]<='9')ノ豕*********tound**********/s|j++]=s[i];/*********原found********ホ*/s[j]=、〇';}2.2程序请编写函数ftin,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到ー个字符串中。voidfun(chars[][N],char*b){inti,j,n=O;for(i=0;i

7/*********¥found**********/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;/**********found***********/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;}/**********f(*)und***********/returnh;}3.2程序请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。(有问题)intfiin(char*s){intk=1;while(*s){if(*s==')k++;s++;}returnk;}第四套:4.1填空程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排列后,再用二进制方式把排序后的学生数据输出到filename所指的文件屮,覆盖原来的文件内容。#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfiin(char*filename){FILE*fp;inti,j;

8STUs[N],t;/**********l^ound**********/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,Mwb");/****求*來***^Qund**********/fwrite(s,sizeof(STU),N,fp);fclose(fp);}4.1改错给定程序MODI1.C中函数fun的功能是:在字符串的最前端假如n个・号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。voidfun(chars[],intn){chara[80],*p;inti;/**********found***********/p=s;for(i=0;i10)b[M-1]++;elseb[j]++;}}第五套:5.1填空给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成响应的整数、浮点数,然后将其显示在屏幕ヒ。voidfiin(char*s,inta,doublef)

9{/**********^ound**********/FILE*fp;charstr[100],strl[100],str2[100];intal;doublefl;fp=fopen("file1.txt'1,nwn);fprintf(fp,n%s%d%f

10';s,a,f);/**********^Qund**********/fclose(fp);fp=fopen("file1.txt“,"r");/**********f^ound**********/fscanf(fp,"%s%s%s",str,strl,str2);fclose(fp);al=atoi(strl);fl=atof(str2);printf("

11Theresult:

12

13%s%d%f

14",str,al,fl);}5.1改错给定程序MODU.C中函数fun的功能是:对N名学生的学习成绩按从高到低的顺序找出前m(<10)名学生出来,并将这些学生数据存放在ー个动态分配的连续存储区中,此存储区的首笛子作为函数值返回。typedefstruct{charnum[10];ints;}STU;STU*ftin(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]=b[j];b|j].s=O;}returnt;}5.2程序请编写函数fun,函数的功能是:删去ー维数组中所有相同的数,使之只剩•个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,--维数组中的数据是:2223445666677899101010〇删除后,数组中的内容应该是:2345678910ointfun(inta[],intn){inti,j=l,k=a[O];fbr(i=1;i

15a[j]=O;returnj;}第六套:6.1填空给定程序中:函数ftin的功能是根据形参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)/**********found**********/returnfl(x);else/**********found**********/returnf2(x,y);}6.2改错给定程序MODI1.C中函数fijn的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。/**********tound**********/char*fun(char*s,char*t){intsl=O,tl=O;char*ss,*tt;ss=s;tt=t;while(*ss){sl++;/**********f^und**********/ss++;}while(*tt){tl++;/**********found**********/tt++;}if(tl>sl)returnt;elsereturns;}6.3程序请编写函数fun函数的功能是:移动字符串中的内容,移动的规则如ド:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移动到字符キ的前部。例如,字符串中原由的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是DEFGHIJKABCovoidfun1(char*w)/*本函数的功能是将字符串中字符循环左移ー个位置・/{inti;chart;t=w[0];fbr(i=O;i

16}STU;/******************/voidshow(STUtt){inti;printf(、n%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++)/**********found**********/printf(w%5.ir,tt.score[i]);printf('へn");}7.2改错给定程序MODU.C中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[〇]中的数对调、次最大数和a[l]中的数对调。intfun(int*a,intn){inti,m,t,k;for(i=0;i<2;i++){/**********d**********/m=i;for(k=i+1;kvn;k++)/**********found^*********/if(a|k]>a[m|)m=k;t=a[i];a[i]=a[m];a[m]=t;}}7.3程序请编写ー个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(W2)位的整数,函数求出的w的低n・l位的数作为函数值返回。例如: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门课的成绩。函数fun的功能是将该学生的各科成绩都乘以ー个系数a。voidshow(STUtt){inti;printf("%d%s:",tt.mim,tt.name);for(i=0;i<3;i++)printf(n%5.lf',tt.score[i]);printf(n

17H);}/**********^Qund**********/voidmodify(STU*ss,floata){inti;for(i=0;i<3;i++)]**********found**********/ss->score[i]*=a;}8.2改错给定程序MODI1.C中的函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若K=10,则应输出:3628800。longfun(intk)I/************Cund************/if(k>0)

18return(k*fun(k-l));/************nd************/elseif(k=0)returnIL;)8.1程序程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[],intn),函数的功能是:使数组左下三角元素中的值乘以n。例如:若n的值为3,a数组中的值为则返回主程序后a数组中的值应为。intfun(inta[]|N|,intn){inti,j;for(i=0;inext;/**********found^5*********/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改错给定程序MODI1.C中函数fun的功能是:将§所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其他字符不变。voidfun(char*s)(/**********found***********/while(*s){if(*s>='A'&*s<=,Z,II*s>=,a,&&*s<=,z,){if(*s=T)*s=Ar;elseif(*s=='z)*s=,a,;else*s+=1;}/**********found***********/s++;}}9.3程序请编写函数fun,函数的功能是:移动ー维数组中的内容:若猪组中有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。

19voidfun(int*w,intp,intn){inti,j=0,b|N];fbr(i=p+1;i

20域从头至尾的数据位:2、4、6、8、10,逆置后,从头至尾数据域依次为:10、8、6、4、2。voidfiin(NODE*h){NODE*p,*q,*r;[**********found**********/p=h->next;/*******************/if(p==0)return;q=p->next;p->next=NULL;while(q){r=q->next;q->next=p;/**********found**********/p=q;q=r;}h->next=p;}11.1改错给定程序MODI1.C中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。intfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){P=s;/*********nd**********/r=t:

21while(*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;/**********j^und**********/q=r;}returnp;}12.2改错给定程序MODI1.C中函数fun的功能是:计算s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。例如:字符串中的数据为:AABBCCDDDEEFF,则输出应当是:ABBCDDEFF。voidfun(char*s,chart[]){inti,j=0;for(i=0;i

2212.1程序程序定义了MXN的二维数组,按列的顺序依次放到ー维数组中。例如:二维数组中的数据为则ー维数组中为:334455334455334455334455。同2.3voidfun(int(*s)[10],int*b,int*n,intmm,intnn){/・以下代码仅供参考*/inti,j,np=O;/*np用作b数组下标・/fbr(i=0;inext;while(p){/*********豕found**********/q=p->next;while(q){/ギ*********^Qund**********/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的作用是求出单向链表节点(不包括头节点)数据域中的最大值,并且作为函数值返回。typedefstructaa{intdata;structaa*next;}NODE;fun(NODE*h){intmax=-l;NODE*p;/***********found**********/

23p=h->next;while(p){if(p>>data>max)max=p->data;/***********found**********/p=p->next;}returnmax;}13.2程序程序定义了MXN的二维数组中数据,按行的顺序依次放到ー维数组中。ー维数组中数据的个数放在形参n所指的存储单元中。例如:二维数组中的数据为则ー维数组中为:333333334444444455555555〇voidfun(int(*s)[10],int*b,int*n,intmm,intnn){intij,k;for(i=0;inext;while(p)

24{if(p->data%2==0)sum+=p->data;/***********nd**********/p=p->next;}returnsum;}14.1程序编写函数fun,函数功能:判断字符串是否为回文?若是,函数返回1,主函数输出:YES,否则返回0,主函数输出NO。回文是指顺读和倒读都一样的字符串。例如:字符串eEVEL是回文,而字符串123312就不是回文。#defineN80intfun(char*str){inti,j=strlen(str);for(i=0;i

25/**********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;i

26k=1;}16.1程序请编写函数ftin,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。例如,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功能将存放学生的数据的结构体数组,按照姓名的字典序(从下到大)排序。

27structstudent{longsno;charname[10];floatscore[3];};voidfun(structstudenta[],intn)ノ**********心und**********/structstudentt;intij;/**********^ound**********/for(i=0;i0){t=a[i];a[i]=a[j];a[j]=t;}}17.1改错在P所指定的字符串找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符向后顺序移动。例如:ABCDeFGH调用后eABCDFGH,fun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(maxp){*q=*(q-l);q-;)p[0]=max;}行输出,#definetypedef{charint17.2程序编写函数fun,其功能:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。例如:输入6069则应把分数在60-69的学生数据进包括60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。structnum[10];N16}STREC;intfun(STREC*a,STREC*b,int1,inth){inti,j=0;for(i=0;i=1&&a[i].s<=h)b[j++]=a[i];returnj;}第十八套:18.1填空Fun功能:将行参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,

28处理后新字符串的首地址作为函数的值返回。例如: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;for(i=O;i=,a')&&(s[i]<=,z'))ll((s[i]>=*A,)&&(s[i]<=,Z,))){/**********found**********/t|j]=s[i];j++;)else{p[k]=s[i];k++;})/**********found**********/for(i=0;i

29longsno;charname[10];floatscore[3];};/**********found**********/structstudent*fun(structstudent*a){inti;a->sno=10002;strcpy(a->name,"LiSi'1);/**********^Qund**********/for(i=0;i<3;i++)a->score[i]+=1;/**********found**********/returna;}19.1改错Fun功能:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各zfc在主函数中输入,并存放在ー个zfc数组中。#defineN5#defineM81/**********f^und**********/char*fun(char(*sq)|M]){inti;char*sp;sp=sq[0];for(i=0;i

30i=0;while(i=0)num[i]++;}}20.2程序函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:二维数组为则函数值为61。#defineM4#defineN5intfun(inta[M][N]){inttot=0,i,j;for(i=0;iav){/**********found**********/

31y[j++]=x[i];x[i]=-l;}for(i=0;i/************j^jund************/upfst(char*p){intk=0;for(;*p;p++)if(k){if(*p==")k=0;}elseif(*p!=**){k=1;*p=toupper(*p);}}21.2程序求出数组周边元素depjz并作为hansz返回主函数中的s例如:a数组中的值为主程序s的值为3.375.#defineN5doublefun(intw[][N]){inti,j,n=0;doublesum=0;for(i=0;i

32sum+=w[O][i]+w|N-l][i];n+=2;}for(i=1;i

33,',i,sqrt((double)i));printf(AnSucceed!!

34°);/**********found**********/fclose(fp);printf('ヽnThedatainfile:

35n);/**********found**********/if((fp=fopen(fname;'rH))==NULL)return0;fscanf(fp,u%d%f;&n,&x);while(!feof(fp)){printf("%d%f

36",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=O;ja[i])/************found************/p=l;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。voidfun(inta,intb,long*c){*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);}main(){inta,b;longc;printf(HInputa,b:M);

37scanf(M%d,%dM,&a,&b);fun(a,b,&c);printf('Theresultis:%ld

38n,c);NONO();}第二十三套:23.1填空找出NXN矩阵中每列元素的最大值,并按顺序依次存放于行参b所指的ー维数组中。#defineN4voidfun(int(*a)[N],int*b){intij;for(i=0;i/*********f^)und**********/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用于统计素数个数・/fbr(i=2;i<=lim;i++)(/・以下完成判断aa数组中小于或等于lim的素数并统计个数・/foiti=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、89。structstudent{longsno;charname[10];floatscore[3];};/**********found**********/structstudentfun(structstudenta)

39{inti;a.sno=10002;/**********^Qund**********/strcpy(a.name,uLiSiu);/**********^ound**********/fbr(i=O;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+l;/**********^^und**********/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填空人员的记录由编号和出生年月日组成。编号唯一。找出指定编号人员的数据,作为函数值返回,由主函数输出,若制定编号不存在,返回数据中的编号为空串。#defineN8

40typedefstruct{charnum[10];intyear,month,day;}STU;/ギ******ホ**Rmnd**********/STUfun(STU*std,char*num){inti;STUa={””,9999,99,99};for(i=0;i#includevoidfiin(char*s,chart[]){inti,j=0;for(i=0;i

41}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(q);/**********d**********/q=p->next;}else{p=q:/**********^Qund**********/q=q->next;}}}}26.2改错用选择法对数组中的n个元素按从小到大的顺序进行排序。#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j

42{intdoubles,t;/**********l^ound**********/s=0;/**********found**********/fbr(i=l;i<=n;i++){t=2.0*i;/**********^Qund**********/s=s+(2.0*i-1)*(2.0*i+1)/(t*t);}returns;}27.1改错统计substr所指zfc在str所指字符串中出现的次数。例如若字符串为aaasIkaaas,子字符串为as,则应输出2。fun(char*str,char*substr){inti,j,k,num=0;/示***********^^)und************/for(i=0;str|i|;i++)fbr(j=i,k=O;substr[k]==str|j];k++j-H-)[************found************/if(substr[k+l]==,\O,){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++)ノ豕*********d**********/if(s(i|>=,0,&&s[i]<='91)n++;/**********found**********/*t=n;}28.2改错通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。intfun(int*x,inty)

43{intt;t=*x;*x=y;return(t);}28.1程序求出1-—1000之间能被7或11整除、但不能同时被フ和11整除的所有整数并将其放在a所指的数组中,通过n返回这些数的个数。voidfun(int*a,int*n){inti;*n=0;for(i=7;i<1000;i++)if(((i%7)==011(i%ll)==0)&&(i%77)!=0)a[(*n)++]=i;}第二十九套:29.1填空函数fun功能是将行参b所指结构体中数据进行修改,把修改后的数据作为函数值返回主函数进行输出。例如b所指变量t中学号、姓名、和三门的成绩是:10002、“ZhangQi"、93、85、87,修改后输出t中的数据应为:10004、“LiJie"、93、85、87〇#include#includestructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudent*b){inti;/********************/b->sno=10004;/**********d**********/strcpy(b->name,"LiJie");}main(){structstudentt={10002JZhangQi”,93,85,87};inti;printf(H

44

45Theoriginaldata:

46u);printf("

47No:%ldName:%s

48Scores:",t.sno,t.name);for(i=0;i<3;i++)printf("%6.2fM,t.score[i]);printfCAn1');/**********nd**********/fun(&t);printf("

49Thedataaftermodified:

50");printf("

51No:%ldName:%s

52Scores:M,t.sno,t.name);for(i=0;i<3;i++)printf(n%6.2fn,t.score[i]);printf(''n");}29.2改错应用递归发求a的平方根。求平方根的迭代公式为:例如,a为2时,平方根值为:1.414214o/**********^ound**********/

53doublefun(doublea,doublexO){doublexl,y;x1=(x0+a/x0)/2.0;/**********found**********/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所指结构体变量中数据赋给函数中的结构体变量b,樹行修改b中的学号和姓名,最后输出修改后的数据。例如a所指变量中学号、姓名、和三门的成绩是:10001、“42门8$311”、93、80、88,修改后输出b中的数据应为:10002、“LiSi”、95、80、88©structstudent{longsno;charname[10];floatscore[3];};voidfun(structstudenta){structstudentb;int/**********nd**********/b=a;b.sno=10002;/**********found**********/strcpy(b.name,"LiSi");printf('ヽnThedataaftermodified:

54n);printf('ヽnNo:%ldName:%s

55Scores:",b.sno,b.name);/**********j^Qund**********/for(i=0;i<3;i++)printf("%6.2f",b.score[i]);printf(AnH);}30.2改错函数功能:从s所指字符串中删除所有小写字母c。

56voidfun(char*s){intij;for(i=j=0;s[i]!=\0';i++)if(s[i]!=O/***********nd************/s|j++]=s[i];/************nd************/S[j]=、。’;}30.2程序函数功能:将字符屮的前导・号全部移到字符串的尾部。例如,字符串中的内容为:*******a*bc*DEF*G****移动后,字符串中的内容应当是:A*BC*DEF*G***********〇voidfun(char*a){/・以下代码仅供参考・/char*p,*q;intn=0;p=a;while(*p=='*')/・统计串头球’个数n*/{n++;p++;}q=a;/・向前复制字符串,请填写相应的语句完成其功能・/while(*p){*q=*p;p++;q++;}for(;n>0;n-)/*在串尾补n个I*,*/*q++='*';*q=、〇’;}第三十一套:31.1填空对形参s所指字符串中下表为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,行参s所指的字符串为:baawrakjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。#includevoidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!=\0';i++)n++;for(i=l;is[j])t=j;if(t!=i)

57{x=s[i];s[i]=s[t];s[t]=x;}}for(i=l,j=0;i=num){pi=pi+1;n=n+2;s=-s;/**************^ound**************/t=s/n;}pi=pi*4;returnpi;}31.3程序编写函数viodfun(chara[],charb[],intn),其功能是:删除ー个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的小标。例如,输入一个字符串:World,然后输入3,则调用该函数后的结果为:Wordo#defineLEN20voidfun(chara[],charb[],intn){strncpy(b,a,n);b[n]=0;strcat(b,a+n+1);}第三十二套:32.1填空在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。#defineN5#defineM10/**********f^)und**********/voidfun(char(*ss)[M],intk){inti=0;/**********nd**********/while(i

58while(t>eps){s+=t;t=t*n/(2*n+l);n++;}/***********nd************/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,失败时返回为〇.在复制的过程中,把复制的内容输出到终端屏幕。主函数中的源文件名放在变量sfname中,目标文件名放在变量tfname中。intfun(char*source,char*target){FILEcharch;/**********found**********/if((fs=fopen(source,,,r,'))=NULL)return0;if((ft=fopen(target,MwM))==NULL)return0;printf("

59Thedatainfile:

60M);ch=fgetc(fs);/ギ******ホ**Rmnd**********/while(!feof(fs)){putchar(ch);/**********found^5*********/fputc(chjt);ch=fgetc(fs);}fclose(fs);fclose(ft);printfCAoXn0);return1;}33.2改错将长整数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍为高位,地位仍在低位。例如,当s中的数为:87653142时,t中的数为:8642〇voidfun(longs,long*t){intd;longsl=l;

61*t=0;while(s>0){d=s%10;/************f^jund************/if(d%2=0){*t=d*sl+*t;si*=10;}/************^^)und************/s/=10;}}33.2程序将两个两位数的正整数a,b合并形成一个整数放在C中。合并的方式是:将a的十位和个位依次放在c数的十位和千位上,b数的十位和个位依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=5142ovoidfun(inta,intb,long*c){*c=(a%10)*l000+(b/l0)*100+(a/10)*10+(b%10);)第三十四套:34.1填空用筛选法可得到2——n(n小于10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成。);接着从数表中找一下非O数,并从数表中删去该数的所有倍数:依次类推,直到找到的下ー个数等于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(i

62u,n);for(i=2;i<=n;i++)/**********R)und**********/if(a[i]!=0){count++;printf(count%15?n%5dM:n

63%5dn,a[i]);}returncount;}

6434.1改错为ー个偶数寻找两个素数,这两素数之和等于该偶数,并将这俩个素数通过形参指针传回主函数。voidfun(inta,int*b,int*c){inti,j,d,y;for(i=3;i<=a/2;i=i+2){/ギ*************found**************/y=l;for(j=2;j<=sqrt((double)i);j++)if(i%j=O)y=0;if(y=l){]**************nd**************/d=a-i;for(j=2;j<=sqrt((double)d);j+4-)if(d%j==O)y=0;if(y==l){*b=i;*c=d;}}}}34.2程序计算并输出n(包括。)以内能被5或9整除的所有自然数的倒数之和。例如,在主函数中键盘给nshuru20后,输出为:§=0583333。doublefun(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/**********found**********/voidfun(int(*a)[N]){inti,j,k,m;if(N%2==0)m=N/2;elsem=N/2+l;fbr(i=O;i

65{intaa[20],i;for(i=0;m;i++)(/**********nd**********/aa[i]=m%k;m/=k;}for(;i;i-)/**********d**********/printf("%d”,aa[i-l]);}35.1程序编写・个函数从num个字符串中找到最长的ー个字符串,并通过形参指针max传回该串地址(注意:主函数中用****作为结果输入的标志,函数fun中给出的语句仅供参考)。fun(char(*a)[8l],intnum,char**max){/・以下代码仅供参考*/inti,k=0,len,maxlen;/*k为a数组中最长串所在元素的下标,初始为0,maxlen为其串长・/maxlen=strlen(a[k]);fbr(i=l;inext;while(p){(*n)++;/**********f(*)und**********/p=p->next;}}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48},num;head=creatlist(a);outlist(head);/**********d**********/

66fun(head,&num);printf(Annumber=%d

67n,num);)36.2改错求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从地址开始的字符串;若未找到,则函数值为NULL例如,当字符串的内容为:“abcdabfabcdx”,t屮的内容为:"abd”时,ze程序输出未找到信息:notbefound!〇char*fun(char*s,char*t){char*p,*r,*a;/************found************/a=NULL;while(*s){p=s;r=t;while(*r)/************^Qund************/if(*r=*p){r++;p++;}elsebreak;if(*r==AO1)a=s;s++;}returna;}36.3程序将s所指字符串中除了下标为偶数、同时ASCH值也为偶数的字符外,其余的全部都删除;串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指zf窜中的内容为:“ABCDEFG123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它依次类推。最后t所指的数组中的内容应是;‘'246”。voidfun(char*s,chart[]){inti,j=0;for(i=0;i

68M);}/**********^Qund**********/if(find=O)printf("

69Don'tfound!

70");}37.2改错求三个函数的最小公倍数例如,给主函数中的变量xl、x2、x3分别输入15112,则输出结果应当是:330。/************nd************/

71fun(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;)/***********nd************/returnj;}37.1程序只删除字符串前导和尾部的・号,串中之间的・号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导・号的个数,形参e给出了字符串屮最后・号的个数。例如,字符串的内容为:****A*BC*DEF*G*******册リ除后A*BC*DEF*Govoidfiin(char*a){intj=0;char*p=a;while(*p){if(*p!=***)a[j++]=*p;P++;}a[j]=O;)第三十八套:38.1填空把形参a所指数组中的奇数按原顺序依次存放到a[〇]、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;i

72t=a;a=b;b=t;}r=a%b;while(r!=O){a=b;b=r;r=a%b;}/************砧und************/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=O,len;/**********found**********/for(i=0;i

73voidfun(char*a)(/・以下代码仅供参考*/inti=0,k;while(a[i]="*')i++;k=i;while(a[i]!=A0')/*以下程序段实现非・字符前移*/{if(a[i]!='*')a[k++]=a[i];i++;}a[k]=へ。';}第四十套:40.1填空给定程序中建立一个带头结点的单向链表,链表中的各节点按结点数据域的数据递增有序链接。函数功能:把形参值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h,intx){SLIST*p,*q,*s;s=(SLIST*)malloc(sizeof(SLIST));/**********found**********/s->data=x;q=h;p=h->next;while(p!=NULL&&x>p->data){/*********豕found**********/q=p;p=p->next;}s->next=p;/ギ*********^Qund**********/q->next=s;}40.2改错功能:计算正整数的各位上的数字之积。例如,若输入:252,则输出应该是:20o若输入:202,则输出是:〇〇longfun(longnum){/************found************/longk=l;do{k*=num%10;/************^^)und************/num/=10;}while(num);return(k);}40.3程序功能:计算n门课程的平均分,计算结果作为函数值返回。例如,若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值为:71.800floatfun(float*a,intn)

74{inti;floatave=0.0;fbr(i=O;i

75{inti,j=0,k=0;chartl[8OLt2[80];for(i=0;s[i]!=\0*;i++)if(s[i]>=,0,&&s[i]<='91)/**********f^)und**********/t2[j]=s[i];j-H-;}elsetl[k++]=s[i];t2[j]=0;tl[k]=O;/**********found**********/for(i=0;i0){p=*(pstr+i);/**************found**************/(pstr+i)=*(pstr+j);(pstr+j)=p;}}}}42.2程序功能:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串:123412132,输入字符为:L则输出:3。#defineM81intfun(char*ss,charc){intent=0;char*p=ss;while(*p){if(*p=c)cnt++;

76P++;}returnent;}第四十三套:43.1填空功能:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后改串在字符串数组中的位置(下标值),未找到泽返回ー1。ss所指所指字符串数组屮共有N个内容的字符串,且串长小于M。#defineN5#defineM8intfun(char(*ss)[M],char*t)(inti;]**********found**********/for(i=0;i

77/******************/if(ch>='0,&&ch<二'9)/**********found**********/return'9-(ch-'O1);returnch;}44.1改错功能:将p所指字符串的所有字符复制到b中,要求每复制三个字符之后插入ー个空格。例如,在调用ftin函数之前给a输入字符串:ABCDEFGHIJK调用函数之后字符串b中的内容为:ABCDEFGHIJK。voidfun(char*p,char*b){inti,k=0;while(*p){i=l;while(i<=3&&*p){/**********d**********/b[k]=*p;k++;p++;i++;}if(*p){/**********^Qund**********/b[kf;}}b[k]='(y;}44.2程序N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头结点。功能。求出平均分,由函数值返回。例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当;78.625〇structslist{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*br*DEF*G*******

78#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i

79for(j=i+l;j

80Thestringaftersortingbylength:

81

82");for(i=0;i

83if(max

84n);for(i=0;iv26;i++)if(k[i]==max)printf(AnletterV%cV:%dtimes

85”,i+'a',k「]);}47.2改错函数firn功能是求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){/**********d**********/if(isdigit(*s))sum+=*s-48;/**********l^ound**********/S++;}/**********found**********/returnsum;}48.2改错函数功能:计算小于形参最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。intfun(intk){intm=0,mc=0,j;while((k>=2)&&(me<10))[************found************/if((k%13==0)II(k%17==0)){m=m+k;mc++;}k--;}returnm;/************found************/}

8648.2程序功能:求小于形参n同时能被3与7整除的所有自然数之和的平方根,作为函数值返回。例如若n为1000时,程序输出应为:s=153.909064。doublefun(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*Ointfun(char*s,char*t){intn=0;while(*s){if(*s<97){/**********found**********/*(t+n)=*s;n++;}/ギ******ホ**Rmnd**********/s++;}*(t+n)=O;/**********found**********/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.intfun(floatx[],intn)intj,c=0;floatxa=0.0;for(j=0;j

87",xa);for(j=0;j=xa)C++;returnc;}49.3程序函数功能:根据以下公式求p的值,结果由函数数值带回。M与n为两个正整数且要求m>n,例如:m=12,n=8时,运行结果为495.0000000longjc(intm){longs=l;inti;for(i=l;i<=m;i++)s=s*i;returns;}floatfun(intm,intn){floatp;p=1.0*jc(m)/jc(n)/jc(m-n);returnp;}第五十套:

8850.1填空功能:有NXN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,N=3,有下列矩阵:计算结果为。#defineN4/**********d**********/voidfun(int(*t)[N]){inti.j;for(i=l;i

89for(k=0;k

90fbr(i=1;i=l;j-)t[i][j]=t[i]U-l];/**********fiound**********/t[i][0]=x;}}52.2:改错Fun:计算并输出下列级数的前N项之和,直到大于q为止,q的值通过形参传入。,如q的值为50.0,则函数值为:49.394948odoublefun(doubleq){intn;doubles,t;n=2;s=2.0;while(s<=q){t=s;/************nd************/s=s+(n+l.)/n;n++;}printf(Mn=%d

91H,n);/************found************/returnt;}52.3:设计Fun:求Fibonacci数列中大于t的最小的ー个数,结果由函数返回。其中Fibonacci数列F(n)定义为:F(0)=0,F(l)=l,F(n)=F(n・l)+F(n-2),如当t=IOOO时,函数值为1597。#includeintfun(intt){intfO=O,fl=l,f;do{f=ro+fi;fO=fl;fi=f;}while(f

92#includedoublefun(doublex){doublef,t;intn;f=1.0+x;/******************/n=1;do{n-H-;/**********^Qund**********/t*=(-1.0)*x/n;f+=t;)/**********fiound**********/while(fabs(t)>=le-6);returnf;}53.1:改错Fun:求整数x的y次方的低3位值。如整数5的6次方为15625,此值的低3位值为625。longfiin(intx,inty,long*p){inti;longt=l;/**************found**************/for(i=l;i<=y;i++)t=t*x;*p=t;/**************found**************/t=t%1000;returnt;}53.2:设计Fun:计算并输出当xv0.97时下列多项式的值,直到为止。如在主函数中从键盘给x输入0.21后,输出为:s=l.100000.#includedoublefun(doublex){intn=l;/・循环计数・/doublesn=l;/・累计数・/doublexn=l,xnl=0;/*x的n值,以及x的n-1值;*/while(fabs(xn-xn1)>=0.000001)/・绝对值是否满足条件*/{xn=xn*x*(0.5-n+1)/n;/・表达式分解以后xn=(xn-1)*x*(0.5-n+1)/n*/n+=l;sn+=xn;/*sn累加上xn*/}return(sn);}54.1:填空Fun:计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。

93#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SL!ST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p)(ノ豕*********tound**********/s+=p->data;/*********原found********ホ*/p=p->next;)returns;}54.2:改错Fun:将s所指字符串中出现的与tl所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。要求tl和t2所指字符串的长度相同。如当s所指字符串中内容为:“abcdabfab”tl所指子串中的内容为:“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==W){a=w;r=t2;while(*r){/************found************/*a=*r;a++;r++;}w+=strlen(t2);}elsew++;})54.3:设计Fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。如当s所指字符串中的内容为“ABCDEFGHIJK”,在t所指数组中的内容应是:“BDFHJ”。#includevoidfun(char*s,chart[]){inti,j=0;

94for(i=1;i#includeintfun(char*s){char*lp,*rp;*********d**********/lp=s;rp=s+strlen(s)-l;while((toupper(*lp)=toupper(*rp))&&(Ip

95t++;)))56.1:填空从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用ー1作为字符串输入结朿标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。#include#includevoidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen(',myfile4.txt',,,'w,'))==NULL){printf(Mopenfail!exit(O);)WriteText(fp);fclose(fp);if((fp=fopen(,,myfile4.txt,,,Y,))==NULL){printf("openfail!!

96");exit(0);}ReadText(fp);fclose(fp);)/**********f^jund**********/voidWriteText(FILE*fw){charstr[81];printf(AnEnterstringwith-1toend:

97M);gets(str);while(strcmp(str,n-ln)!=O){/**********found**********/fputs(str,fw);fputs("

98",fw);gets(str);voidReadText(FILE*fr){charstr[81];printf(AnReadfileandoutputtoscreen:

99n);fgets(str,81,fr);while(!feof(fr)){/**********^Qund**********/printf(n%sn,str);fgets(str,81,fr);})56.2:改错Fun:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中,高位仍在高位,低位仍在低位。如当s中的数为:7654321时,t中的数为:7531ovoidfun(longs,long*t){longsl=10;*t=s%10;

100while(s>0){s=s/100;*t=s%10*si+*t;sl=sl*10;}}56.1:设计Fun:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位±〇如当a=45,b=12时,调用函数后,c=1524ovoidfun(inta,intb,long*c){*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);)57.1:填空Fun:把形参a所指数组中的最小值放在元素a[〇]中,接着把形参a所指数组中的最大值放在41]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在批3]中;其余以此类推。若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为1、9、2、8、3、7、4、6、5〇形参n中存放a所指数组中数据的个数。Fun函数中的max存放当前所找的最大值,px存放当前所找的最大值的下标。#defineN9voidfun(inta[],intn){inti,j,max,min,px,pn,t;for(i=0;ia|j]){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+l];a[i+l]=max;a[px]=t;}})57.2:改错Fun:用递归算法计算斐波拉契数列中第n项的值。从第一项起,斐波拉契数列为:1、1、2、3、5、8、13、21、…若给n输入7,该项的斐波拉契数值为:13。longfiin(intg)

101/**********found**********/switch(g){case0:return0;[**********found**********/case1:return1;case2:return1;)return(fun(g-l)+fun(g-2));}57.3:设计某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。编写fun,功能是求出该学生的平均分放在记录的ave成员中。如学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5〇他的平均分应当是:78.875。#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voidfun(STREC*a){inti;for(i=0;iave=a->ave+a->s[i];a->ave/=N;}58.1:填空Fun:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。如形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的字符串应为:defgh.#include#defineN80voidfun(char*s,intn,char*t){intlen,i,j=0;len=strlen(s);/**********found**********/if(n>=len)strcpy(t,s);else{/**********於und**********/fbr(i=len-n;i<=len-l;i++)t[j++]=s[i];/**********found**********/tUJ=o;}}58.2:改错Fun:找出ー个大于形参m且紧随m的素数,并作为函数值返回。intfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k=i)return(i);)}58.3:设计Fun:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。如x中的值为:35,则有4个数符合要求,他们是:1,5,7,35〇voidfun(intx,intpp[],int*n){inti;*n=0;

102fbr(i=l;i<=x;i++)if((x%i=0)&&(i%2))pp[(*n)++]=i;}59.1:填空Fun:在3X4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。如有下列矩阵:12134781063597程序的执行结果为:find:a[2][2]=9#defineM3#defineN4voidfun(int(*a)[N]){inti=0,j,find=0,rmax,c,k;while((i

103M,i,c,a[i][c]);/**********found**********/i++;}if(!find)printf(Knotfound!

104H);}592改错Fun:根据形参m的值,计算如下公式的值。,若m屮的值为5,则应输出0.536389。doublefun(intm){doubley=1.0;inti;for(i=2;i<=m;i++)/**************found**************/y-=1.0/(i*i);retum(y);)59.3:设计m个人的成绩存放在score数组中,编写fun,功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。如score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、3〇、40。#includeintfun(intscore[],intm,intbelow[]){floatav=0.0;inti,j=0;fbr(i=O;i

105av/=m;fbr(i=O;iscore[i])below[j+4-]=score[i];returnj;)60.1:填空Fun:将形参指针所指结构体数组中的3个元素按num成员进行升序排列。typedefstruct{intnum;charname[10J;JPERSON;/**********l^ound**********/voidfun(PERSON*std)PERSONtemp;if(std|O|.num>std|1j.num){temp=std[0];std[O]=std[l];std[l]=temp;}if(std[0].num>std[2].num){temp=std[0];std[0]=std[2];std[2]=temp;}if(std[1].num>std[2].num){temp=std[l];std[l]=std[2];std[2]=temp;}}60.2:改错Fun:将m(lWm<10)个字符串连接起来,组成一个新串,放入pt所指存储区中。如把3个串“abc","CD","EF”连接起来,结果是“abcCDEF”。#includeintfun(charstr[][10],intm,char*pt)(/************found************/intk,q,i;for(k=0;k#defineN5intfun(inta[][N]){inti,j;for(i=0;i

106a[i皿=0;}第61套:61.1填空:函数fun的功能是进行字母转换。若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母;若是其他字符则保持不变;并将转换后的结果作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。#includecharfun(charch){if((ch>='a,)&&(ch<=,z,))returnch・‘"+'A';if(isupper(ch))returnch+'a*-,A,;returnch;}61.2:改错给定程序MODI1.C中函数fun的功能是:给ー维数组a输入任意4个整数,并按下例的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。4123341223411234改正fun函数中指定部位的错误,得出正确的结果。不要改动main函数,不增行或删行。#defineM4voidfbn(int*a){inti,j,k,m;printf("Enter4number:M);for(i=0;i

107Theresult:

108

109");for(i=M;i>0;i—){k=a[M-l];for(j=M-l;j>0;j—)a[j]=a[j-l];a[0]=k;for(m=0;m=l;i=i-2)s[i+2]=s[i];s[l]=c;}62.2:改错fun函数的功能是:求s=aa…aa-…-aaa-aa-a(此处aa---aa表示n个a,a和n的值在1至9之间)例如a=3,n=6,则以上表达式为:§=333333・33333・3333・333・33・3,其值是:296298a和n是fun函数的形参,表达式的值作为函数值传回main函数。longfiin(inta,intn)

110{intj;longs=0,t=0;for(j=0;jvoidfun(char*tt,intpp[|){char*p=tt;inti;for(i=0;i<26;i++)pp[i]=0;while(*p){if(*p>='a*&&*p<='z*)pp[*p-'a']+=1;P++;})63.1:填空Fun函数的功能是:有NXN矩阵,根据给定的m(m=0;j-)for(j=0;j

111intfun(inthigh){intsum=0,n=0,j,yes;while((2<=high)&&(n<10)){yes=1;for(j=2;j<=high/2;j++)if(high%j==O){yes=0;break;}if(yes){sum+=high;n++;}high-;}returnsum;}63.4:设计编写函数ftin,他的功能是:利用以下所示的简单迭代方法求方程:cos(x)・x=0的ー个实根。x(n+l)=cos(x(n))迭代步骤如下:(1)取xl初值为0.0;(2)x0=xl,把xl的值赋给x0;(3)xl=cos(x0)»求出ー个新的xl;(4)若xO-xl的绝对值小于0.000001,执行步骤(5),否则执行步骤(2);(5)所求xl就是方程cos(x)・x=0的一个实根,作为函数值返回。程序将输出结果root=0.739085#includefloatfun(){floatxO,x1=0.0;do{x0=x1;xl=cos(x0);}while(fabs(xO-x1)>0.000001);returnxl;}64.1:填空Fun函数的功能是:将a所指的3X5矩阵中第k列的元素左移到第〇列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。例如,有下列矩阵:123451234512345若k为2,程序执行结果为345123451234512#defineM3#defineN5voidfun(int(*a)[N],intk){intij,p,temp;fbr(p=l;p<=k;p++)for(i=0;i

112#defineM10inta[M][M]={0};fiin(inta[][M],intm){intj,k;for(j=0;jt[j+l]){c=t[j];tlj]=t[j+1];t[j+1]=c;}}65.3:设计Fun功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不

113是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg”#includevoidfun(char*ss){char*p=ss;inti=0;while(*p){if((i%2)&&(*p>=&&*pv='z»*p-=32;P++;i++;}returnss;}66.1:填空Fun功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。typedefstruct{charname[10];intage;}STD;STDfun(STDstd[],intn){STDmax;inti;max=*std;for(i=l;i

114H);printf(AnName:%s,Age:%d

115u,max.name,max..age);)662改错Fun功能是:实现两个整数地交换。例如给a和b分别输入:60和65,输出为:a=65b=60voidfun(int*a,int*b){intt;t=*b;*b=*a;*a=t;}66.3:设计Voidfun(inttt|M|[N],intpp[N]),tt指向ー个M行N列的二维数组,求出ニ维数组每列中最小元素,并依次放入pp所指ー维数组中。二维数组中的数已在主函数中赋予。#defineM3#defineN4voidfun(inttt|M][N],intpp[N]){inti,j,min,k;fbr(i=0;itt[j][i]){min=tt|j][i];

116k=j;}pp[i]=tt[k][i];}}67.1:填空Fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置〇)#defineN20voidfun(int*a){inti,x,n=0;x=rand()%20;while(n

117,',sum);}67.3:设计实现矩阵(3行3列)的转置(即行列互换),例如,输入下面的矩阵:100200300400500600700800900程序输出:100400フ00200500800300600900intfiin(intarray[3||3]){inti,j,air[3][3];memcpy(arr,array,9*sizeof(int));fbr(i=0;i<3;i++)for(j=0;j<3;j++)array[i][j]=arr[j][i];}68.1:填空Fun的功能是:求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。Ss所指字符串数组中共有M个字符串,且串长〈N.#defineM5#defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=0;for(i=0;i

118{len=strlen(ss[i]);if(i==0)*n=len;if(len>*n){*n=len;k=i;}}return(k);}682改错Fun的功能是:根据形参m,计算如下公式的值。,例如,若输入5,则应输出2.283333。doublefun(intm)(doublet=1.0;inti;fbr(i=2;i<=m;i++)t+=1.0/i;returnt;}68.3:设计编写ー个函数,该函数可以统计ー个长度为2的字符串在另ー个字符串中出现的次数,例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,子字符串为:as,则应输出6〇#includeintfun(char*str,char*substr){intent=0;char*p=str,*q;while(*p){q=strstr(p,substr);if(q==NULL)break;p=q+strlen(substr);cnt++;}returnent;}69.1:填空Fun函数的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。例如,主函数中输入字符串:32486和12345,在主函数中输出的函数值为:44831#include#include#defineN9longctod(char*s){longd=0;while(*s)if(isdigit(*s)){d=d*10+*s-,0';s++;}returnd;}longfun(char*a,char*b){returnctod(a)+ctod(b);}69.2:改错Fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AAaaBBb123CCccccd,则应输出结果:upper=6Joweu3voidfun(char*s,int*a,int*b){while(*s){if(*s>='A'&&*sv=Z)*a=*a+l;if(*s>='a'&&*s<=V)*b=*b+l;S++;))69.3:设计编写ー个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数),例如,实型数为1234.567,则函数返回1234.570000;实型数为1234.564,则函数返回1234.560000floatfun(floath){longw;w=h*100+0.5;return(float)w/100;}

11970.1:填空Fun函数的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回:并将大于平均值的数放在形参y所指数组中,在主函数中输出。例如,有10个正数:4630324061745154826,平均值为:30.500000,主函数中输出:4632404548#defineN10doublefun(doublex[],double*y){intij;doubleav;av=0;for(i=0;iav)y[j++]=x[i];y[j]=-i;returnav;}70.2:改错Fun函数的功能是:根据整型参数m,计算如下公式的值。,例如,若m=2000,则应输出:0.000160.doublefun(intm){doubley=0,d;inti;for(i=100;i<=m;i+=100){d=(double)i*(double)i;y+=1.0/d;}retum(y);)70.3:设计已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。#include#defineN10typedefstructss{charnum[10];ints;}STU;fun(STUa[],STU*s){inti,min=a[0].s,j=0;for(i=1;ia[i].s){/・如果最低分min仍大于当前分・/j=i;/・记住位置・/min=a[i].s;/*把当前分赋值给minサ}*s=a[j];}71.1:填空Fun函数的功能是:将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asdl23fgh5##43df,处理后新字符串为:123543asdfgh##dfo#include#include#includechar*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

120p|j+k]=O;returnp;}71.1:改错Fun函数的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为“abcdefg",b所指字符串中的内容为“1234”时c所指数组中的内容应该为“a4b3c2dlefg”;而当a所指字符串中的内容为“1234”时,b所指字符串中的内容为“abcdefg”时,c所指数组中的内容应该为“lg2f3e4dcba”。#includevoidfun(char*a,char*b,char*c){inti,j;charch;i=0;j=strlen(b)-l;while(i++;j-;}while(*aII*b){if(*a){*c=*a;C++;a++;}if(*b){*c=*b;C++;b++;})*c=0;}713设计Fun:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCH码值为奇数,在数组中的下标为偶数,因此必须删除:而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF12345”。#includevoidfun(char*s,chart[]){inti,j=0;fbr(i=0;ie){i++;x=(2.0*i-l)/((2.0*i)*(2.0*i));s=s+x;}

121returns;}72.1:改错Fun:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。例如,当s所指字符串为:“ABCD”时,贝リt所指字符串中的内容应为:“ABCDDCBA二#includevoidfun(char*s,char*t){inti,d;d=strlen(s);for(i=0;ivoidfun(char*s,chart[]){inti,j=0;for(i=1;ie){s=s+k*x;k=k*(-1);t=2*i;x=(2*i+l)/(t*t);i++;}returns;}73.2:改错Fun:求出以下分数序列的前n项之和。和值通过函数值返回到main函数。,例如,若n=5,则应输出:8.391667odoublefun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k<=n;k++){s=s+(double)a/b;c=a;a=a+b;b=c;}returns;}73.3:设计

122Fun:求出一个2XM整型二维数组中最大元素的值,并将此值返回调用函数。#defineM4fun(inta[][M]){inti,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;j#defineN10typedefstructss{charnum[10];ints;}STU;ftin(STUa[],STU*s){inti,max=a[0].s,j=0;fbr(i=1;i#defineM5#defineN20voidfiin(char(*ss)[N]){inti,j,k,n[M];chart[N];for(i=0;in[j])k=j;if(k!=i){strcpy(t,ss[i]);strcpy(ss[i],ss[k]);strcpy(ss[k],t);n[k]=n[i];}75.2:改错Fun:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。

123#includevoidfiin(char*str,charch){while(*str&&*str!=ch)str++;if(*str!=ch){str[0]=ch;str[l]=0;}}75.1:设计编ー个函数fun(char*s),函数功能是把s所指字符串中的内容逆置。例如,字符串中原有的字符串为:abcdefg,则调用该函数后,串中的内容为:gfedcba。#include#defineN81fiin(char*s){charb[N];inti=0,j;memset(b,0,N);for(j=strlen(s)-1;j>=0;j-)b[i++]=s[j];strcpy(s,b);)76.1:填空Fun:计算下式前n项的和作为函数值返回。,例如,当形参n的值为10时,函数返回:-0.204491cdoublefun(intn){inti,k;doubles,t;s=0;k=l;fbr(i=l;i<=n;i++){t=2*i;s=s+k*(2*i-l)*(2*i+l)/(t*t);k=k*(-l);}returns;}76.2:改错Fun:判断ー个整数是否是素数,若是返回1,否则返回〇〇在main()函数中,若fun返回1输出YES,若fun返回〇输出NO!ointfun(intm){intk=2;while(k<=m&&(m%k))k++;if(m==k)return1;

124elsereturn0;76.1:设计Fun:找出ー维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数屮赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的ド标。#includevoidfun(inta[],int{inti;*max=a[0];*d=0;fbr(i=1;i0){d=s%10;if(d%2!=0){*t=d*si+*t;si*=10;}s/=10;})77.3:设计Fun:实现两个字符串的连接(不使用库函数strcat),艮肥p2所指的字符串连接到pl所指的字符串后。例如,分别输入下面两个字符串:FirstString—SecondString程序输出:FirstString—SecondStringvoidfun(charpl[],charp2[])(

125char*p=pl;while(*p)p++;while(*p2)*p++=*p2++;*p=0;}78.1:填空Fun:将NXN矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。例如,若N=3,有下列矩阵:123456789交换后为:321456987#defineN4voidfiin(intt[][N],intn){inti,s;for(i=0;ihigh,查找结束。#defineN10fun(inta[],intm){intlow=0,high=N-1,mid;while(low<=high){mid=(low+high)/2;if(ma[mid])low=mid+l;elsereturn(mid);)retum(-l);}78.3:设计假定输入的字符串中只包含字母和・号。编写fun:除了尾部的・号之外,将字符串中其他・号全部删除。形参p已指向字符串中最后的ー个字母。不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG*******voidfun(char*a,char*p){char*q=a;

126intj=0;while(*q&&q#defineM5#defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;for(i=0;ichar*fun(chartt|]){inti;for(i=0;tt[i];i++)if(('a,<=tt[i])&&(tt[i]<=Y))tt[i]-=32;return(tt);}79.3:设计Fun:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入:17,则应输出:46891012141516〇intisP(intm){intj,tag=0;for(j=2;j

127if(t%2==0){x=x+t*i;i=i*10;}s=s/10;}returnx;}80.1:改错Fun:输出M行N列整数方阵,然后求两条对角线上元素之和,返回此和数。#defineM5intfun(intn,intxx[][M]){inti,j,sum=0;printf(H

128The%dx%dmatrix:

129H,M,M);for(i=0;i=<0,&&s[i]<='9'){n=0;while(s[i+l+n]!=0)n++;for(j=i+n+l;j>i;j-)s[j+l]=s[j];s[j+l]='*';i=i+l;})81.2:改错Fun:根据整型形参m,计算如下公式的值。如,若m中的值为:5,则应输出:1.463611。doublefun(intm){doubley=1.0;inti;for(i=2;i<=m;i++)y+=1.0/(i*i);retum(y);}

13081.1:设计Fun:实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main中输出。如,输入下面的矩阵:123其转置矩阵为:147456258789369程序输出:261061014101418voidfun(inta[3][3],intb[3][3]){intc网网;inti.j;for(i=0;i<3;i++)for(j=0;j<3;j++){c[i]U]=a[j][i];/*矩阵的转置*/b[i]U]=a[i]|j]+c[i]U];})82.1:填空Fun:找出100-999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。如,当x值为5时,103999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。共有15个。当x值为27时,各位数字之和为27的整数是:999〇只有一个。fun(intx){intn,si,s2,s3,t;n=0;t=100;while(t<=999){sl=t%l0;s2=(t/10)%10;s3=t/l00;if(sl+s2+s3==x){printf(M%du,t);n++;}t++;Jreturnn;}82.2:改错Fun:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。如,当s中的数为:7654321时,t中的数为:642〇voidftin(longs,long*t){longsl=10;s/=10;*t=s%10;while(s>0){s=s/100;*t=s%10*sl+*t;si=si*10;}}

13182.1:设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,熊fun,按分数高低排列学生的记录,高分在前。#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STRECa[]){STRECtmp;inti,j;for(i=0;i186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492〇共有26个。fun(intx){intn,si,s2,s3,t;n=0;t=100;while(t<=x){sl=t%10;s2=(t/10)%10;s3=t/100;if(sl+s2+s3==15){printf(M%du,t);n++;}t++;Jreturnn;}83.2:改错Fun:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指字符串中的字符按正序连接到t所指串的后面。如:当s所指的字符串为:“ABCDE”时,则t所指的字符串应为:“EDCBAABCDE”。#includevoidfun(char*s,char*t){inti,sl;si=strlen(s);for(i=0;i

132voidfiin(inta,intb,long*c){*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);}84.1:填空Fun:从三个形参ユb,c中找出中间的那个数,作为函数值返回。如,当a=3,b=5,c=4时,中数为4。intfun(inta,intb,intc){intt;t=(a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));returnt;)84.2:改错Fun:首先将大写字母转换为对应小写字母,若小写字母为a-u,则将其转换为其后的第5个字母;若小写字母为v・z,使其值减21。转换后的小写字母作为函数值返回。如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。#includecharfun(charc){if(0='A'&&cv=Z)c=c+32;if(c>='a'&&c<='u')c=c+5;elseif(c>='v&&cv='z)c=c-21;returnc;}84.3:设计Fun:计算并输出,如在主函数中从键盘给n输入20后,输出为:s=534.188884。n的值大于1但不大于100o#includedoublefun(intn){inti;doublefac=1.0;doublesum=l.0;fbr(i=2;i<=n;i++){fac+=sqrt(i);sum+=fac;}returnsum;}85.1:填空调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘输入,每个人的信息作为ー个数据块写到名为myfile5.dat的二进制文件中。#include#defineN5typedefstruct{intnum;charname[10];chartel[10];JSTYPE;voidcheck();intfun(STYPE*std){FILE*fp;inti;if((fp=fopen(,'myfile5.dat',,,'wb,'))=NULL)retum(O);printf('ヽnOutputdatatofile!

133*');for(i=0;i

134#includevoidfun(char*s,char*t){inti,si;si=strlen(s);for(i=0;iintfun(inta,intb,intc){if(a+b>c&&b+c>a&&a+c>b){if(a=b&&b==c)return3;elseif(a==bllb=clla==c)return2;elsereturn1;}elsereturn0;}86.3:设计编写fun:计算并输出3到n之间(含3和n)所有素数的平方根之和。如:在主函数中从键盘给n输入100后,输出为:sum=148.874270o要求n的值大于2但不大于100。#includedoublefun(intn){inti,j=O;doubles=0;for(i=3;i<=n;i++){for(j=2;jvi;j++)if(i%j=0)break;if(j==i)s=s+sqrt(i);)returns;)87.1:填空Fun:统计长整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量cl,c2,c3返回主函数。如:当n=123114350时,结果应该为:cl=3,c2=l,c3=2ointcl,c2,c3;

135voidfun(longn){cl=c2=c3=0;while(n){switch(n%10){case1:cl++;break;case2:c2++;break;case3:c3++;}n/=10;}}87.1:改错Fun:统计ー个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。如:若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。intfiin(unsignedn,int*zero){intcount=0,max=0,t;do{t=n%10;if(t==O)count++;if(maxa|j])

136{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+l];a[i+l]=min;a[pn]=t;}))882改错Fun:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。如:s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。#defineSIZE20fun(double*s,double*w){intk,i;doublesum;for(k=2,i=0;i

137returnave;/*返回平均值・/)1.1:填空Fun:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符・补齐,使其与最长的字符串等氏。字符キ数组中共有M个字符串,且串长〈N。#include#defineM5#defineN20voidfun(char(*ss)[N]){inti,j,k=0,n,m,len;for(i=0;in){n=len;k=i;}}for(i=0;i=0;j-)ss[i][m-]=ss[i]|j];for(j=0;jl&&n<170)result*=n—;returnresult;}1.3:设计Fun:从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。若程序执行时输入字符串为:turbocandborlandC++»从键盘上输入字符:n,则输出后变为:turbocadborladC++,若输入的字符在字符串中不存在,则字符串照原样输出。#includeintfiin(chars[],charc){char*p=s;inti=0;while(*p){if(*p!=c)s[i++]=*p;P++;}s[i]=0;}

13890.1:填空Fun:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。intfun(intn){inti,j,count=0;printf(AnTheprimenumberbetween3to%d

139”,n);for(i=3;i<=n;i++){for(j=2;j=i){count++;printf(count%15?,,%5d',:"

140%5d,,,i);}}returncount;}90.2:改错数列中,第•项值为3,后ー项都比前ー项的值增5;fun功能是计算前n(4l&&n<=100){for(i=l;i<=n;i++)sum+=1.0/(2*i-1)-1.0/(2*i);}returnsum;}91.1:填空Fun:计算,直到,若x=2.5,函数值为:12.182494。#includedoublefun(doublex){doublef,t;intn;f=1.0+x;t=x;n=1;do{n++;t*=x/n;f+=t;}while(fabs(t)>=le-6);returnf;}9L2:改错Fun:计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数;并计算该值的个

141位、十位、百位上数字之和作为函数值返回。如7的5次方是16807,其低3位数的和值是15〇#includeintfun(intn,int*value){intd,s,i;d=1;s=0;for(i=l;i<=5;i++)d=d*n;*value=d;for(i=l;i<=3;i++){s=s+d%10;d=d/10;}returns;}9L3:设计Fun;计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。如给定数组中的9个元素依次为12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0,输出应为:8=35.951014。#includedoublefun(doublex[9]){inti;doubleavg=0.0,sum=0.0;for(i=0;i<8;i++){avg=(x[i]+x[i+l])/2;sum+=sqrt(avg);}returnsum;}92.1:填空Fun:计算的前n项。若x=2.5,函数值为12.182340。doublefun(doublex,intn){doublef,t;inti;f=1.0;t=1;for(i=l;idoublefun(doublex|10]){inti;doubleavg=0.0,sum=0.0,abs=0.0,fc;for(i=0;i<10;i++)sum+=x[i];avg=sum/10;/・计算平均值・/for(i=0;i<10;i++)abs+=(x[i]-avg)*(x[i]-avg);fc=sqrt(abs/10);returnfc;}93.1:填空给定程序中已建立一个带有头结点的单向链表,在主函数中将多次调用fun函数。每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。#include#defineN8typedefstructlist{intdata;

142structlist*next;}SLIST;voidfun(SLIST*p){SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL){s=t;t=t->next;}printf(n%dM,t->data);s->next=NULL;free(t);)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=O;returnh;)voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf(M

143ThelistisNULL!

144n);else{printf(AnHeadM);do{printf("->%d,\p->data);p=p->next;}while(p!=NULL);printf(H->End

145,');}}93.2:改错Fun:将字符串中的字符按逆序输出,但不改变字符串中的内容。如字符串为abed,则应输出deba。fun(char*a){if(*a){fun(a+l);printf("%c”,*a);}}93.3:设计Fun:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。如输入beijingvCR>shanghaivCR>(为回车健),函数将返回shanghai〇char*fiin(char*s,char*t){inti;char*p=s,*q=t;for(i=0;*p&&*q;i++){p++;q++;}if(*p==0&&*q==0)returns;if(*p)returns;elsereturnt;}94.1:填空

146Fun:计算的前n项之和。若x=2.5,n=15,函数值为1.917914。#includedoublefun(doublex,intn){doublef,t;inti;f=1;t=-1;for(i=l;i

147

148H);for(i=l;i<=3;i++){for(j=l;j<=5;j++){k=8-i-j;if(k>=0&&k<=6){sum=sum+l;printf("red:%4dwhite:%4dblack:%4d

149',,i,j,k);}))returnsum;}94.2:设计Fun:计算并输出下列多项式的值,如在主函数中从键盘给n输入15,则输出为s=2.718282。要求n的值大于1但不大于100。doublefun(intn){doubles=l;longt=l;inti;for(i=l;i<=n;i++){t=t*i;/*计算阶乘・/s+=l./t;/・计算每项的值并累加至变量s中・/)returns;/・返回多项式的值・/)95.1:填空Fun:计算NXM矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,然后累加反向对角线元素中的值,如N=3,有下列矩阵:123456

150789fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。#defineN4fun(intt[][N],intn){inti,sum;sum=O;for(i=0;idoublefunx(doublex){retum(2*x*x*x-4*x*x+3*x-6);}doublefun(doublem,doublen){doubler;r=(m+n)/2;while(fabs(n-m)>0.001){if(funx(r)*funx(n)<0)m=r;elsen=r;r=(m+n)/2;}returnr;}95.3:设计假定输入的字符串中只包含字母和・号。编写fun,功能是:除了字符串前导和尾部的・号外,将串中其他・号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后ー个字母,在编写函数时,不得使用C语言提供的字符串函数。如字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********,编写函数时不得使用C语言提供的字符串函数。voidfun(char*a,char*h,char*p){intj=0;char*q=a;while(*q&&q

151123456789计算结果为:741852963#defineN4voidfun(int(*t)|N|){intj,r[N];for(j=0;j=0;j-)t[N-l][N-l-j]=t[j][N-l];for(j=N-l;j>=0;j-)t[j][N-l]=rg];}96.2:改错Fun:计算的值。如当n为5时,函数值应为:10.407143。f(x)函数定义如下:#includedoublef(doublex){if(x==0.0llx==2.0)return0.0;elseif(x<0.0)return(x-l)/(x-2);elsereturn(x+l)/(x-2);}doublefun(intn){inti;doubles=0.0,y;for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}returns;}96.3:设计Fun:计算,s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是:doublelog(doublex)。若m的值是20,fun函数值为:6.506583〇#includedoublefun(intm){doubles=0.0;inti;fbr(i=1;i<=m;i++)s+=log(1.0*i);s=sqrt(s);returns;}97.1:填空Fun:逆置数组元素中的值。如,若a所指数组中的数据依次为:1,2,3,4,5,6,7,8,9,则逆置后依次为:9,8,7,6,5,4,3,2,1〇形参n给出数组中数据的个数。voidfun(inta[],intn){inti,t;for(i=0;i

152的字符串最多只能包含5位八进制数字字符。如输入77777,则输出32767。intfun(char*p){intn;n=*p-,0';P++;while(*p!=0){n=n*8+*p-,0,;P++;}returnn;}97.1:设计Fun:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写s函数,功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置ー1,作为函数值返回。(用于字符串比较的函数是strcmp),#include#defineN16typedefstruct{charnum[10];ints;}STREC;STRECfun(STREC*a,char*b){STRECc;inti;c.num[0]=、〇’;/・置初始空串・/c.s=-l;/*置成绩为ー1*/for(i=0;i#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(char*);voidoutlist(SLIST*);intfun(SLIST*h,charch){SLIST*p;intn=O;p=h->next;while(p!=0){n++;if(p->data=ch)returnn;elsep=p->next;}

153return0;}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);k=fun(head,ch);if(k==0)printf("

154Notfound!

155");elseprintf(*Thesequencenumberis:%d

156",k);)98.2:改错Fun:删除p所指向字符串中的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用’#‘结束输入。#include#includefun(char*p){inti,t;charc[80];for(i=0,t=0;p[i];i++)if(!isspace(*(p+i)))c[t++]=p[i];c[t]=W;strcpy(p,c);}98.3:设计Fun:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。若输入“abc4EFg”,则应输出“aBc4EFg”。#includevoidfun(char*ss){inti;for(i=1;i=匕’&&ss[i]<='z')ss[i]-=32;})99.1:填空Fun:将形参a所指数组中的前半部分元素中的值和后半部分元素中的值互换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。若a所指数组中的数据依次为:1、2、3、4、5、6、7ヽ8、9,则调换后为:6、7、8、9、5、1、2、3、4〇#defineN9voidfun(inta[],intn){inti,t,p;p=(n%2==0)?n/2:n/2+1;for(i=0;i

157{k=*b;*b=*c;*c=k;}}99.1:设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写fun函数,功能是把分数最高的学生数据放在b所指的数组中,分数最高的学生可能不止ー个,函数返回分数最高的学生人数。#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b){inti,max=a[0].s,n=0;for(i=1;ii;j-)s|j+l]=s[j];s[j+l]=c;i=i+l;}}100.2Z改错在主函数中从键盘输入若干个数放入数组中,用〇结束输入并放在最后ー个元素中。Fun的功能是计算数组元素中值为正数的平均值(不包括〇)。如数组中元素中的值依次为:39,-47,21,2,-8,15,〇〇则程序的运行结果为:19.250000.doublefun(intx[]){doublesum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;)sum/=c;returnsum;}100.3:设计Fun:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。,若n的值为!I时,函数值为:1.833333〇floatfun(intn){intfloats=0;fbr(i=l;i<=n;i+4-){t=0;

158for(j=l;j<=i;j++)t+=j;s=s+17t;}returns;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭