编程题目及答案100题_第1页
编程题目及答案100题_第2页
编程题目及答案100题_第3页
编程题目及答案100题_第4页
编程题目及答案100题_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1:第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指定的数组中。答案:#include"stdio.h"#definen10intfun(intscore[],intbelow[],intm){inti,p=0,j=0;for(i=0;i<m;i++)p+=score[i];p/=m;for(i=0;i<m;i++)if(score[i]<p)below[j++]=score[i];returnj;}main(){inti,num,score[n]={10,20,30,40,50,60,70,80,90,100},below[n];for(i=0;i<n;i++)printf("%-6d",score[i]);num=fun(score,below,n);printf("\nnum=%d\n",num);for(i=0;i<num;i++)printf("%-5d",below[i]);printf("\n\n\n");}2:第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。答案:#include"stdio.h"intfun(inta[]){inti,j=0;for(i=1;i<100;i++)if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0))a[j++]=i;returnj;}main(){inti,n,a[100];n=fun(a);printf("\n\n\nn=%d",n);for(i=0;i<n;i++){if(i%5==0)printf("\n");printf("%-5d",a[i]);}}3:第3题请编写函数voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。答案:#include"stdio.h"voidfun(intx,intpp[],int*n){inti,j=0;for(i=1;i<=x;i++)if(x%i==0&&i%2)pp[j++]=i;*n=j;}main(){inti,x,pp[20],n;printf("\n\nx=");scanf("%d",&x);fun(x,pp,&n);printf("\nn=%d\n",n);for(i=0;i<n;i++)printf("%-5d",pp[i]);}4:第4题请编写一个函数voidfun(char*tt,intpp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。答案:#include"stdio.h"#include"string.h"voidfun(char*tt,intpp[]){inti,j=0;for(i=0;i<strlen(tt);i++)if(tt[i]>='a'&&tt[i]<='z')pp[(tt[i]-'a')]++;}main(){char*tt="abcdeasjfewjndsz";inti,pp[26];for(i=0;i<26;i++)pp[i]=0;puts(tt);fun(tt,pp);for(i=0;i<26;i++){if(i%5==0)printf("\n\n");printf("%c:%-6d",i+'a',pp[i]);}printf("\n\n");}}5:第5题请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。答案:#include"stdio.h"voidfun(intm,intk,intxx[]){inti,j,n=0;for(i=m+1;n<=k;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i)xx[n++]=i;}}main(){inti,xx[100],m=10,k=5;fun(m,k,xx);printf("\n\nm=%d,k=%d\n",m,k);for(i=0;i<k;i++)printf("%-5d",xx[i]);}6:第6题请编写一个函数voidfun(chara[],charb[],intn),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。答案:include"stdio.h"#include"string.h"voidfun(chara[],charb[],intn){inti,j=0;for(i=0;i<strlen(a);i++)if(i!=n)b[j++]=a[i];b[j]='\0';}main(){char*a="abcdefg",b[20];intn;puts(a);printf("\n\n\nn=");scanf("%d",&n);while(n<0||n>=strlen(a)){printf("NO,n=");scanf("%d",&n);}fun(a,b,n);puts(b);}7:第7题请编写一个函数intfun(int*s,intt,int*k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。答案:#include"stdio.h"intfun(int*s,intt,int*k){inti,m=s[0];*k=0;for(i=0;i<t;i++)if(m<s[i]){m=s[i];*k=i;}}main(){ints[6]={87,34,90,43,454,45},i,k;for(i=0;i<6;i++)printf("%5d",s[i]);fun(s,6,&k);printf("\nk=%d\n\n",k);}8:第8题编写函数fun,功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n)答案:#include<stdio.h>doublefun(intn){inti,t=0;doublep,s=0.0;for(i=1;i<=n;i++){t+=i;p=1.0/t;s=s+p;}returns;}main(){intn;doubles;printf("\nn=");scanf("%d",&n);s=fun(n);printf("\ns=%lf\n\n",s);}9:第9题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n。p=m!/n!(m-n)!答案:#include"stdio.h"doublefun(intm,intn){doublei,j,k=1.0,d=1.0,p;for(i=1;i<=m;i++)k*=i;for(j=1;j<=n;j++)d*=j;for(i=1;i<=m-n;i++)d*=i;returnk/d;}main(){intm,n;doublep;printf("mandn");scanf("%d%d",&m,&n);p=fun(m,n);printf("\n%lf\n\n",p);}10:第10题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。迭代步骤如下:(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.739085。答案:#include"stdio.h"#include"math.h"floatfun(){floatx1=0.0,x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=1e-6);returnx1;}main(){printf("\n%f\n",fun());}11:第11题下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。答案:#include"stdio.h"#defineN4voidfun(inta[][N]){inti,j;for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i][j]=0;}main(){inti,j,a[N][N];for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%-5d",a[i][j]=rand()%100);printf("\n");}fun(a);printf("\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%-5d",a[i][j]);printf("\n");}printf("\n\n");}12:第12题下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。答案:#include"stdio.h"#defineN3doublefun(inta[N][N]){inti,j,k=0;doubles=0.0;for(i=0;i<N;i++){s+=a[0][i]+a[N-1][i];k+=2;}for(j=1;j<N-1;j++){s+=a[j][0]+a[j][N-1];k+=2;}returns/=k;}main(){inti,j,a[N][N]={20,20,30,45,50,60,70,80,20};doubles;for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%-5d",a[i][j]);printf("\n");}s=fun(a);printf("\ns=%lf\n\n",s);}13:第13题请编写一个函数voidfun(inttt[m][n],intpp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。答案:#include"stdio.h"#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){inti,j,t,m=0;for(i=0;i<N;i++){t=tt[0][i];for(j=0;j<M;j++)if(t>tt[j][i])t=tt[j][i];pp[m++]=t;}}main(){inti,j,tt[M][N],pp[N];for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%-5d",tt[i][j]=rand()%100);printf("\n");}fun(tt,pp);printf("\n");for(i=0;i<N;i++)printf("%-5d",pp[i]);printf("\n\n");}14:第14题请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。答案:#include"stdio.h"#defineM3#defineN4intfun(inta[M][N]){inti,j,m=0;for(j=0;j<N;j++){m+=a[0][j];m+=a[M-1][j];}for(i=1;i<=M-2;i++){m+=a[i][0];m+=a[i][N-1];}returnm;}main(){inta[M][N]/*={1,2,3,4,5,6,7,8,9,10,11,12}*/,i,j,m;for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%-5d",a[i][j]=rand()%10);printf("\n");}m=fun(a);printf("m=%d\n\n",m);}15:第15题请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。答案:#include"stdio.h"#definen4unsignedfun(unsignedw){unsignedt,s=0,m=1,p=0;t=w;while(t>10){if(t/10)s+=t%10*m;m=m*10;t=t/10;}returns;}main(){unsignedw;printf("w=");scanf("%u",&w);printf("%u\n\n",fun(w));}16:第16题请编写一个函数floatfun(doubleh),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。答案:#include"stdio.h"floatfun(doubleh){longj;floats;h=h*1000;j=(h+5)/10;s=(float)(j/100.0);returns;}main(){floath;printf("\nh=");scanf("%f",&h);printf("\n%.2f\n\n",fun(h));}17:第17题请编写一个函数fun(char*s),该函数的功能使把字符串中的内容逆置。答案:#include"stdio.h"#include"string.h"voidfun(char*a){inti,m=strlen(a);chart;for(i=0;i<m/2;i++){t=a[i];a[i]=a[m-i-1];a[m-1-i]=t;}}main(){char*a="abcdefghij";puts(a);fun(a);puts(a);printf("\n\n");}18:第18题编写程序,实现矩阵(3行3列)的转置(即行列互换)。答案:#include"stdio.h"#defineN3voidfun(inta[N][N]){intm,i,j;for(i=0;i<N;i++)for(j=i;j<N;j++){m=a[i][j];a[i][j]=a[j][i];a[j][i]=m;}}main(){inta[N][N],i,j;for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%-5d",a[i][j]=rand()%100);printf("\n");}printf("\n\n\n");fun(a);for(i=0;i<N;i++){for(j=0;j<N;j++) printf("%-5d",a[i][j]); printf("\n");}printf("\n\n");}19:第19题编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。答案:#include"stdio.h"#include"string.h"voidfun(char*a,charm){inti,j=0;for(i=0;i<strlen(a);i++)if(m!=a[i])a[j++]=a[i];a[j]='\0';}main(){char*a="abcdefadsf",b;puts(a);printf("b:");scanf("%c",&b);fun(a,b);puts(a);}20:第20题编写函数intfun(intlim,intaa[max]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。答案:#include"stdio.h"#defineMAX100intfun(intlim,intaa[MAX]){inti,j,m=0;for(i=2;i<=lim;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i)aa[m++]=i;}returnm;}main(){inti,m,lim,aa[MAX];printf("\n\nlim=");scanf("%d",&lim);m=fun(lim,aa);for(i=0;i<m;i++)printf("%5d",aa[i]);printf("\nm=%d\n\n",m);}21:第21题请编写函数fun,对长度为7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。答案:include"stdio.h"voidfun(char*a,intn){inti,j,t;for(i=1;i<n-2;i++)for(j=i;j<n-1;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){char*a="gfedcba";puts(a);fun(a,strlen(a));puts(a);printf("\n\n");}22:第22题n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。答案:#include"stdio.h"#defineN5structstr{intfen;structstr*next;};typedefstructstrS;intfun(S*h){intm;m=h->fen;while(h!=NULL){if(m<h->fen)m=h->fen;h=h->next;}returnm;}main(){Ss[N],a,b,c,d,*h;intzfen;a.fen=98;b.fen=89;c.fen=100;d.fen=92;a.next=&b;b.next=&c;c.next=&d;d.next=NULL;h=&a;zfen=fun(h);printf("\nzfen=%d\n",zfen);}23:第23题请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。答案:#include"stdio.h"intfun(char*a){inti,j,m=strlen(a);for(i=0;i<m/2;i++)if(a[i]==a[m-i-1]);else{j=0;break;}returnj;}main(){char*a="aabccbaa";puts(a);if(fun(a)==0)printf("NO");elseprintf("YES");printf("\n\n");}24:第24题请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。答案:#include"stdio.h"#include"string.h"longfun(char*a){inti,j,n=0;longs=0;if(a[0]=='-'){for(i=1;i<strlen(a);i++){j=a[i]-'0'; s*=10; s+=j;}returns=s*-1;}else{for(i=0;i<strlen(a);i++){j=a[i]-'0'; s*=10; s+=j;}returns;}}main(){char*a="54343";longm;puts(a);m=fun(a);printf("m=%ld\n\n\n",m);}25:第25题请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。答案:#include"stdio.h"char*fun(char*a,char*b){inti=0,j=0;char*p,*a1=a,*b1=b;while(*a1){a1++;i++;}while(*b1){b1++;j++;}if(i>=j)p=a;elsep=b;returnp;}main(){char*a="abcasfasdefg",*b="abcdefghi";puts(a);puts(b);puts(fun(a,b));printf("\n");}27:第27题请编写一个函数fun,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a中,通过n返回这些数的个数。答案:#include"stdio.h"intfun(int*a,intm){inti,j=0;for(i=1;i<=m;i++)if(i%7==0||i%11==0)a[j++]=i;returnj;}main(){inti,m,n,a[100];printf("\nm=");scanf("%d",&m);n=fun(a,m);printf("n=%d\n",n);for(i=0;i<n;i++)printf("%-5d",a[i]);printf("\n\n\n");}28:第28题请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。答案:voidfun(inta[],intn,int*max,int*d){intI;*max=a[0];*d=0;for(i=0;I<n;i++)if(a[i]>*max){*max=a[i];*d=I;}}29:第29题请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。答案:voidfun(char*ss){intI,n;n=strlen(ss);for(i=1;i<n;i+=2)if(ss[i]>=‘a’&&ss[i]<=‘z’)ss[i]=ss[i]-32;}30:第30题请编写一个函数fun,它的功能是:求出一个2×m整型二维数组中最大元素的值,并将此值返回调用函数。答案:#include"stdio.h"#defineM5intfun(inta[2][M]){inti,j,m=a[0][0];for(i=0;i<2;i++)for(j=0;j<M;j++)if(m<a[i][j])m=a[i][j];returnmax;}main(){inta[2][M]={12,34,545,234,45,23,203,213,243,54},i,j,m;for(i=0;i<2;i++){for(j=0;j<M;j++)printf("%-5d",a[i][j]);printf("\n");}m=fun(a);printf("m=%d\n\n",m);}31:第31题请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。答案:#include"stdio.h"#include"string.h"voidfun(char*a,char*t){inti,j=0,m=strlen(a);for(i=0;i<m;i+=2)if(a[i]%2==0)t[j++]=a[i];t[j]='\0';}main(){chara[]="aabbccddee",t[20];puts(a);fun(a,t);puts(t);printf("\n\n");}32:第32题请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。答案:#include"stdio.h"#include"string.h"voidfun(char*a,char*t){inti,j=0,m=strlen(a);for(i=1;i<m;i+=2)if(a[i]%2)t[j++]=a[i];t[j]='\0';}main(){chara[]="aabbccddee",t[20];puts(a);fun(a,t);puts(t);}t[j]=‘\0’;}34:第34题学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。答案:#include"stdio.h"#defineN5typedefstructstr{chara[10];intb;}S;intfun(S*s,S*h){inti,j=0,m;m=s[0].b;for(i=0;i<N;i++)if(m<(s[i].b))m=s[i].b;for(i=0;i<N;i++)if(m==(s[i].b))h[j++]=s[i];returnj;}main(){Ss[N]={{"j01",98},{"j02",87},{"j03",45},{"j04",98},{"j05",78}},h[N];inti,t;for(i=0;i<N;i++)printf("\n%s,%d",s[i].a,s[i].b);t=fun(s,h);printf("\nt=%d\n",t);for(i=0;i<t;i++)printf("%s,%d\n",h[i].a,h[i].b);}35:第35题请编写一个函数,用来删除字符串中的所有空格。答案:#include"stdio.h"#include"string.h"voidfun(char*a){inti,j=0;for(i=0;i<strlen(a);i++)if(a[i]!='')a[j++]=a[i];a[j]='\0';}main(){char*a="adbcsdssdfs";puts(a);fun(a);puts(a);}36:第36题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。答案:#include"stdio.h"#include"string.h"voidfun(char*a){inti,j=0,t=0;while(a[j]=='*')j++;for(i=j;i<strlen(a);i++)a[t++]=a[i];while(--j)a[t++]='*';a[t]='\0';}main(){char*a="*****adsf";puts(a);fun(a);puts(a);}37:第37题某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。答案:#include"stdio.h"typedefstructstr{chara[10];intb[8];doubleave;}S;voidfun(S*t){inti;doubles=0.0;for(i=0;i<8;i++)s+=t->b[i];s/=8;t->ave=s;}main(){St={"j01",10,20,30,40,50,60,70,80};inti;printf("xuehao:%s\n",t.a);for(i=0;i<8;i++)printf("%-5d",t.b[i]);fun(&t);printf("\n%lf\n\n",t.ave);}38:第38题请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。答案:#include"stdio.h"intfun(char*a){inti=0;while(*a++)i++;returni;}main(){char*a="abcdefghijk";puts(a);printf("%d\n\n\n",fun(a));}40:第40题请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。答案:#include"stdio.h"#include"string.h"voidfun(char*a,intm){inti,t=0,j=strlen(a);chars=a[0];while(m--){for(i=0;i<j-1;i++)a[i]=a[i+1];a[j-1]=s;s=a[0];}}main(){char*a="abcdefg";intm;puts(a);printf("m=");scanf("%d",&m);while((m<=0)&&(m>=strlen(a)))scanf("%d",&m);fun(a,m);puts(a);printf("\n\n\n");}41:第41题请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。答案:#include"stdio.h"#defineM4#defineN6voidfun(chars[M][N],char*a){inti,j,k=0;for(i=0;i<N-1;i++)for(j=0;j<M;j++)a[k++]=s[j][i];a[k]='\0';}main(){chars[M][N]={"abcde","fghij","klmno","pqrst"},a[M*N];inti;for(i=0;i<M;i++)printf("\n%s\n",s[i]);fun(s,a);printf("\n");puts(a);printf("\n\n");}42:第42题下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][n],intn),该函数的功能是:将数组右上半三角元素中的值乘以m。答案:#include"stdio.h"#defineN5fun(inta[][N],intm){inti,j;for(i=0;i<N;i++)for(j=i;j<N;j++)a[i][j]=a[i][j]*m;}main(){inta[N][N],i,j,m;for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%-5d",a[i][j]=rand()%10);printf("\n");}printf("m=");scanf("%d",&m);fun(a,m);for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%-5d",a[i][j]);printf("\n");}printf("\n\n\n");}43:第43题编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。答案:#include"stdio.h"#include"string.h"void*fun(char(*a)[100],intnum){inti;char*max;max=a[0];for(i=0;i<num;i++)if(strlen(max)<strlen(a[i]))max=a[i];returnmax;}main(){chara[100][100];intnum=0,i;for(i=0;i<100;i++){gets(a[i]);num++;if(strcmp(a[i],"****")==0)break;}printf("%s\n\n\n\n",fun(a,num));}44:第44题编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。答案:#include"stdio.h"#include"string.h"main(){chara[]="as",b[]="asaassdfdasdfdasdfd";intj;puts(a);puts(b);j=fun(a,b);printf("%d",j);}fun(char*a,char*b){inti,j=0;for(i=0;i<strlen(b);i++)if(a[0]==b[i]&&a[1]==b[i+1])j++;returnj;}45:第45题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用c语言给提供得字符串函数。答案:#include"stdio.h"voidfun(char*s,intn,inth,inte){inti,j=0;for(i=h;i<n-e-1;i++)s[j++]=s[i];s[j]='\0';}main(){chars[13]="**sdf**sE***";puts(s);fun(s,13,2,3);puts(s);printf("\n\n");}46:第46题学生得记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。答案:include"stdio.h"#defineN5typedefstructstr{chara[10];intb;}S;voidfun(Ss[N]){inti,j;Sh;for(i=0;i<N-1;i++)for(j=i;j<N;j++)if(s[i].b<s[j].b){h=s[j];s[j]=s[i];s[i]=h;}}main(){Ss[N]={{"j01",98},{"j02",78},{"j03",97},{"j04",67},{"j05",78}};inti;for(i=0;i<N;i++)printf("%s,%d\n",s[i].a,s[i].b);fun(s);for(i=0;i<N;i++)printf("\n%s,%d",s[i].a,s[i].b);printf("\n\n\n\n");}47:第47题请编写一个函数voidfun(char*ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。答案:#include"stdio.h"#include"string.h"voidfun(char*ss){inti;for(i=1;i<strlen(ss);i+=2)if(ss[i]>='a'&&ss[i]<='z')ss[i]-='a'-'A';}main(){charss[]="asffdsLJdI8**";puts(ss);fun(ss);puts(ss);printf("\n\n");}48:第48题请编写函数fun,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。答案:#include"stdio.h"voidfun(inta,intb,int*c){*c=a/10*1000+b/10*100+a%10*10+b%10;}main(){inta=12,b=45,c;fun(a,b,&c);printf("\n\na=%d,b=%d\n",a,b);printf("\nc=%d\n",c);}49:第49题请编写函数fun,其功能是:将s所指字符串中下标位偶数同时ascii值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。答案:#include"stdio.h"#include"string.h"voidfun(char*s,char*t){inti,j=0;for(i=0;i<strlen(s);i++)if((i%2==0)&&(s[i]%2));elset[j++]=s[i];t[j]='\0';}main(){chars[]="aabbccddee",t[100];puts(s);fun(s,t);puts(t);printf("\n\n");}50:第50题已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入a机构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。答案:#include"stdio.h"#defineN5typedefstructst{chara[10];intb;}S;voidfun(S*s,S*c){inti;*c=s[0];for(i=0;i<N;i++)if(c->b<s[i].b)*c=s[i];}main(){Ss[N]={{"j01",87},{"j02",90},{"j03",78},{"j04",89},{"j05",98}},c;inti;for(i=0;i<N;i++)printf("\nxuehao:%sfenshu:%d\n",s[i].a,s[i].b);fun(s,&c);printf("\nzuigaofentongxue:\n\nxuehao:%szuigaofen:%d\n\n",c.a,c.b);}51:第51题请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。答案:#include"stdio.h"voidfun(intm,int*xx,int*k){inti,j,t=0;for(i=2;i<m;i++)for(j=2;j<i;j++)if(i%j==0){xx[t++]=i;break;}*k=t;}main(){inti,m,xx[100],k;printf("\n\nm=");scanf("%d",&m);fun(m,xx,&k);printf("\nk=%d\n",k);for(i=0;i<k;i++){if(i%5==0)printf("\n");printf("%-5d",xx[i]);}printf("\n\n");}52:第52题编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。答案:#include"stdio.h"voidfun(char*p1,char*p2){inti=0,j=0;while(p1[j])j++;while(p2[i])p1[j++]=p2[i++];p1[j+1]='\0';}main(){char*p1="abcdefg",*p2="hijklmn";printf("\n\n");puts(p1);puts(p2);fun(p1,p2);puts(p1);printf("\n\n");}54:第54题学生的记录由学号和成绩组称个,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。答案:#include"stdio.h"#defineN4typedefstructst{chara[10];intb;}S;floatfun(S*s,S*b,int*n){inti,j=0;floatt=0;for(i=0;i<N;i++)t+=s[i].b;t/=N;for(i=0;i<N;i++)if(s[i].b<t)b[j++]=s[i];*n=j;returnt;}main(){Ss[N]={{"k01",80},{"k02",90},{"k03",70},{"k04",80}},b[N];inti,n;floatnum;for(i=0;i<N;i++)printf("\n\nxuehao:%sfenshu:%d\n",s[i].a,s[i].b);num=fun(s,b,&n);printf("\ndifenrenshu:%djunfen:%f\n\nqingshurudiyujunfenxuesheng\n",n,num);for(i=0;i<n;i++)printf("\nxuehao:%sfenshu:%d\n\n",b[i].a,b[i].b);}55:第55题请编写函数fun,该函数的功能是:将m行n列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的储存单元中。答案:#include"stdio.h"#defineM3#defineN4voidfun(inta[][N],int*b,int*n){inti,j,k=0;for(i=0;i<M;i++)for(j=0;j<N;j++)b[k++]=a[i][j];*n=k;}main(){inti,j,n,a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},b[100];for(i=0;i<M;i++)for(j=0;j<N;j++)printf("%5d",a[i][j]);fun(a,b,&n);printf("\nn=%d\n",n);for(i=0;i<M*N;i++)printf("%5d",b[i]);printf("\n\n\n");}56:第56题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字母串中其他*号全部删除。形参p已指向字符串中最后的一个字母。不使用c的字符串函数。答案:#include"stdio.h"voidfun(char*a,char*p){inti,j=0,n=0,k=0;while(a[j])j++;while(*p=='*'){p--;n++;}for(i=0;i<j-n;i++)if(a[i]!='*')a[k++]=a[i];for(i=0;i<n;i++)a[k++]='*';a[k]='\0';}main(){chara[]="***dsd****e***ds**************",*p;intn=0;while(a[n])n++;p=&a[n-1];puts(a);fun(a,p);puts(a);}57:第57题学生的记录是由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。答案:#include"stdio.h"#defineN5typedefstructstr{chara[10];intb;}S;intfun(S*s,S*b,intm,intn){inti,j=0;for(i=0;i<N;i++)if(s[i].b>=m&&s[i].b<=n)b[j++]=s[i];returnj;}main(){Ss[N]={{"j01",78},{"j02",78},{"j03",87},{"j04",89},{"j05",78}},b[N];inti,m,n,k;for(i=0;i<N;i++)printf("\nxuehao:%s,fenshu:%d\n",s[i].a,s[i].b);printf("\nm=,n=\n");scanf("%d%d",&m,&n);while(m>n)scanf("%d%d",&m,&n);k=fun(s,b,m,n);printf("\nk=%d\n",k);for(i=0;i<k;i++)printf("\nxuehao:%s,fenshu:%d\n",b[i].a,b[i].b);}59:第59题请别写函数fun,该函数的功能是:将放在字符串数组中的m个字符串(每串的长度不超过n),按顺序合并组成一个新的字符串。答案:#include"stdio.h"#defineM5#defineN8voidfun(chara[M][N],char*b){inti,j,n=0;for(i=0;i<M;i++)for(j=0;a[i][j];j++)b[n++]=a[i][j];b[n]='\0';}main(){chara[M][N]={"abcd","efg","hijklmn","op","qrst"},b[M*N];inti,j;printf("\n\n");for(i=0;i<M;i++)puts(a[i]);fun(a,b);puts(b);}61:第61题第请编写函数fun,该函数的功能使:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁的人数放在d[2]中,其余以此类推,把100岁(含100以上年龄的人数都放在d[10]中。结果在主函数中输出。答案:#include"stdio.h"#defineN50voidfun(int*a,intb[11]){inti;for(i=0;i<11;i++)b[i]=0;for(i=0;i<N;i++)if(a[i]>=0&&a[i]<=9)b[0]++;elseif(a[i]>=10&&a[i]<=19)b[1]++;elseif(a[i]>=20&&a[i]<=29)b[2]++;elseif(a[i]>=30&&a[i]<=39)b[3]++;elseif(a[i]>=40&&a[i]<=49)b[4]++;elseif(a[i]>=50&&a[i]<=59)b[5]++;elseif(a[i]>=60&&a[i]<=69)b[6]++;elseif(a[i]>=70&&a[i]<=79)b[7]++;elseif(a[i]>=80&&a[i]<=89)b[8]++;elseif(a[i]>=90&&a[i]<=99)b[9]++;elseif(a[i]>=100)b[10]++;}main(){intage[N],b[11],i;printf("\n\nlianling:\n");for(i=0;i<N;i++){if(i%10==0)printf("\n");printf("%5d",age[i]=rand()%100);}fun(age,b);printf("\n\nrenshu:\n\n");for(i=0;i<11;i++){if(i%5==0)printf("\n");printf("b[%d]=%d",i,b[i]);}printf("\n\n");}62:第62题请编写函数fun,该函数的功能是:统计字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。答案:#include"stdio.h"#include"string.h"intfun(char*a){inti,j=0;for(i=0;i<strlen(a);i++)if((a[i]>='a'&&a[i]<='z'&&a[i+1]=='')||a[i+1]=='\0')j++;returnj;}main(){chara[200];intn;gets(a);n=fun(a);printf("\nn=%d\n",n);}63:第63题请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。答案:#include"stdio.h"fun(intn){inti,s=0;for(i=2;i<n;i++)if(n%i==0){s+=i;printf("%5d",i);}printf("\n%d\n\n",s);}main(){intn;scanf("%d",&n);fun(n);}64:第64题请编写函数fun,其功能是:将s所指字符串中ascii值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。答案:#include"stdio.h"fun(char*s,char*t){inti,j=0;for(i=0;i<strlen(s);i++)if(s[i]%2==0)t[j++]=s[i];t[j]='\0';}main(){chars[]="abcdefghijkl",t[100];puts(s);fun(s,t);puts(t);}65:第65题请编写函数fun,其功能是:将两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。答案:#include"stdio.h"fun(inta,intb,int*c){*c=b%10*1000+a/10*100+b/10*10+a%10;}main(){inta=12,b=45,c;fun(a,b,&c);printf("\n\na=%d,b=%d,c=%d\n\n",a,b,c);}66:第66题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。答案:#include"stdio.h"fun(char*a){inti,j=0,k=0;while(a[j])j++;for(i=0;i<j;i++)if(a[i]!='*')a[k++]=a[i];a[k]='\0';}main(){chara[]="***dfd*fdk*fkd****";puts(a);fun(a);puts(a);}67:第67题学生的记录时由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数时strcmp)。答案:#include"stdio.h"#include"string.h"#defineN5typedefstructstr{chara[10];intb;}S;Sfun(S*s,char*c){inti;Sh;for(i=0;i<N;i++)if(strcmp(s[i].a,c)==0){h=s[i];break;}else{h.a="";h.b=-1;}returnh;}main(){Ss[N]={{"j01",65},{"j02",78},{"j03",89},{"j04",98},{"j05",23}},h;inti;charc[10];printf("\n\n");gets(c);for(i=0;i<N;i++)printf("%s,%d",s.a,s.b);h=fun(s,c);printf("\n%s,%d\n\n",h.a,h.b);}68:第68题请编写函数fun,其功能时:计算并输出下列多项式的值:sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!答案:#include"stdio.h"fun(intn){inti,j=1;doubles=1.0;for(i=1;i<=n;i++){j=j*i;s+=1.0/j;}printf("\n\nn=%d,s=%lf\n\n",n,s);}main(){intn;scanf("%d",&n);fun(n);}70:第70题编写函数fun,它的功能时:计算并输出下列级数和:s=1/1*2+1/2*3+…+1/n(n+1)答案:#include"stdio.h"fun(intn){inti,j;doubles=0.0;for(i=1;i<=n;i++)s+=1.0/(i*(i+1));printf("s=%lf",s);}main(){intn;scanf("%d",&n);printf("\n");fun(n);printf("\n\n");}72:第72题请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。答案:#include"stdio.h"#include"string.h"fun(char*s,char*t){inti,n,j=0;n=strlen(s);for(i=1;i<n;i+=2)t[j++]=s[i];t[j]='\0';}main(){chars[]="sadfko23",t[100];puts(s);fun(s,t);puts(t);}73:第73题假定输入的字符串中只包含字母和*号,请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串第一个字符,形参p已指向字符串中最后一个字母。在编写程序时,不得使用c语言提供的字符串函数。答案:#include"stdio.h"voidfun(char*a,char*h,char*p){inti=0;while((*h)=='*'){a[i]=*h;i++;h++;}while(h<p){if(*h!='*'){a[i]=*h;i++;}h++;}while(*h){a[i]=*h;i++;h++;}a[i]='\0';}main(){chara[]="****ad**f8****",*h=a,*p=&a[9];puts(a);fun(a,h,p);puts(a);printf("\n\n");}74:第74题学生的记录由学号和成绩组成n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。答案:#include"stdio.h"#defineN4typedefstructstu{chara[10];floatn;}S;intfun(Sa[N],Sb[N]){inti,j=0,num;num=a[0].n;for(i=1;i<N;i++){if(a[i].n<num)num=a[i].n;}for(i=0;i<N;i++)if(num==a[i].n)b[j++]=a[i];returnj;}main(){Ss[N]={{"K001",89},{"K002",89},{"K003",78},{"K004",78}},h[N];inti,n;for(i=0;i<N;i++)printf("\n%s,%f\n",s[i].a,s[i].n);n=fun(s,h);printf("\nn=%d\n",n);for(i=0;i<n;i++)printf("\n%s,%f\n",h[i].a,h[i].n);printf("\n\n");}75:第75题请编写函数fun,该函数的功能:将m行n列的二维数组中的数据,按列的顺学依次放到一维数组中。答案:#include"stdio.h"#defineM3#defineN4voidfun(inta[M][N],intb[]){inti,j,t=0;for(i=0;i<N;i++)for(j=0;j<M;j++)b[t++]=a[j][i];}main(){inti,j,a[M][N],b[M*N];for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%5d",a[i][j]=rand()%100);printf("\n");}fun(a,b);printf("\n");for(i=0;i<N*M;i++)printf("%5d",b[i]);printf("\n\n");}76:第76题请编写函数fun,其功能时:计算并输出当x<0.97时下列多项式的值,直到|sn-s(n-1)|<0.000001为止。Sn=1+0.5x+0.5(0.5-1)/2!x(2)+…+0.5(0.5-1)(0.5-2)…..(0.5-n+1)/n!x(n)答案:.doublefun(doublex){doubles1=1.0,p=1.0,sum=0.0,s0,t=1.0;intn=1;do{s0=s1;sum+=s0;t*=n;p*=(0.5-n+1)*x;s1=p/t;n++;}while(fabs(s1-s0)>1e-6);returnsum;}77:第77题

温馨提示

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

评论

0/150

提交评论