C语言编程题及答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。intfun(inta[][M]){inti,j,max=a[0][0];for(i=0;i2;i++)for(j=0;jM;j++)if(maxa[i][j])max=a[i][j];returnmax;}2编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。112123123412335357357123521nn…………程序运行后,若输入精度0.0005,则程序应输出为3.14…。doublefun(doubleeps){doubles=1.0,s1=1.0;intn=1;while(s1=eps)/*当某项大于精度要求时,继续求下一项*/{s1=s1]s=s+s1;/*求和*/n++;}return2]3编写函数fun,其功能是:求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。voidfun(int*a,int*n){inti,j=0;for(i=1;i=1000;i++)/*求1到1000之内能被7或11整除但不能同时被7和11整除的所有整数,并放入数组a中*/if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;/*传回满足条件的数的个数*/}4规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当是:ABCDEFG。voidfun(char*a){inti,j=0;for(i=0;a[i]!=′\0′;i++)if(a[i]!=′*′)a[j++]=a[i];/*若不是要删除的字符′*′则留下*/a[j]=′\0′;/*最后加上字符串结束符′\0′*/}5编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。例如,分别输入下面两个字符串:FirstString--SecondString程序输出:FirstString--SecondStringvoidfun(charp1[],charp2[]){inti,j;for(i=0;p1[i]!=′\0′;i++);/*求出的i为p1字符串的总长度,包括结束标记符*/for(j=0;p2[j]!=′\0′;j++)p1[i++]=p2[j];/*将p2字符串连在p1字符串后面*/p1[i]=′\0′;/*在字符串最后加上结束标记符*/}6某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。voidfun(STREC*a){inti;a-ave=0.0;for(i=0;iN;i++)a-ave=a-ave+a-s[i];/*求各门成绩的总和*/a-ave=a-ave/N;/*求平均分*/}7N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。例如,若学生的成绩是:8576698591726487,则平均分应当是:78.625。doublefun(STREC*h){doubleav=0.0;STREC*p=h-next;/*p直接指向头结点的下一个结点,即第一个成绩*/while(p!=NULL){av=av+p-s;/*求总分数*/p=p-next;}returnav/N;/*返回平均值*/}8编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。例如,若输入17,则应输出:46891012141516。voidfun(intm,int*k,intxx[]){inti,j,n=0;for(i=4;im;i++)/*找出大于1小于整数m的非素数*/{for(j=2;ji;j++)if(i%j==0)break;if(ji)xx[n++]=i;}*k=n;/*返回非素数的个数*/}9编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。intfun(char*ss,charc){inti=0;for(;*ss!=′\0′;ss++)if(*ss==c)i++;/*求出ss所指字符串中指定字符的个数*/returni;}10编写函数fun,其功能是:计算n门课程的平均分,结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。floatfun(float*a,intn){floatav=0.0;inti;for(i=0;in;i++)/*求分数的总和*/av=av+a[i];return(av/n);/*返回平均值*/}11学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。intfun(STREC*a,STREC*b){inti,j=0,max=a[0].s;for(i=0;iN;i++)if(maxa[i].s)max=a[i].s;/*找出最大值*/for(i=0;iN;i++)if(max==a[i].s)b[j++]=a[i];/*找出成绩与max相等的学生的记录,存入结构体b中*/returnj;/*返回最高成绩的学生人数*/}12规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。voidfun(char*a){inti=0;char*p=a;while(*p&&*p==′*′){a[i]=*p;i++;p++;}while(*p){if(*p!=′*′){a[i]=*p;i++;}p++;}a[i]=′\0′;}13编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指的数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000voidfun(char*tt,intpp[]){inti;for(i=0;i26;i++)pp[i]=0;/*初始化pp数组各元素为0]=′\0′;tt++)if(*tt=′a′&&*tt=′z′)pp[*tt-′a′]++;}14规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。voidfun(char*a);{while(*a!=′\0′)a++;a--;/*指针a指向字符串的尾部*/while(*a==′*′)a--;/*指针a指向最后一个字母*/*(a+1)=′\0′;/*在字符串最后加上结束标志符*/}15编写函数fun,其功能是:比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符长度相同,则返回第一个字符串。例如,输入beijingCRshanghaiCR(CR为回车键),函数将返回shanghai。char*fun(char*s,char*t){inti,j;for(i=0;s[i]!=′\0′;i++);/*求字符串的长度*/for(j=0;t[j]!=′\0′;j++);if(i=j)/*比较两个字符串的长度*/returns;/*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/elsereturnt;}16学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:函数返回该学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。STRECfun(STREC*a,char*b){inti;STRECstr={\0,-1};/*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1]+)if(strcmp(a[i].num,b)==0)/*找到指定学号的学生数据*/str=a[i];returnstr;/*返回学生记录*/}17编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=5142。voidfun(inta,intb,long*c){*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;}18编写函数fun,其功能是:利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下:(1)取x1初值为0.0;(2)x0=x1,将x1的值赋给x0;(3)x1=cos(x0),求出一个新的x1;(4)若x0-x1的绝对值小于0.000001,执行步聚(5),否则执行步聚(2);(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出结果Root=0.739086。floatfun(){floatx1=0.0,x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)=1e-6);returnx1;}19规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串中的前导*号全部移到字符串的尾部。例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********。在编写函数时,不得使用C语言提供的字符串函数。voidfun(char*a){inti=0,n=0;char*p;p=a;while(*p==′*′)/*判断*p是否是*号,并统计*号的个数*/{n++;p++;}while(*p)/*将前导*号后的字符传递给a*/{a[i]=*p;i++;p++;}while(n!=0){a[i]=′*′;i++;n--;}a[i]=′\0′;}20编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12时,调用该函数后,c=1524。voidfun(inta,intb,long*c){*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;}21编写函数fun,其功能是计算:ln(1)ln(2)ln(3)ln()sm……s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引

1 / 100
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功