C语言编程经典100例_第1页
C语言编程经典100例_第2页
C语言编程经典100例_第3页
C语言编程经典100例_第4页
C语言编程经典100例_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第01套:请编写一个函数fiin,它的功能是:将一个数字字符串转换为一个樓数(不得调用C语言提供的将字符串转换为胳数的函数)。例如,若输入字符串”-1234",则函数把它转换为整数值-1234。函数fun中给出的语句仅供参考。参考答案:longfiin(char*p)inti,len,t;longx=0;len=strlen(p);if(p0=Tt=-l;len-;elset=l;while(*p)x=x*10-48+(*p+);returnx*t;niain()chars6;longn;printf(HEnterastring:nM);gets(s);n=fun(s);printf

2、(H%ldnM,n);第02套:请编写函数fun.函数的功能是:将M行N列的二维数组中的字符数振,按列的顺序依次放到一个字符串中。例如,二维数组中的数据为:WWWWSSSSIIH1IH则字符串中的内容应是:WSHWSIIWSIL参考答案:voidfun(charsN,char*b)inti,j,n=O;fbr(i=O;i<N;i+)fbr(j=O;j<M;j+)bn=sji;n=i*M+j+1;bnW;第03套:请编写函数fim,函数的功能是:统计一彳亍字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入规定所有单词山小写字母组成,单词之间山若干个空格隔开,一行的开始没有空

3、格。参考答案:intfiin(char*s)intk=I;while(*s)i”s=")k+;s+;returnk;第04仓:请编写函数fim,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中:要求函数把0至9岁年龄段的人数放在d0冲,把10至19岁年龄段的人数放在dl中,把20至29岁年龄段的人数放在d2中,其余依此类推,把100岁(倉100)以上年龄的人数都放在dl0中。结果在主函数中输出。参考答案:voidfiin(int*a,int*b)intij;for(i=0;i<M;i+)bi=0;for(i=0;i<N;i+)j=

4、ai/10;if(j>10)bM-1+;elsebj+;doublernd()statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;retum(double)r/m);第05套:请编写函数fim,函数的功能是:別去一维数组中所有相同的数,使之只剩一个。数组中的数已按山小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数纽中的数据是:2223445666677899101010。删除后擞组中的内容应该是:2345678910。参考答案:intfun(inta,intn)intij=1,k=a0;fbr(i=1;i<n;i+)if(k!=ai)aj+

5、=ai;k=ai;aj=0;returnj;第06套:请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符用中原有的内容为:ABCDEFGIIIJK,m的值为3,则移动后,字符串中的内容应该M:DEFGHUKABCovoidfun1(char*w)inti;chart;t=w0;fbr(i=O;i<strlen(w)-l;i+)wi=wi+l;wstrlen(w)-l=t;voidfun(charintm)inti;fbr(i=0;i<m;i+)fun1(w);第07套:请编写

6、一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若W是n(n32)位的整数,函数求出w的低n-1位的数作为函数值返回。例如: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;第08套:程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(intaN,intn),函数的功能是:使数组左

7、下三角元索中的值乘以n。例如:若n的值为3,a数组中的值为|197|397|a=|238|则返回主程序后a数组中的值应为|698|456|121518|参考答案:intfun(intaN,intn)intij;fbr(i=0;i<N;i+)for(j=0;j<=i;j+)aiUl*=n;第09套:请编写函数fig函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(Ap,p小于等于n-1)的数组元索平移到数组的呆后。例如,一维数组中的廉始内容为:123,4,5,678,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,&90丄2,3,4。

8、参考答案:voidfun(int*w,intp,intn)intiJ=0,bN;fbr(i=p+1;i<n;i+)bj+=wi;fbr(i=0;i<=p;i+)bj+=wi;fbr(i=0;i<n;i+)wi=bi;第10套:请编写一个函数,函数的功能是删除字符串中的所有空格。例如,主函数中输入sdafaaz67w,则输出为uasdafaaz67Mo参考答案:intfun(char*str)char*p=str;inti=O;while(*p)if(*p!=,f)stri+=*p;P+;stri=0;第II套:请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每

9、串的长度不超过N),按顺序合并组成一个新的字符串。函数fiin中给出的语句仅供参考。例如,字符串数组中的M个字符串为AAAABBBBBBBCC则合并后的字符串的内容应是:AAAABBBBBBBCCo参考答案:#include<stdio.h>#defineM3#defineN20voidfun(charaMN,char*b)inti;*b=0;fbr(i=0;i<M;i+)strcat(b5ai);第12套:请编写函数fun.函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。函数ftin中给出的语句仅供参考。例如,二维数组中的数据为:333333334

