计算机二级计算机编程题.docx
- 1、本文(计算机二级计算机编程题.docx)为本站会员“旺旺仙贝”上传,本站基于“C2C”交易模式,作为网络中间平台服务商,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文侵犯了您的版权或隐私,请点击联系右侧客服图标,依法按向我们提交证明材料,经审查核实后我们会立即删除!
- 2、本站文档均被视为“模版”,允许上传人保留章节、目录结构的情况下删减部份的内容,且文档部份内容可以预览的,作为网络中间平台服务商,我们无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,也不承担因使用下载文档造成任何形式的伤害或损失。
- 3、本站文档所见即所得,不包含任何额外内容。比如视频、音频、图纸以及其它形式源文档等附件。
- 4、如果您仍有任何不清楚的问题,或者需要我们协助,可以点击右侧栏的客服图标,按提示联系我们。
2011年全国计算机二级C语言上机题题库1:第1题:m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。答案:int ftin(int score[],int m,int below[]){int i,k=0,aver=0;fbr(i=O;i<tn;i++)aver+=score[i];aver/=m;fbr(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2:第2题:试编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。答案:void fun(int*a,int*n){int ij=0;fbr(i=2;i<1000;i++)if((i%7=0||i%l 1=0)&&i%77!=0)a[j++]=i;*n=j;}3:第3题:请编写函数voidfun(intx,intpp口,int*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。答案:void fun(int x,int pp[],int*n){int i=l j=O;k=O,*t=pp;for(i=0;i<=x;i-H-)if(i%2!=0){j++;}for(i=0;i<j;i++)if(x%t[i]=O){pp[k]=t[i];k++;}*n=k;}4:第4题:请编写一个函数void fun(char*tt,int pp[D,统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。答案:void fun(char*tt,int pp[]){int i;for(i=0;i<26;i++)pp[i]=O;while(*tt){switch(*tt){case 4a\pp[O]++;break;case,b’:pp[l]-H-;break;case pp[2]-H-;break;case d:pp[3]++;break;case’e’:pp[4]++;break;case T:pp[5]-H-;break;case 4g\pp[6]++;break;case’h’:pp[7]++;break;case pp[8]-H-;break;case€j\pp[9]-H-;break;case 4k\pp[10]++;break;case T:pp[11]+-i-;break;case pp[12]-H-;break;case,n’:pp[12]++;break;case,o’:pp[14]++;break;case’p5:pp[15]-H-;break;case,q’:pp[16]++;break;case 4r\pp[17]-H-;break;case S:pp[18]-H-;break;case pp[19]++;break;case pp[20]-H-;break;case’v5:pp[21]++;break;case 4w\pp[22]++;break;case fcx\pp[23]++;break;case 4y\pp[24]-H-;break;case 4z\pp[25]++;break;}tt++;}}5:第5题:请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。答案:void fun(int m,int k,int xx[]){int g=O,Ij,flag=l;fbr(i=m+l;i<m*m;i++){fbr(j=O;j<I;j-H-){if(i%j!=O)flag=l;else{flag=0;break;}}if(flag==l&&j>=i){if(k>=0){xx[g++]=i;k—;}else break;}}}6:第6题:请编写一个函数void fim(char a口,char[],intn),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。答案:void fun(char a[],char b[],int n){int Ij=0;for(i=0;i<LEN;i++)if(i!=n){b[j]=a[i];j++;}b[j]=t\O,;}7:第7题:请编写一个函数int fun(int*s,int t,int*k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。答案:void fun(int*s,int t,int*k){int I,max;max=s[0];fbr(i=O;i<t;i-H-)if(s[i]>max){max=s[i];*k=I;}}8:第8题:编写函数fiin,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)++17(1+2+3+4++n)答案:float fun(int n){int i;float s=1.0,t=1.0;for(i=2;i<=n;i++){t=t+i;s=s+l/t;}return s;}9:第9题:编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>no p=m!/n!(m-n)!答案:float fun(int m,int n){float p,t=l.O;int I;for(i=l;i<=m;i++)t=t*I;p=t;fbr(t=1.0,i=l;i<=n;i++)t=t*I;p=p/t;for(t=1,0,i=1;i<=m-n;i++)t=t*I;p=p/t;returnp;}10:第10题:编写函数fun,它的功能是:利用以F的简单迭代方法求方程cos(x)-x=0的一个实根。迭代步骤如下:⑴取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.739085o答案:float fun(){float xl=0.0,x0;do{x0=xl;xl=cos(x0);}while(fabs(x0-x 1)>1 e-6);return x 1;}11:第11题:下列程序定义了nxn的二维数组,并在主函数中自动赋值。请编写函数ftin(inta[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。答案:int fun(int a[][N]){int I,j;fbr(i=0;i<N;i++)fbr(j=O;j<=Iy++)a[i][j]=O;}12:第12题:下列程序定义了nxn的二维数组,并在主函数中赋值。请编写函数fim,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。答案:double fun(int w[][N]){int I,j,k=O;double s=0.0;for(j=0;j<Nj-H-){s+=w[0][j];k++;}for(j=0;j<Ny-H-){s+=w[N-l][j];k++;}for(i=l;i<=N-2;i++){s+=w[i][0];k++;}fbr(i=l;i<=N-2;i++){s+=w[i][N-l];k++;}return s/=k;}13:第13题:请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。答案:void fun(int tt[M][N],int pp[N]){int I j,min;for(j=0;j<N;j++){min=tt[0][j];for(i=0;i<M;i++){if(tt[i][j]<min)min=tt[i]D];}pp[j]=min;})14:第14题:请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。答案:int fun(int a[M][N]){int Ij,s=O;for(j=Oj<N;j-H-){s+=a[O][j];s+=a[M-l][j];}for(i=l;i<=M-2;i++){s+=a[i][0];s+=a[i][N-l];}return s;}15:第15题:请编写一个函数unsigned fun(unsigned w),w使一个大于10的无符号整数,若w使n(nN2)位的整数,则函数求出w后n—1位的数作为函数值返回。答案:unsigned fun(unsigned w){unsigned t,s=0,sl=l,p=0;t=w;while(t>10){if(t/10)p=t%10;s=s+p*sl;sl=sl*10;t=t/10;}return s;}16:第16题:诗编写一个函数float fun(doubleh),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。答案:float fun(float h){long t;float s;h=h*1000;t=(h+5)/10;s=(float)t/100.0;return s;}17:第17题:请编写一个函数fun(char*s),该函数的功能使把字符串中的内容拟置。答案:void fun(char*s){char ch;int I,m,n;i=0;m=n=strlen(s)-l;while(i<(n+l)/2){ch=s[i];s[i]=s[m];s[m]=ch;i++;m—;}}18:第18题:编写程序,实现矩阵(3行3歹!J)的转置(即行列互换)。答案:void fun(int array[3][3]){int Ij,temp;for(i=0;i<3;i++)fbr(j=Oij<Ij++){temp=array[i][j];array[i][j]=array[j][i];array[j][i]=temp;}}19:第19题:编写函数fun,该函数的功能是:从字符中删除指定的字符,同,字母的大、小写按不同字符处理。答案:void fun(char s[],int c){int i=0;char*p;p=s;while(*p){if(*p!=c){s[i]=*p;i++;}p++;}s[i]=t\0,;}20:第20题:编写函数int 1im,intaa[max]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。答案:int lim,int aa[MAX]){int k=0,Ij;fbr(i=lim;i>l;i—){fbr(j=2;j Vi;j++)if(i%j=O)break;else continue;if(j>=i){aa[k]=i;k++;}}returnk++;}21:第21题:请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。答案:void fun(char*s,int num){char t;int I j;fdr(i=1;i<num-2;i-H-)fbr(j=i+l j<num-1;j++)ifi[s[i]<s[j]){t=s[i];s[i]=s[j];s[j]=t;})22:第22题:n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。答案:double fiin(STREC*h){double max;STREC*q=h;max=h->s;do{ifi(q->s>max)max=q->s;q=q->next;}while(q!=0);return max;}23:第23题:请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出noo回文是指顺读和倒读都是一样的字符串。答案:int fun(char*str){int I,n=0;fg=l;char*p=str;while(*p){n++;p++;}fbr(i=O;i<n/2;i++)if(str[i]=str[n-l-i]);else{fg=O;break;}return fg;}24:第24题:请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。答案:long fun(char*p){long s=O,t;int i=Oj,n=strlen(p),k,sl;if(p[O]==’・’)i++;for(j=Ia<=n4j-H-){t=p[j]-4O,;sl=10;fbr(k=j;k<n-l;k++)t*=sl;s+=t;}if(p[O]==’-’)return-s;else return s;}25:第25题:请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。答案:char*fun(char*s,char*t){char*p,*tl=t,*sl=s;int n=0;m=0;while(*sl){n-H-;sl-H-;}while(*tl){m++;tl++;}if(n>=m)p=s;else p=t;return p;}第26题:请编写一个函数fun,它的功能是:根据以下公式求x的值(要求满足精度0.0005,即某项小于0.0005时停止迭第26题:请编写一个函数fun,它的功能是:根据以下公式求x的值(要求满足精度0.0005,即某项小于0.0005时停止迭代)x/2=l+l/3+lx2/3x5+lx2x3/3x5x7+lx2x3x4/3x5x7x9+…+”2x3x…x n/3x5x7x(2n+l)程序运行后,如果输入精度0.0005,则程序输出为3.14...O答案:double fun(double eps)(doubles;float n,t,pi;t=1;pi=0;n=1.0;s=1.0;while((fabs(s))>=eps){pi+=s;t=n/(2*n+l);s*=t;n++;}pi=pi*2;return pi;}27:第27题:请编写一个函数ftin,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a中,通过n返回这些数的个数。答案:void fun(int m,int*a,int*n){int IJ=0;*n=0;for(i=l;i<=in;i++)if(i%7==0||i%ll==0){a[j]=I;j++;}*n=j;}28:第28题:请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的卜,标。答案:void fiin(int a[],int n,int*max,int*d){int I;*max=a[0];*d=0;fbr(i=0;I<n;i-H-)ifi[a[i]>*max){*max=a[i];*d=I;})29:第29题:请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。答案:void fun(char*ss){int I,n;n=strlen(ss);fbr(i=l;i<n;i+=2)if(ss[i]>=la,&&ss[i]<=’z’)ss[i]=ss[i]-32;}30:第30题:请编写一个函数firn,它的功能是:求除一个2xm整型二维数组中最大元素的值,并将此值返回调用函数。答案:intfim(int a[][M]){int Ij,max;max=a[0][0];for(i=0;i<2;i++)for(j=OJ<M;j++)if(a[i][j]>max)max=a[i][j];return max;}31:第31题:请编写函数fiin,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。答案:void fun(char*s,char⑪{int Ij=0,n;n=strlen(s);fbr(i=0;I,n;i++)0&&s[i]%2=0){t[j]=s[i];j++;}}32:第32题:请编写函数fim,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,申中剩余字符所形成的一个新串放在t所指的一个数组中。答案:void fun(char*s,chart[]){int I,j=O,n;n=strlen(s);for(i=0;I,n;i-H-)if(i%2!=0&&s[i]%2!=0){t[j]=s[i];j++;}t[j]=s\O>;}33:第33题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。答案:void fun(char*a,int n){int i=0;k=0;char*p,*t;p=t=a;while(*t)t++;t-;while(*t=’*’){k++;t—;}t++;if(k>n){while(*p&&p<t+n){a[i]=*p;i++;p++;}a[i]=*\0’;}}34:第34题:学生的记录由学号和成绩组成,名学生的数据已在主函数中放入n结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。答案:int fun(STREC*a,STREC*b){int Ij=0,n=0,max;max=a[0].s;for(i=0;i<N;i-H-)ifl[a[i].s>max)max=a[i].s;for(i=0;i<N;i++)ifi[a[i].s==max){*(b+j)=a[i];j++;n++;}return n;}35:第35题:请编写一个函数,用来删除字符串中的所有空格。答案:void fun(char*str){int i=0;char*p=str;while(*p){iR*p!="){str[i]=*p;i++;}p++;}str[i]=4\0,;}36:第36题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。答案:void fim(char*a){int i=0,n=0;char*p;p=a;while(*p=’*’){n++;p++;}while(*p){a[i]=*p;i++;p++;}while(n!=0){a[i]=’*’;i++;n-;}a[i]=l\0,;}37:第37题:某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。答案:void fun(STREC*p){double av=0.0;int i:fbr(i=O;i<N;i-H-)av+=p->s[i];av/=N;p->ave=av;}38:第38题:请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。答案:int fun(char*ss,char c){int n=0;while(*ss){if(*ss=c)n++;ss++;}return n;}39:第39题:请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n—1)的数组元素平移到数组的最后。答案:void fun(int*w,int p,int n){int b[N],i,j=0;fbr(i=O;i<=p;i++){b[i]=w[i];j++;}fbr(i=O;i<=p;i++){w[j]=b[i];j++;}}40:第40题:请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。答案:void fonCchar*w,int m){char b[N];int 1 j=0;for(i=0;i<m;i++){b[j]=w[i];j++;}for(i=0;i<strlen(w)-m;i++)w[i]=w[i+m];fbr(j=0j<mj++){w[i]=b|j];i++;}w[i]=’\0,;}41:第41题:请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。答案:void fiin(char(*s)[n],char*b){int ij,k=O;for(j=0;j<n;j++)fbr(i=0;i<m;i++){b[k]=*(*(s+i)+j)k++;}b[k]=t\O);}42:第42题:下列程序定义了"n的二维数组,并在主函数中自动赋值。请编写函数ftin(inta[][n],intn),该函数的功能是:将数组右上半三角元素中的值乘以m。答案:void fbn(int int m){int ij;fbr(j=O;j<n;j++)fbr(i=O;i<=j;i++)a[j]=a[j]*m;}43:第43题:编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。答案:char*fiin(char(*a)[81],int num){int i;char*max;max=a[0];for(i=0;i<num;i++)ifi[strlen(max)<strlen(a))max=a;return max;}44:第44题:编写一个函数,该函数可以统计一个长度为2的字符串在另•个字符串中出现的次数。答案:int fun(char*str,char*substr){int n;char*p,*r;n=0;while(*str){p=str;r=substr;while(*r)if(*r=*p){r++;p++;}else break;if(*r=’\O’)n++;str++;}return n;}45:第45题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用c语言给提供得字符串函数。答案:void fun(char*a,int n,int h,int e){int i=0;char*p;fbr(p=a+h;p<a+n-e;p++){*(a+i)=*p;i++;}*(a+i)=’\O’;}46:第46题:学生得记录由学号和成绩组称个,名大学生得数据已在主函数中n放入结构体数组s中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。答案:void fun(strec a[]){int ij;strec t;fbr(i=O;i<n-1;i++)for(j=i;s<n;j-H-)if(a.s<a[j].s){t=a;a=a[j];a[j]=t;})47:第47题:请编写一个函数void fim(char*ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。答案:void fun(char*ss){int i,n=0;char*p=ss;while(*p){n++;p++;}for(i=0;i<n;i++)if((ss=’a’&ss<=’z’)&i%2!=0)ss=ss-32;ss=’\0’;}48:第48题:请编写函数fun,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在C数的千位和十位上,b数的十位和个位数依次放在C数的百位和个位上。答案:void fun(int a,int b,long*c){*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;}49:第49题:请编写函数fun,其功能是:s所指字符串中下标位偶数同时ascii将值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。答案:void fun(char*s,char t[]){int ij=O,n=strlen(s);fbr(i=O;i<n;i-H-)if(i%2=0&s%2!=0)else{f[j]=s;j++;}t[j]=t\O,;}50:第50题:已知学生的记录是由学号和学习成绩构成,名学生的数据已存入na机构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。答案:void fiin(stu a[],stu*s){int i,max;max=a[0].s;for(i=0;i<n;i++)if(a.s>max){max=a.s;*s=a;}}51:第51题:请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。答案:void fun(int m,int*k,int xx[]){int ij;int t=0;fbr(i=2;i<m;i++){j=2;while(j<i){if(i%j=0){xx[t]=i;t++;break;}j++;}*k=t;}}52:第52题:编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到pl所指的字符串后。答案:void fun(charpl[],charp2[]){int i=0,n=0;char*p=pl,*q=p2;while(*p){p++;n-H-;}i=n;while(*p){pl=*q;q++;i++;}pl=4\0,;}53:第53题:请编写函数fun,该函数的功能是:实现b=a+a,即把矩阵a加上a的转置,存放在矩阵b中。计算结果在main函数中输出。答案:void fun(int a[3][3],int b[3][3]){int ij,at[3][3];for(i=0;i<=2;i-H-)fbr(j=O;j<=2j++)at[j]=a[j];for(i=0;i<3;i++)fbr(j=0;j<3;j++)b[j]=a[j]+at[j];}54:第54题:学生的记录由学号和成绩组称个,名学生的数据已在主函数中放n入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。答案:double fun(strec*a,strec*b,int*n){double aver=0.0;int ij=0;*n=0;for(i=0;i<n;i++)aver+=a.s;aver/=n;fbr(i=0;i<n;i++)ifl[a.s<aver){b[j]=a;(*n)++;j++;}return aver;55:第55题:请编写函数fun,该函数的功能是:将m行n列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的储存单元中。答案:void fun(int(*s)[10],int*b,int*n,int mm,int nn){int ij;fbr(i=O;i<mm;i-H-)fbr(j=O;j<nnj++){b[*n]=*(*(s+i)+j);*n=*n+l;}}56:第56题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字母串中其他*号全部删除。形参p已指向字符串中最后的一个字母。不使用c的字符串函数。答案:void fun(char*a,char*p){int i=0;char*p=a;while(q<=p){if(*q!=’*’){a=*q;i++;}q++;}while(*q){a=*q;i++;q++;}a=i\0*;}57:第57题:学生的记录是由学号和成绩组成,名学生的数据已在主函数中放n入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。答案:int fun(strec*a,strec*b,int l,int h){int ij=0;fbr(i=O;i<n;i++)if(a.s>=l&a,s<=h){b[j]=a;j++;}returnj;}58:第58题:编写函数藏服那,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。答案:double fun(int n){double s=0.0;int i;for(i=l;i<n;i++)if(i%3=0&i%7=0)s=s+i;s=sqrt(s);return s;}59:第59题:请别写函数fun,该函数的功能是:将放在字符串数组中的m个字符串(每串的长度不超过n),按顺序合并组成一个新的字符串。答案:void fun(char a[m][n],char*b){int ij,k=O;for(i=0;i<m;i++){fbr(j=Oj<nj-H-)if(*(*(a+i)+j)){b[k]=*(*(a+i)+j)k++;}else break;b[k]=*\0,;}}60:第60题:请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。答案:int fun(int a[],int n){int i,tj=O,*p=a;t=p[O];fbr(i=0;i<=n;i++)if(t=p);else{a[j]=t;t=p;j++;}if(i>=n)a[j]=t;return j;}61:第61题:第请编写函数fun,该函数的功能使:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[l]中,把20至29岁的人数放在d[2]中,其余以此类推,把100岁(含100以上年龄的人数都放在d[10]中。结果在主函数中输出。答案:void fiin(int*a,int*b){int ij;fbr(j=O;i<m;j-H-)b[j]=O;fbr(i=O;i<n;i++)if<a>=0&a<=9)b[0]+=l;else ifi[a>=10&a<=19)b[l]+=l;else if(a>=20&a<=29)b[2]+=l;else if(a>=30&a<=39)b[3]+=l;else if(a>=40&a<=49)b[4]+=l;else ifi[a>=50&a<=59)b[5]+=l;else if(a>=60&a<=69)b[6]+=l;else ifl[a>=70&a<=79)b[7]+=l;else if(a>=80&a<=89)b[8]+=l;else if(a>=90&a<=99)b[9]+=l;else b[10]+=l;}62:第62题:请编写函数fun,该函数的功能是:统一一含字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。答案:int fun(char♦s){int i,n=0;for(i=0;i<strien(s);i++){if(s=’a’&s<=’z’&s[i+l]=’’II s[i+l]=’\0’)n++;}return n;}63:第63题:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。答案:int fiin(int n){int s=0,i;fbr(i=2;i<=n-l;i++)ifl[n%i=0)s+=i;returns;}64:第64题:请编写函数fun,其功能是:s所指字符串中ascii值为奇数的字将符删除,串中剩余字符形成一个新串放在t所指的数组中。答案:void fun(char*s,char t[]){int ij=O,n;n=strlen(s);fbr(i=O;i<n;i++)if(s%2==0){t[j]=s;j++;}t[j]=€\O,;}65:第65题:请编写函数fun,其功能是:将两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。答案:void fun(int a,int bjong*c){*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;}66:第66题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。答案:void fun(char*a){int i=0;char*p=a;while(*p){ifpk*,){a=*p;i++;}p++;}a=1\0>;67:第67题:学生的记录时由学号和成绩组成,名学生的数据已在主函数中放n入结构体数组s中,请编写函数fun,它的功能时:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数时strcmp)。答案:strec fun(strec*,char*b){int i;strec h;fbr(i=0;i<n;i++)if(strcmp(a.num,b)=O){h=a;break;}else{h.num—"’;h.s=-l;}return h;}68:第68题:请编写函数firn,其功能时:计算并输出下列多项式的值:sn=l+l/l!+l/2!+l/3!+l/4!+...+l/n!答案:sn=l+l/l!+l/2!+l/3!+l/4!+...4-l/n!double fiin(int n){double t,sn=1.0;int i,j;fbr(i=l;i<n;i-H-){t=1.0;for(j=l;j<=iy++)t*j;sn+=1.0/t;}return sn;}69:第69题:请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列f(n)的定义为:f(O)=O,f(1)=1,f(n)=f(n-1)+f(n-2)答案:f(O)=O,f(1)=1,f(n)=f(n-1)+f(n-2)int fiin(int t){int a=l,b=l,c=0,i;fbr(i=4;i<=t;i++){ifi[c<t){c=a+b;a=b;b=c;}else break;}return c;}70:第70题:编写函数fun,它的功能时:计算并输出下列级数和:s=l/l*2+l/2*3+...4-l/n(n+l)答案:double fun(int n){double s=0.0;int i;fbr(i=l;iV=n;i++)s=s+1.0/(i*(i+l));return s;}71:第71题:请编写函数fun,其功能时:将两个两位数的正整数a、b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b的十位和个位整数依次放在c数的百位和个位上。答案:void fun(int a,int b,long*c){*c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10;}72:第72题:请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。答案:void fun(char*s,char t[]){int ij=O,n=strlen(s);fbr(i=0;i<n;i++)if(i%2!=0){t[j]=s;j++;}t[j]=4\O,;}73:第73题:假定输入的字符串中只包含字母和*号,请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将申中其他*号全部删除。形参h已指向字符串第一个字符,形参p已指向字符串中最后一个字母。在编写程序时,不得使用c语言提供的字符串函数。答案:void fun(char*a,char*h,char*p){int i=0;char*q=a;while(q<h){a=*q;q++;i++;}while(q<p){if(*q!=’’*){a=*q;i++;}q++;}while(*q){a=*q;i++;q++;}a=’0’;}74:第74题:学生的记录由学号和成绩组成n名学生的数据已在主函数中放入结构体数组s中,请编写函数fiin,它的功能时:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。答案:int fun(strec*a,strec*b){int ij=0,n=0,min;min=a[0].s;fbr(i=O;iVn;i++)if(a.s<min)min=a.s;fbr(i=O;i<n;i++)if(a.s—min){*(b+j)=a;j++;n++;}return n;}75:第75题:请编写函数fun,该函数的功能:将m行n列的二维数组中的数据,按列的顺学依次放到一维数组中。答案:voidftm(int(*s)[]10,int*b,int*n,intmm,intnn){intiJ;fbr(j=O;j<nnj++)fbr(i=O;i<mm;i++){b[*n]=*(*(s+i)+j);*n=*n+l;}}第76题:请编写函数fun,其功能时:计算并输出当x<0.97时下列多项式的值,直到I sn-s(n-l)I<0.000001为止。Sn=l+O.5x+O.5(O,5-1)/2!x(2)+...+O.5(O,5-1)(0.5-2)(0.5-n+l)/n!x(n)答案:.double fun(double x){double s 1=1.0,p=1.0,sum=0.0,s0,t=1.0;int n=1;do{sO=sl;sum+=s0;t*=n;p*=(0.5-n+l)*x;sl=p/t;n++;}while(fabs(sl-s0)>le-6);return sum;}77:第77题:请编写一个函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。答案:void fiin(int a,int b,long*c){*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;}78:第78题:请编写函数fun,其功能是:s所指字符串中ascii值为偶数的字将符删除,申中剩余字符形成一个新串放在t所指的数组中。答案:void fun(char*s,chart[]){int ij=0,n=strlen(s);for(i=0;i<n;i-H-)if(s%2!=0){t[j]=s;j++;}t[j]=)(r;}79:第79题:已知学生的记录由学号和学习成绩构成,n名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。答案:void fun(stu a[],stu*s){int i,min;min=a[0].s;for(i=0;i<n;i++)if(a.s<min){min=a.s;*s=a;}}80:第80题:程序定义了nxn的二维数组,并在主函数中自动赋值。请编写函数firn,该函数的功能是:使数组左下半三角元素中的值乘以n。答案:fun(int a[][n],int n){int ij;for(i=0;i<n;i++)fbr(j=O;j<=ij++)a[j]=a[j]*n;)81:第81题:请编写函数fun,其功能使:将两个两位正整数ab合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位匕答案:void fun(int a,int b,long*c){*c=(b/10)*1000+(a/10)*100+(b%l0)*10+a%10;}82:第82题:请编写一个函数fim,它的功能使:计算n门课程的平均分,计算结果作为函数值返回。答案:float fun(float*a,intn){float ave=0.0;int i;fbr(i=0;i<n;i++)ave+=a;ave/=n;return ave;}83:第83题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。答案:void fun(char*a){int i=0;char*p,*q;p=q=a;while(*p)p++;p___;while(*p==,*’)p___;while(q〈=p){a=*q;i++;q++;}a=\(T;}84:第84题:请编写函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和白.位上,b数的十位和个位数依次放在c数的千位和十位上。答案:void fun(int a,int b,long*c){c=(b/l0)*1000+(a%l0)*100+(b%l0)*10+a/l0;}85:第85题:n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数ftm,它的功能是:求出平均分,由函数值返回。答案:double fun(strec*h){double aver=0.0;while(h!=null){avert-=h->s;hy=h->next;}aver/=n;return aver;}86:第86题:请编写函数fun,计算并输出给定10个数的方差。答案:double fun(double x[10]){int ij;double s=0.0,sl=0.0;for(i=0;i<10;i++)sl+=x;sl/=10;for(j=0;j<10;j++)s+=(x[j]-sl)*(x[j]-s 1);s/=10;s=pow(s,0.5);return s;}87:第87题:请编写函数fun,其功能是:将两个两位数的正整数ab合并形成•个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。答案:void fUn(int a,int b,long*c){*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/l0;}88:第88题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数亚时,不得使用c语言提供的字符串函数。答案:void fun(char*a){int i=0;char*p=a;while(*p&&*p=’*’){a=*p;i++;p++;}while(*p){if(*p!=’*’){a=*p;i++;}p++;}a=\(T;}89:第89题:学生的记录是由学号和成绩组成,名学生的数据已在主函数中放n入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。答案:double fun(strec*a,strec*b,int*n)(double aver=0.0;int ij=0;fbr(i=0;i<n;i-H-)aver+=a.s;aver/=n;for(i=0;i<n;i++)if(a.s)>=aver}{*(b+j)=a;j++;}*n可;return aver;}90:第90题:请编写函数fun,其功能是:计算并输出下列多项式值:sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-l)l/2n).答案;sn=(l-l/2)+(1/3-1/4)+...+(l/(2n-l)1/2n).double fun(int n){int i;double sn=0.0;fbr(i=l;i<=n;i++)sn+=(1.0/(2*i-1)-1.0/(2*i));return sn;}91:第91题:请编写函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。答案:void fun(int a,血b,long*c){*c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;}92:第92题:请编写函数fun,它的功能是计算:s=(ln(1)+ln(2)+ln(3)+...+ln(m))(0.5),s作为函数值返回。答案:double fun(int m){int I;double s=0.0,log(double x);fbr(i=l;i<=m;i-H-)s=s+log(i);s=sqrt(s);return s;}93:第93题:请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。S=l+x+x(2)/2!+x⑶/3!+…x(n)/n!答案:double fun(double x,int n){double s=1.0,p=1.0;int fbr(i=l;i<=n;i++){t=l;for(j=l;j<=ij++)t=t*j;p=p*x;s=s+p/t;}return s;}94:第94题:规定输入字符串中只包含字母和*号。请编写函数ftin,它的功能是:将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。答案:void fun(char*a){int i=0;char*p=a;while(*p&&*p==,*。p++;while(*p){a[i]=*p;i++;p++;}}95:第95题:假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做。字符串中间和尾部的*号不删除。答案:void fun(char*a,int n){int i=0,k=0;char*t=a;while(*t=’*’){k++;t++;}t=a;if(k>n)t=a+k-n;while(*t){a[i]=*t;i++;t++;}a[i]=<\0,;}96:第96题:请编写函数fun,其功能使:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。答案:double fun(double x[9]){double sum=0.0;int I,j=l;fbr(i=O;i<9;i++)if(j<=8){sum+=sqrt((x[i]4-x[i+l])/2.0);j++;}return sum;}97:第97题:请编写函数fun,其功能是:计算并输出下列多项式值:s=l+l/(l+2)+l/(l+2+3)+..l/(l+2+3…+50)答案:double fun(int n){int I,j;double sum=0.0,t;fbr(i=l;iV=n;i++){t=0.0;fbr(j=l;j<=I;j-l-»-)t+=j;sum+=1.0/t;}return sum;}98:第98题:请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。答案:double fun(int n){int I;double sum=0.0;fbr(i=l;i<=n;i++)ifi(i%5=0||i%9=0)sum+=1.0/I;return sum;}99:第99题:请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。答案:double fiin(int n){int m,k,I;double s=0.0;fbr(m=3;m<=n;m++){k=sqrt(m);fbr(i=2;i<=k;i-H-)if(m%i=0)break;if(i>=k+l)s+=sqrt(m);}return s;}100:第100题:请编写函数fun,其功能是:计算并输出s=l+(l+2(0.5))+(l+2(0.5)+3(0.5))+…+(l+2(0.5)+3(0.5)+..・+n(0.5))答案:double fun(int n){int I;double=1.0,p=1.0;fbr(i=2;i<=n;i++){p+=pow(I,0.5);s+=p;}return。
""""""此处省略40%,请登录会员,阅读正文所有内容。这里是常见问题内容示例,可替换为实际内容。