10、444444455555555则-维数组中的内容应是:334455334455334455334455。参考答案:voidfun(int(*s)10,int*b,int*n,intmm,intnn)for(i=0;i<nn;i+)for(j=0;j<mm;j+)bnp=sUi;np=i*mm+j+1;*n=np;第13奁:请编写函数fiin,函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,二维数组中的数据为:333333334444444455555555则一维数组中的内容应是:33333333444

11、4444455555555参考答案:voidfiin(int(*s)10,int*b,int*n,intmm,intnn)inti,j,k;fbr(i=0;i<mm;i卄)for(j=0;j<nn;j+)k=i*nn+j;bk=siU;*n=mm*nn;main()intw1010=33,33,33,33,44,44,44,44,55,55,55,55,i,j;inta100=0,n=0;printf(MThematrix:®”);fbr(i=0;i<3;i+)fbr0=0;j<4;j+)printfC%3d”,wij);printf(MnM);fun(w,a

12、,&n,3,4);printfMTheAarray:nM);fbr(i=0;i<n;i+)prin(fC%3d”,ai);primfCnn”);inti,j,np-O;NONO();第14套:请编写函数fun,函数的功能是:判断字符串是否为回文?若是,函数返网1.主函数中输出:YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。参考答案:intfun(char*str)inti,j=strlen(str);fbr(i=0;i<j/2;i+)if(stri!=strj-i-1)return0;r

13、eturn1;niain()charsN;printf|HEnterastring:M);gets(s);printf(”niT);puts(s);if(fun(s)prinlffYES'n”);elseprintf(MNOnM);NONO();第15套:N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,山函数值返回。参考答案:doublefun(STREC*h)doublemax=h->s;STREC*p;p=h->next;while(p)if(p->s>max)nxax-p->

14、s;pp->next;returnmax;STREC*creat(double*s)STREC*h/p?q;inti=0;h=p=(STREC*)malloc(sizeof(STREC);p->s=0;whi!e(i<N)q=(STREC*)malloczcoRSTREC);q->s=si;i卄;p->next=q;pq;p->next=0;returnh;outlist(STREC*h)STREC*p;p=h->next;printflHheadM);doprintf(H->%2.0fp->s);p=p->next;whiIe(p!

15、=0);printf(MnnM);第16套:请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。例如,脈來的字符串为CEAedca,排序后输出为CedcEAa。参考答案:intfiin(char*s,intnum)charch;intij;for(i=1;i<6;i+)for(j=i+1;j<6;j+)iR*(s+i)<*(s+j)ch=*(s+j);*(s+j)="(s+i);*(s+i)=ch;第17奁:学生的记录山学号和成绩纽成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fiin,它的功能是:把指定分

16、数范围内的学生数据放在b所指的数组中,分数范闌内的学生人数山函数值返I回。例如,输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包會60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。参考答案:intfun(STREC*a,STREC*b,int1,inth)intij=O;for(i=0;i<N;i卄)if(ai.sx1&&ai.s<=h)bj+=ai;returnj;第18套:函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,宋中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为:

17、“ABCDEFG12345",其中字符A的ASCII码值为奇数、字符1的ASCII码值也为奇数、都应当删除,其它依此类推。最后(所指的数组中的内容应是:”BDF24”。参考答案:voidfun(char*s,chart)inti,j=0;fdr(i=0;i<strlen(s);i+)if(si%2=0)tj+=si;第19套:函数fun的功能是:将a、b中的两个两位止整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变虽c的百位和个位上,b中的十位和个位数依次放在变虽c的十位和千位上。例如,当a=45,b=12»调用该函数后,c=2415o参

18、考答案:voidfun(inta,intb,long*c)*c=(b%10)*1000+(a/l0)*100+(b/10)*10+a%10;第20套:请编写函数fim,函数的功能是求出二维数组周边元索之和,作为函数值返凹。二维数组中的值在主函数中赋予。例如:二维数组中的值为13579299946999813570则函数值为6L参考答案:intfun(intaMN)inttot=0,i,j;fbr(i=0;i<N;i+)tot+=a0i;tot+=aM-li;fbr(i=1;i<N4-1;i+)tot+=ai0;tot+=aiN-l;returntot;第21套:程序定义了NXN的二

19、维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返给主函数中的s。例如:a数组中的值为|01279|19745|a=|23831|45682|59141|则返回主程序后S的值应为:3.375。参考答案:doublefun(intwN)intij,n=0;doublesum=0;for(i=0;i<N;i+)sum+=w0i+wN-li;n+=2;for(i=l;i<N-l;i+)sum+=wi0+wiN-l;n+=2;returnsum-'n;第22套:函数fun的功能是:将两个两位数的止整数a、b合并形成一个整数放在c中。合并

20、的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12时,调用该函数后,0=2514。参考答案:voidfun(inta,intb,long*c)*c=(b%10)*1000%a%10)*100+(b/10尸10+(a/10);第23套:编写函数firn,函数的功能是求出小于或等于lim的所有索数并放在aa数纽中,函数返回所求出的索数的个数。函数fiin中给出的语句仅供参考。参考答案:intfun(intlim,intaaMAX)inti,j,k=O;for(i=2;i<=lim;i-H-)for0=2;j<

21、;=(i/2);j+)if(i%j=O)break;if(j>(i/2)aak+=i;returnk;第24套:学生的记录山学号和成绩组成.N名学生的数据己在主函数中放入结构体数组S中,请编写函数fun,它的功能是:把分数垠低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数报低的学生的人数。参考答案:intfun(STREC*a,STREC*b)intij=0,min=a0.s;fbr(i=0;i<N;i+)if(min>ai.s)j=0;bj+=ai;min=ai.s;elseiftminai.s)bj+=ai;returnj;第25套:函数fu

22、n的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在I所指的数组中。例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符B的ASCII码值为偶数、字符2的ASCII码值为偶数、都应当删除,其它依此类推。垠后t所指的数组中的内容应是:"ACEG135"。参考答案:voidftin(char*s,chart)intij=0;for(i=0;i<strlen(s);i+)if(si%2)tj+=si;tUl=o;第26套:请编写一个函数fun.它的功能是:求出1到m之间(倉m)能被7或11整除的所有整数

23、放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:711142122283335424449参考答案:#include<stdio.h>#defineM100voidfiin(intm,int*a,int*n)inti;*n=0;for(i=7;i<=m;i+)if(i%7=0)|(i%11=0)a(*n)+=i;第27套:请编写一个函数fun.它的功能是:根据以下公式求TT的值(要求满足持度0.0005,即某项小于0.0005时停止迭代):tt11x21x2x3Ix2x3x4lx2x.xn=HHHd+233x53x5x73x5x7x93x5x.x

24、(2n+l)程序运行后,如果输入楷度0.0005,则程序输出为3.14-0参考答案: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);niain()doublex;printf(MInputeps:M);scanf(,%lf&x);printf(Hneps=%lf,PI=%lfnM,x,ftin(x);NONO();第28套:请编写函数fun,它的功能是:求出1到1000之间能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所

25、指的数组中,通过n返回这些数的个数。参考答案:voidfun(int*a,int*n)inti;*n=0;fbr(i=7;i<1000;i+)if(i%7)=0|(i%11)=0)&&(i%77)!=0)a(*n)-H-=i;第29套:学生的记录山学号和成绩组成,N名学生的数据己在主函数中放入结构体数组S中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。参考答案:doublefun(STREC*a,STREC*b,int*n)doublet=0;inti;*n=0;fbr(i=0;

26、i<N;i-H-)t=t+ai.s;t=t/N;fbr(i=0;i<N;i+)if(ai.s>t)b(*n)+=ai;returnt;第30套:假定输入的字符串中只包金字母和*号。请编写函数firn,它的功能是:将字符串中的询导*号全部移到字符串的尾部。函数ftin中给出的语句仅供参考。例如,字符串中的内容为:移动后,字符串中的内容应当是:A*BC*DEF*G*O在编写函数时,不得使用C语言提供的字符串函数。参考答案:voidfun(char*a)char*p,*q;intn=0;P=a;while广p=w)/»统计串头“个数n/n+;p+;q=a;while(*p

27、)*q=*p;p+;q+;for(;n>0;n-)/在串尾补n个和*/弋+=匕第31套:请编写一*个函数voidfun(chara,charb,intn),其功能是:删除一个字符串中指定下标的字符。其中,a指向总字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串:World,然后输入3,则调用该函数后的结果为:Word。参考答案:voidftin(chara,charb,intn)strncpb,a,n);bn=0;strcat(b,a+n+1);第32套:假定输入的字符串中只包倉字母和*兮。请编写函数fun,它的功能是:使字符串的前导*号不得多

28、于n个;若多于n个,则删除多余的*兮;若少于或筹于n个,则什么也不做,字符串中间和尾部的*号不删除。函数fun中给出的语句仅供参考。例如,字符串中的内容为:*A*BC*DEF*G*,若n的值为4,删除后,字符串中的内容应当是:A*BC*DEF*G*:若n的值为&则字符串中的内容仍为:»»*»*a*BC*DEF*G*on的值在主函数中输入。在编写函数时,不得使用c语言提供的字符串函数。参考答案:voidfiin(char*a,intn)inti=Oj,k=O;while(ak='*r)k+;if(k>n)i=ny=k;for(;aUl=0;j+

29、)ai+=aj;ai=0;参考答案:doublefun(intn)inti;doublesum=0.0;for(i=l;i<=n;i+)if(j%5=o|i%9=0)/被5或9整除*/sum+=1.0/i;returnsum;第35套:编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注总:主函数中用*"作为结束输入的标志,函数firn中给出的语句仅供参考。)参考答案:fun(char(*a)81,intnunxchar"max)inti,k=0,maxlen;maxlen=strlen(ak);fbr(i=l;i<num

30、;i+)if(strlen(ai)>maxlen)maxlen=strlen(ai);第33套:函数firn的功能是:将两个两位数的止整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,0=5142。参考答案:voidfiin(inta,intb,long*c)*c=(a%10)*1000+(bn0)*I00+(a/10)*10+(b%10);第34套:请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,在

31、主函数中从键盘给n输入20后,输出为:s=0.583333o*max=ak;第36套:函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都別除;宋中剩余字符所形成的一个新串放在【所指的数组中。例如,若s所指字符串中的内容为:"ABCDEFG123456",其中字符A的ASCII码值为奇数,肉此应当删除其中字符B的ASCII码值为偶数,但在数纽中的下标为奇数,肉此也应当删除:而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:"246”。参考答案:voidf

32、un(char*s,chart)intij=0;fbr(i=0;i<strlen(s);i+=2)if(si%2=0)tj+=si;第37套:假定输入的字符串中只包倉字母和*号。请编写函数fun,它的功能是:只删除字符串询导和尾部的号,串中字母之间的号都不删除。形参n给出了字符串的长度,形参h给出了字符申中前导*兮的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*"*A*BC*DEF*G*"*,删除后,字符串中的内容应当是:A*BC*DEF*GO参考答案:voidfun(char*a,intn,inth

33、,inte)char*p=a;intj=0,len=0;while(*p)p+;lcn+;while(j<len-h-e)aUJ=ah+j;j+;aj=O;第38套:假定输入的字符串中只包倉字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:ABCDEFGo参考答案:voidfun(char*a)intj=0;char*p=a;while(*p)if(*P!='*')aU+=*p;aj=O;第39套:假定输入的字符申中只包含字母和*号

34、。请编写函数ftm,它的功能是:除了字符串询导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。例如,字符串中的内容为:*A*BC*DEF*G*.删除后,字符串中的内容应当是:*ABCDEFGo参考答案:voidftin(char*a)inti=0,k;while(ai=w)i+;k=i;whiIe(ai!=r0,)if(ai!='Jak+=ai;i+;akW;第40套:请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55则函数的值

35、为:71.80。参考答案:floatfun(float*a,intn)inti;floatave=0.0;for(i=0;i<n;i+)ave=ave+ai;ave=ave/n;returnave;第41套:程序定义了NXN的二维数组,并在主函数中Fl动赋值。请编写函数firn,函数的功能是:使数组右上三角元索中的值乘以mo例如:若m的值为2,a数组中的值为|197|21814|a=|238|则返回主程序后a数组中的值应为|2616|456|4512|参考答案:intfun(intaN,intm)intij;for(i=0;i<N;i+)fbr(j=i;j<N;j+)ai|j

36、=««;第42套:请编写函数ftin,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串:123412132,输入字符为:1,则输出:3。参考答案:intfun(char*ss,charc)intent=0;char*p=ss;while(*p)if(*p=c)cnt+;P+;returnent;第43套:假定输入的字符串中只包倉字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,询而和中间的*号不删除。例如,字符串中的内容为:*»*A*BC*DEF*G*.删除后,字符串中的内容应当思*A*BC*DEF*Ge在编写函数

37、时,不得使用C语言提供的字符串函数。参考答案:voidfun(char*a)char*p=a;while(*p)p+;p-;while(*p=悻')p-;P+;*P=0;第44套:N名学生的成绩己在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,山函数值返回。例如若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625.参考答案:#include<stdio.h>#include<stdlib.h>doublefun(STREC*h)STREC*p=h->next;do

38、ubleav=00;intn=0;while(p!=NULL)av=av+p->s;pp->next;n卄;av/=n;returnav;第45套:假定输入的字符串中只包金字母和*号。请编写函数firn,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或筹于n个,则什么也不做,字符串中间和询面的号不删除。例如,字符串中的内容为:*"A*BC*DEF*G"*"*,若n的值为4,删除后,字符串中的内容应当是:*"A*BC*DEF*G"*:若n的值为7,则字符串中的内容仍为:*"A*BC*DEF

39、*G*"*。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。参考答案:voidftin(char*a,intn)char*p=a;intj=O;while(*p)p+;p-;while(*p=')p-;P+;while(j<n&&*p)P+;j+;*p=o;第46套:编写函数fun,它的功能是计算下列级数和,和值山函数值返回。例如,当n=10,x=0.3时,函数值为1.349859c参考答案:#include<stdio.h>#include<math.h>longjc(intn)longs=1;inti;fb

40、r(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套:编写函数fun,它的功能是:计算并输出下列级数和:111S=+1x22x3n(n+l)例如,当n=10时,函数值为:0.909091o参考答案:doublefun(intn)doubles=0.0;inti;fbr(i=1;i<=n;i+)s=s+1.0/(i*(i+1);returns;第48套:编写函数firn,它的功能是:求小

41、于形参n同时能被3与7整除的所有鬥然数之和的平方根,并作为函数值返回。例如若n为1000时,程序输出应为:s=153.909064o参考答案:doublefun(intn)doublesum=0.0;inti;for(i=21;i<=n;i+)iR(i%30)&&(i%7=0)sum+=i;returnsqrt(sum);第49套:编写函数fim,其功能是:根据以下公式求P的值,结果山函数值带回。m与n为两个止整数且要求m!P=n!(m-n)!例如:m=12,n=8时,运行结果为495.000000o参考答案:#include<stdio.h>longjc(i

42、ntm)longs=l;inti;for(i=l;i<=m;i+)s=s*i;returns;floatfun(intm,intn)floatp;p=1.0*jc(myjc(nyjc(m-n);returnp;第50套:规定输入的字符串中只包禽字母和*号。请编写函数fun,它的功能是:将字符串中的询导审号全部删除,中间和尾部的亦号不删除。例如,字符串中的内容为:*A*BC*DEF*G*.删除后,字符串中的内容应当思A*BC*DEF*G*e在编写函数时,不得使用C语言提供的字符串函数。参考答案:voidfun(char*a)intj=O;char*p=a;while(*p=悻')p

43、+;while(*p)aj+=*p;P+;aj=O;第51套:请编写函数fiin,其功能是求出数组的最大元索在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876675896101301401980431451777参考答案:intfun(int*s,intt,int*k)inti,pos=0,max=*s;fbr(i=1;i<t;i+)if(max<*(s+i)max=*(s+i);pos=i;第52套:编写函数fun,它的功能是:求Fibonacci数列中大于t的报小的一个数,结果山函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(l)=lF

44、(n)=F(n-l)+F(n2)例如:当t=1000时,函数值为:1597o参考答案:intfun(intt)intR)=0,fl=l,f;dof=fl)+fl;fD=fl;fl=f;while(f<t);returnf:第53套:例如,在主函数中从键盘给x输入0.21后,输出为:s=1.100000o参考答案:doublefun(doublex)intn=l;doublesn=l;doublexn=l5xnl=0;vhile(fabs(xn-xnl)>=0.000001)xn=xn*x*(0.5-n+1)/n;n+=l;sn+=xn;return(sn);第54套:函数fun的功

45、能是:将s所指字符串中下标为偶数的字符删除,宋中剩余字符形成的新宋放在t所指数组中。例如,当s所指字符串中的内容为:"ABCDEFGHUK",在t所指数组中的内容应是:"BDFHJ"。参考答案:voidftin(char*s,chart)inti,j=0;fbr(i=1;i<strlen(s);i+=2)tj+=si;ti=o;第55套:请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个索数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37O函数fun中给出的语句仅供参考。参考答案:voidfun(intm,

46、intk,intxx)inti,j=l,t=m+l;while(j<=k)fbr(i=2;i<t;i+)if(t%i=0)break;xxj-l=i;j+;t+;第58套:请编写函数fun,它的功能是:求出能整除形参X且不是偶数的各楼数,并按从小到大的顺序放在PP所指的数组中,这些除数的个数通过形参n返I叫。例如,若X中的值为:35,则有4个数符合要求,它们是:1,5,7,35。参考答案:voidftin(intx,intpp,int*n)inti;*n=0;for(i=l;i<=x;i+)if(x%i=0)&&(i%2)pp(*n)-w-=i;第56套:函数

47、firn的功能是:将两个两位数的止整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12时,调用该函数后,c=1524。参考答案:voidfun(inta,intb,long*c)*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);第57套:某学生的记录山学号.8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。例如学生的成绩是:85.5,76,69.5,85,9

48、1,72,64.5,87.5,他的平均分应当是:78.875。参考答案:voidfun(STREC*a)inti;fbr(i=0;i<N;i+)a->ave=a->ave+a->si;a->ave/=N;第59套:m个人的成绩存放在score数组中,请编写函数fun.它的功能是:将低于平均分的人数作为函数值返凹,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。参考答案:intfun(intscore,int

49、m,intbelow)floatav=0.0;intiJ=0;for(i=0;i<m;i+)av+=scorei;av/=m;fbr(i=O;i<m;i+)ifav>scorei)belowj+=scorei;returnj;第60套:程序定义了NXN的二维数组,并在主函数中Fl动赋值。请编写函数fun(intaN),函数的功能是:使数组左下三角元索中的值全部直成0。例如:a数组中的值为|197|097|a=|238|则返回主程序后a数组中的值应为|008丨|456|000|参考答案:intfun(intaN)intij;fbr(i=0;i<N;i卄)fbr(j=0;j

50、<=i;j+)aiU=0;第61套:请编写一个函数voidfun(char*tt,intpp),统计在tt所指字符串中'a,到h26个小写字母各fl出现的次数,并依次放在pp所指数组中。例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000参考答案:voidfun(char*tt,intpp)char*p=tt;inti;fbr(i=0;i<26;i+)ppi=0;while(*p)if(*pxX&&*p<=tz,)pp*pW+=1;P+;第63套:编写函数fun,它的功能是:利

51、用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。迭代步骤如下:(1) 取xl初值为0.0:(2) x0=xl,把xl的值賦给x0;(3) xl=cos(xO),求岀一个新的x1:(4) 若x0-xl的绝对值小于0.000001,执行步骤(5) ,否则执行步骤(2);(5)所求xl就是方程cos(x)-x=0的一个实根,作为函数值返1-1。程序将输出结果RoorO.739085。参考答案:floatfun()floatx0,x1=0.0;dox0=x1;xl=cos(x0);whi)e(fabs(x0-xl)>0.000001);returnxl;第64套:函数fun的功能

52、是:将a、b中的两个两位止整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变虽c的十位和千位上,b中的十位和个位数依次放在变呈c的个位和百位上。例如,当a=45,b=12o调用该函数后,c=5241»参考答案:voidftin(inta,intb,long*c)*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);第65套:请编写一个函数fun,其功能是:将ss所指字符串中所有下标为奇数位匙上的字母转换为大写(若该位置上不是字母,则不转换。例如,若输入Habc4EFg则应输出%Bc4EFgS参考答案:voidfiin(cha

53、r*ss)char*p=ss;inti=0;vhile(*p)if(i%2)&&Cp>=a*&&*p<="zr)*p-=32;P*;i+;returnss;第66套:请编一个函数voidfun(intttMN,intppN),指向一个M行N列的维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。参考答案:voidfun(intttMN,intppN)intimin,k;fbr(i=0;i<N;i+)min=tt0i;k=0;fbr(j=1;j<M;j+)if(min>ttUi)TABmin=ttOi;k=j;ppi=ttki;第67套:编写程序,实现矩阵(3彳亍3列)的转置(即彳亍列互换)例如,输入下而的矩阵:100200300400500600700800900程序输出:100400700200500800300600900参考答案:intfun(intarray33)inti,j,arr33;memcpy(arr,array,9*sizeof(int);fbr(i=0;i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论