




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上机练习一(编写函数部分):数字问题第1题请编写函数fun,它的功能是:求出1到1000之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。#include<conio.h>#include<stdio.h>voidfun(int*a,int*n)(inti,j=0;for(i=2;i<1000;i++)if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;main()(intaa[1000],n,k;clrscr();fun(aa,&n);for(k=0;k<n;k++)if((k+1)%10==0)printf("\n");elseprintf("%5d,”,aa[k]);第2题请编写函数voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。#include<conio.h>#include<stdio.h>voidfun(intx,intpp[],int*n){inti=1,j=0,k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0)(W]=i;j++;)for(i=0;i<j;i++)if(x%t[i]==O)PP[k]=t[i];k++;)*n=k;main()(intx,aa[1000],n,i;clrscr();printf(M\nPleaseenteranintegernumber:\nH);scanf("%d'\&x);fun(x,aa,&n);for(i=0;i<n;i++)printf(H%d",aa[i]);printf(H\nw);}第3题请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中o#include<conio.h>#include<stdio.h>voidfun(intm,intk,intxx[]){intg=O,i,j,flag=1;for(i=m+1;i<m*m;i++)(for0=2;j<i;j++)(if(i%j!=0)flag=1;else{flag=O;break;))if(flag==1&&j>=i)(if(k>=0){xx[g++]=i;k—;}elsebreak;)}}main()(intm,n,zz[1000];clrscr();printf(M\nPleaseentertwointegers:");scanf("%d,%dH,&m,&n);fun(m,n,zz);for(m=0;m<n;m++)printf(M%d",zz[m]);printf(H\nw);)第4题请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(nN2)位的整数,则函数求出w后n—1位的数作为函数值返回。#include<conio.h>#include<stdio.h>unsignedfun(unsignedw){unsignedt,s=0,s1=1,p=0;t=w;while(t>10){if(W10)p=t%10;s=s+p*s1;s1=s1*10;t=t/10;)returns;)main()(unsignedx;clrscr();printf("Enteraunsignedintegernumber:");scanf(H%u",&x);printf("Theoriginaldatais:%u\n",x);if(x<10)printf("Dataerror!");elseprintf(HTheresult:%u\nM,fun(x));}第5题请编写一个函数floatfun(doubleh),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。#include<stdio.h>#include<conio.h>floatfun(floath){longt;floats;h=h*1000;t=(h+5)Z10;s=(float)t/100.0;returns;main(){floata;clrscr();printf("Entera:");scant(H%r,&a);printf("Theoriginaldatais:");printf("%f\n\nn,a);printf("Theresult:%f\nH,fun(a));)第6题编写函数intfun(intlim,intaa[max]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。#include<stdio.h>#include<conio.h>#defineMAX100intfun(intlim,intaa[MAX])(intk=0,ij;for(i=lim;i>1;i-)(for0=2;j<i;j++)if(i%j==O)break;elsecontinue;aa[k]=i;k++;)}returnk++;main(){intlimit,i,sum;intaa[MAX];clrscr();printf("输入一个整数)scanf("%d'\&limit);sum=fun(limit,aa);for(i=0;i<sum;i++){if(i%10==0&&i!=0)printf("\n");printf(M%5dH,aa[i]);}}第7题请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。#include<stdio.h>#defineN80intfun(char*str){inti,n=0,fg=1;char*p=str;while(*p){n++;P++;}for(i=0;i<n/2;i++)if(str[i]==str[n-1-i]);else(fg=O;break;returnfg;main()(chars[N];printf(MEnterastring:");gets(s);printf(,,\n\n,');puts(s);if(fun(s))printf("YES\nH);elseprintt("NO\nH);}第8题请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。#include<conio.h>#include<stdio.h>#defineM100voidfun(intm,int*a,int*n)(inti,j=O;*n=O;for(i=1;i<=m;i++)if(i%7==0||i%11==0)(a[j]=i;j++;}*n=j;)main()(intaa[M],n,k;clrscr();fun(50,aa,&n);for(k=0;k<n;k++)if((k+1)%20==0)printf(,,\nH);elseprintf("%4dM,aa[k]);printf(',\nM);第9题请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。#include<conio.h>#include<stdio.h>voidfun(intm,int*k,intxx[])(intij;intt=0;for(i=2;i<m;i++)(j=2;while(j<i)(if(i%j==O){xx[t]=i;t++;break;}j++;)*k=t;})main()(intm,n,zz[100];clrscr();printf(,f\nPleaseenteranintegernumberbetween10and100:");scanf(1,%d,\&n);fun(n,&m,zz);printf(,f\n\nThereare%dnon-primenumberslessthan%d:",m,n);for(n=0;n<m;n++)printf(H\n%4d”,zz[n]);)第10题编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。#include<conio.h>#include<math.h>#include<stdio.h>doublefun(intn){doubles=0.0;inti;for(i=1;i<n;i++)if(i%3==0&&i%7==0)s=s+i;s=sqrt(s);returns;}main(){clrscr();printf(,,s=%f\nH,fun(1000));)第11题请编写函数fun,该函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把。至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d⑴中,把20至29岁的人数放在d[2]中,其余以此类推,把100岁(含100以上年龄的人数都放在d[10]中。结果在主函数中输出。#include<stdio.h>#defineN50#defineM11voidfun(int*a,int*b){intij;for(j=0;j<M;j++)bU]=O;for(i=0;i<N;i++)if(a[i]>=0&&a[i]<=9)b[0]+=1;elseif(a[i]>=10&&a[i]<=19)b[1]+=1;elseif(a[i]>=20&&a[i]<=29)b[2]+=1;elseif(a[i]>=30&&a[i]<=39)b[3]+=1;elseif(a[i]>=40&&a[i]<=49)b[4]+=1;elseif(a[i]>=50&&a[i]<=59)b[5]+=1;elseif(a[i]>=60&&a[i]<=69)b[6]+=1;elseif(a[i]>=70&&a[i]<=79)b[7]+=1;elseif(a[i]>=80&&a[i]<=89)b[8]+=1;elseif(a[i]>=90&&a[i]<=99)b[9]+=1;elseb[10]+=1;}doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);)main()(intage[N],i,d[M];for(i=0;i<N;i++)age[i]=(int)(115*rnd());printf(MTheoriginaldata:\nM);for(i=0;i<N;i++)printf((i+1)%10==0?',%4d\n*':,'%4d",age[i]);printf("\n\n");fun(age,d);for(i=0;i<10;i++)printfC'%4d—%4d:%4d\n",i*10,i*10+9,d[i]);printf(MOver100:%4d\nM,d[10]);)第12题请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。#include<stdio.h>intfun(intn){ints=0,i;for(i=2;i<=n-1;l++)if(n%i==0)s+=i;returns;}main()intn,sum;printf(Mlnputn:");scanf(”%d”,&n);sum=fun(n);printf(,,sum=%d\n",sum);}第13题请编写函数fun,计算并输出给定10个数的方差。#include<stdio.h>#include<math.h>doublefun(doublex[10]){intij;doubles=0.0,s1=0.0;for(i=0;i<10;i++)s1+=x[i];s1/=10;forO=0;j<10;j++)s+=(x[j]-s1)*(x[j]-s1);s/=10;s=pow(s,0.5);returns;}main()(Doubles,x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0);inti;printf(M\nTheoriginaldatais:\n");for(i=0;i<10;i++)printf(M%6.ir,x[i]);printf(,,\n\n,');s=fun(x);printf(,,s=%f\n\n,,,s);)第14题请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。#include<stdio.h>doublefun(intn){inti;doublesum=0.0;for(i=1;i<=n;i++)if(i%5==0||i%9==0)sum+=1.0/i;returnsum;main()intn;doubles;printf(M\nlnputn:");scanf("%d”,&n);s=fun(n);printf(,,\n\ns=%f\n",s);第15题请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。#include<math.h>#include<stdio.h>doublefun(intn)(intm,k,i;doubles=0.0;for(m=3;m<=n;m++)(k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1)s+=sqrt(m);)returns;}main(){intn;doublesum;printf(M\n\nlnputn:");scanf("%dn,&n);sum=fun(n);printf(',\n\nsum=%f\n\n",sum);上机练习二(编写函数部分):位数调整问题第1题请编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;}main(){inta,b;longc;clrscr();printf("Inputa,b:");scanf("%d%dM,&a,&b);fun(a,b,&c);printf("Theresultis:%d\nH,c);}第2题请编写函数fun,其功能是:将两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;)main()(inta,b;longc;clrscr();printf("Inputa,b;");scant("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n",c);第3题请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b的十位和个位整数依次放在c数的百位和个位上。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10;}main(){inta,b;longc;clrscr();printf(HInputa,b:");scanf("%d%dn,&a,&b);fun(a,b,&c);printf(MTheresultis:%ld\nw,c);)第4题请编写一个函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;)main()(inta,b;longc;clrscr();printf(Mlnputa,b:”);scanf(M%d%d",&a,&b);fun(a,b,&c);printf(HTheresultis:%ld\n",c);第5题请编写函数fun,其功能使:将两个两位正整数ab合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}main(){inta,b;longc;clrscr();printf("Inputa,b:M);scant("%d%dM,&a,&b);fun(a,b,&c);printf(HTheresultis:%ld\nM,c);}第6题请编写函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c)(c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}main(){inta,b;longc;clrscr();printf(MInputa,b:");scanf("%d%d”,&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n",c);)第7题请编写函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;)main(){inta,b;longc;clrscr();printf('Inputa,b:w);scanf("%d%dH,&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n'\c);第8题请编写函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c)(*c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;main()inta,b;longc;clrscr();printfC'Inputa,b:");scanf("%d%dn,&a,&b);fun(a,b,&c);printf(”Theresultis:%ld\nM,c);上机练习三(编写函数部分):星号操作问题第1题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。#include<stdio.h>#include<conio.h>voidfun(char*a,intn){inti=0,k=0;char*p,*t;p=t=a;while(*t)t++;while(*t=='*')(k++;t・・;)t++;if(k>n){while(*p&&p<t+n)(a[i]=*p;i++;P++;)a[i]='\0*;)}main()(chars[81];intn;printf("Enterastring:\rT);gets(s);printfC'Entern:");scanf(”%d”,&n);fun(s,n);printfC'Thestringafterdeleted:\nH);puts(s);第2题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。#include<stdio.h>#include<conio.h>voidfun(char*a)(inti=0,n=0;char*p;P=a;while(*p==,*i)(n++;P++;)while(*p)(a[i]=*P;i++;P++;)while(n!=0)(a[i]='*';i++;n-;)a[i]='\0';)main(){chars[81],*p;printf("Enterastring:\n");gets(s);fun(s);printf("Thestringaftermoveing:\n");puts(s);)第3题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用c语言给提供得字符串函数。#include<stdio.h>#include<conio.h>voidfun(char*a,intn,inth,inte)(inti=0;char*p;for(p=a+h;p<a+n-e;p++)(*(a+i)=*p;i++;)*(a+i)=*\0';)main(){chars[81],*t,*f;intm=0,tn=0,fn=0;printf("Enterastring:\n");gets(s);t=f=s;whileft)(t++;m++;)t-;while(*t=='*')(t--;tn++;)while(*f=='*')(f++;fn++;)fun(s,m,fn,tn);printf("Thestringafterdeleted:\n");puts(s);}第4题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字母串中其他*号全部删除。形参P已指向字符串中最后的一个字母。不使用c的字符串函数。include<stdio.h>#include<conio.h>voidfun(char*a,char*p)(inti=0;char*q=a;while(q<=p)(if(*q!='*')(a[i]=*q;i++;)q++;)while(*q){a[i]=*q;i++;q++;)a[i]='\0';main()(chars[81],*t;printf("Enterastring:\n");gets(s);t=s;while(*t)t++;t-;while(*t=='*')t-;fun(s.t);printf("Thestringafterdeleted:\n");puts(s);第5题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。#include<stdio.h>#include<conio.h>voidfun(char*a){inti=0;char*p=a;while(*p){{a[i]=*p;i++;}P++;)a[i]='\0';)main(){chars[81];printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);}第6题假定输入的字符串中只包含字母和*号,请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串第一个字符,形参p已指向字符串中最后一个字母。在编写程序时,不得使用c语言提供的字符串函数。#include<stdio.h>include<conio.h>voidfun(char,a,char*h,char*p)(inti=0;char*q=a;while(q<h)(a[i]=*q;q++;i++;)while(q<p)if(*q!='*')(a[i]=*q;1++;)q++;}while(*q)(a[i]=*q;i++;q++;)a[i]='\O';)main()(chars[81],*t,*f;printf("Enterastring:\n");gets(s);t=f=s;while(*t)t++;t-;while(*t=='*')t--;while(*f=='*')f++;fun(s,f,t);printf("Thestringafterdeleted:\nn);puts(s);)第7题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。#include<stdio.h>#include<conio.h>voidfun(char*a)(inti=0;char*p,*q;P=q=a;while(*p)P++;P-;while(*p==***)P-;while(q<=p){a[i]=*q;i++;q++;}a[i]='\O';}main(){chars[81];printf(,,Enterastring:\n");gets(s);fun(s);printf(MThestringafterdeleted:\nH);puts(s);}第8题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外将串中其他*号全部删除。在编写函数时,不得使用c语言提供的字符串函数。#include<stdio.h>#include<conio.h>voidfun(char*a){inti=0;char*p=a;while(*p&&*p==***){a[i]=*p;i++;P++;}whilefp)(if(*p!='*')(a[i]=*P;i++;)P++;}a[i]='\O';main(){chars[81];printf("Enterastring:\nH);gets(s);fun(s);printfC'Thestringafterdeleted:\nM);puts(s);第9题规定输入字符串中只包含字母和*号。请编写函数fun,它的功能是:将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。#include<stdio.h>#include<conio.h>voidfun(char*a)(inti=0;char*p=a;while(*p&&*p==***)P++;while(*p){a[i]=*p;i++;P++;}a[i]=*\0';main(){chars[81];printf("Enterastring:\nH);gets(s);fun(s);printfC'Thestringafterdeleted:\n");puts(s);第10题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做。字符串中间和尾部的*号不删除。#include<stdio.h>#include<conio.h>voidfun(char*a,intn){inti=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';main(){chars[81];intn;printf(MEnterastring:\n");gets(s);printf(HEntern:");scanf("%d'\&n);fun(s,n);printf(HThestringafterdeleted:\nH);puts(s);上机练习四(编写函数部分):计算多项式问题第1题编写函数fun,功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+......+1/(1+2+3+4+……+n)#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){inti;floats=1.0,t=1.0;for(i=2;i<=n;i++)(t=t+i;s=s+1/t;}returns;)main(){intn;floats;clrscr();printf(”\nPleaseenterN:");scanf("%d'\&n);s=fun(n);printfCTheresultis:%f\n",s);}第2题编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求m>n°p=m!/(n!(m-n)!)#include<conio.h>#include<stdio.h>floatfun(intm,intn)(floatp,t=10;inti;for(i=1;i<=m;i++)t=t*i;P=t;for(t=1.0,i=1;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;)main(){clrscr();printf("P=%f\n",fun(12,8));)第3题编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。迭代步骤如下:⑴取x1初值为0.0;(2)x0=x1,ffix1的值赋各x0;(3)x1=cos(x0),求出一个新的x1;(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出root=0.739085.#include<conio.h>#include<math.h>include<stdio.h>floatfun(){floatx1=0.0,x0;do(x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=1e-6);returnx1;)main()(clrscr();printf(,,Root=%f\n,,,fun());第4题请编写一个函数fun,它的功能是根据以下公式求x的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):x/2=1+1/3+1x2/(3x5)+1x2x3/(3x5x7)+1x2x3x4/(3x5x7x9)+...+1x2x3x...xn/(3x5x7x(2n+1))程序运行后,如果输入精度0.0005,则程序输出为3.14…。include<stdio.h>#include<math.h>doublefun(doubleeps)(doubles;floatn,t,pi;t=1;pi=0;n=1.0;s=1.0;while((fabs(s))>-eps)(pi+=s;t=n/(2*n+1);s*=t;n++;}pi=pi*2;returnpi;)main(){doublex;printf(*1nputeps:");scanf("%lfn,&x);printf(w\neps=%lf,Pl=%lf\n“,x,fun(x));)第5题请编写函数fun,其功能时:计算并输出下列多项式的值:sn=1+1/1!+1/2!+1/3!+1/4!+...+1/n!#include<stdio.h>doublefun(intn){doublet,sn=1.0;inti,j;for(i=1;i<=n;i++)(t=1.0;for(j=1;j<=i;j++)t*=j;sn+=1.0/t;}returnsn;main(){intn;doubles;printf(*'lnputn:");scanf("%dH,&n);s=fun(n);printf(Hs=%f\n",s);}第6题请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回。其中fibonacci数列f(n)的定义为:f(O)=O,f(1)=1,f(n)=f(n-1)+f(n-2)#include<conio.h>#include<math.h>#include<stdio.h>intfun(intt){inta=1,b=1,c=0,i;for(i=4;i<=t;i++)(if(c<t)(c=a+b;a=b;b=c;)elsebreak;)returnc;}main()(intn;clrscr();n=1000;printf(,'n=%d,f=%d\n"1n,fun(n));第7题编写函数fun,它的功能时:计算并输出下列级数和:s=1/(1*2)+1/(2*3)+...+1/(n(n+1))#include<conio.h>#include<stdio.h>doublefun(intn)(doubles=0.0;inti;for(i=1;i<=n;i++)s=s+1.0/(i*(i+1));returns;}main(){clrscr();printf(,'%f\n,,,fun(1O));}第8题请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到Isn-s(n-1)I<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)#include<stdio.h>#include<math.h>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;}main()(doublex,s;printf(Hlnputx:");scanf(M%ir,&x);s=fun(x);printf(Hs=%f\n",s);第9题请编写函数fun,其功能是:计算并输出下列多项式值:sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n).#include<stdio.h>doublefun(intn){inti;doublesn=0.0;for(i=1;i<=n;i++)sn+=(1.0/(2*i-1)-1.0/(2*i));returnsn;main()(intn;doubles;printf(H\nlnputn:");scanf("%d”,&n);s=fun(n);printf(,'\ns=%f\n,1,s);)第10题请编写函数fun,它的功能是计算:s=(ln(1)+ln(2)+ln(3)+...+ln(m))0.5,s作为函数值返回。#include<conio.h>#include<math.h>#include<stdio.h>doublefun(intm){inti;doubles=0.0,log(doublex);for(i=1;i<=m;i++)s=s+log(i);s=sqrt(s);returns;main()clrscr();printf("%f\nw,fun(20));}第11题请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。S=1+x+x2/2!+x3/3!+...xn/n!#include<conio.h>#include<stdio.h>#include<math.h>doublefun(doublex,intn){doubles=1.0,p=1.0;inti,j,t;for(i=1;i<=n;i++)(t=1;forG=1;j<=i;j++)p=p*x;s=s+p/t;)returns;}main()(clrscr();printf(,,%f\n,,1fun(0.3,10));)第12题请编写函数fun,其功能是:计算并输出下列多项式值:s=1+1/(1+2)+1/(1+2+3)+..1/(1+2+3...+50)#include<stdio.h>doublefun(intn){inti,j;doublesum=0.0,t;for(i=1;i<=n;i++)(t=0.0;forO=1;j<=i;j++)t+=j;sum+=1.0/t;}returnsum;main(){intn;doubles;printf(M\nlnputn:");scanf("%dn,&n);s=fun(n);printf(,,\n\ns=%f\n\n',,s);}第13题请编写函数fun,其功能是:计算并输出s=1+(1+20.5)+(1+20.5+30.5)+...+(1+20.5+30.5+...+n0.5)#include<math.h>#include<stdio.h>doublefun(intn){inti;doubles=1.0,p=1.0;for(i=2;i<=n;i++)(p+=pow(i,0.5);s+=p;}returns;}main(){intn;doubles;printf(M\n\nlnputn:”);scanf("%dH,&n);s=fun(n);printf(,,\n\ns=%f\n\n,,,s);机练习五(编写函数部分):一维数组元素问题第1题请编写一个函数voidfun(charaQ,char[],intn}其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。include<stdio.h>include<conio.h>defineLEN20voidfun(chara[],charbQ,intn)(inti,j=0;for(i=0;i<LEN;i++)if(i!=n){bU]=a[i];j++;)b[j]='\O';)main(){charstr1[LEN],str2[LEN];intn;clrscr();printf("Enterthestring:\n");gets(strl);printf(HEnterthepositionofthestringdeletedscanf(”%d”,&n);fun(str1,str2,n);printf(nThenewstringis:%s\n*',str2);;)第2题请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的储存单元中。include<conio.h>#include<stdio.h>voidfun(int*s,intt,int*k)|inti,max;max=s[0];for(i=0;i<t;i++)if(s[i]>max){max=s[i];*k=i;)main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;clrscr();fun(a,10,&k);printf(M%d,%d\n",k,a[k]);第3题请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。#include<conio.h>#include<stdio.h>#include<string.h>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;)main()(chartt[81];printf(H\nPleaseenteranstringwithin80characters:\nM);gets(tt);printf("\n\nAfterchanging,thestring\n\%s\nH,tt);fun(tt);printf(,f\nbecomes\n\%s\n",tt);)第4题请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[])(inti,j=O,n;n=strlen(s);for(i=0;i<n;i++)if(i%2==0&&s[i]%2==0)(tU]=s[i];j++;}t[i]=-\o';}main(){chars[100],t[100];clrscr();printf(H\nPleaseenterstringS:");scanf(M%s",s);fun(s,t);printf(n\nTheresultis:%s\n”,t);)第5题请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。#include<stdlib.h>#include<stdio.h>voidfun(intaQ,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;)main()inti,x[20],max,index,n=10;randomize();for(i=0;i<n;i++){x[i]=rand()%50;printf("%4d",x[i]);}printfC'\nM);fun(x,n,&max,&index);printf(nMax=%5d,lndex=%4d\n",max,index);)第6题请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[])(inti,j=O,n;n=strlen(s);for(i=0;i<n;i++)if(i%2!=0&&s[i]%2!=0)(tU]=s[i];j++;}main(){chars[100],t[100];clrscr();printf(H\nPleaseenterstringS:H);scanf(M%s",s);fun(s,t);printf(H\nTheresultis:%s\n",t);)第7题请编写函数firn该函数的功能是:移动一维数组中的内容若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。#include<stdio.h>#defineN80voidfun(int*w,intp,intn){intb[N],i,j=O;for(i=0;i<=p;i++)b[i]=w[i];for(i=p+1;i<n;i++)(w[j]=w[i];j++;}for(i=0;i<=p;i++)(w[j]=b[i];j++;})main(){inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);inti,p,n=15;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\nEnterp:");scanf("%d",&p);fun(a,p,n);printf("\nThedataaftermoving:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");}第8题请编写一个函数voidfun(char*ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。#include<conio.h>#include<stdio.h>voidfun(char*ss){inti,n=0;char*p=ss;while(*p){n++;P++;}for(i=0;i<n;i++)if<(ss[i]>=*a*&&ss[i]<=,z,)&&i%2!=0)ss[i]=ss[i]-32;ss[i]=*\0';voidmain(void){chartt[51];clrscr();printf(M\nPleaseenterancharacterstringwithin50characters:\nM);gets(tt);printf(n\n\nAfterchanging,thestring\n%sH,tt);fun(tt);printf(,f\nbecomes\n%s",tt);)第9题请编写函数fun,其功能是:将s所指字符串中下标为偶数同时ascii值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){inti,j=0,n=strlen(s);for(i=0;i<n;i++)if(i%2==0&&s[i]%2!=0);else<tU]=s[i];j++;)皿=30’;main()(chars[100],t[100];clrscr();printf(H\nPleaseenterstringS:");scanf(“%s”,s);fun(s,t);printf(M\nTheresultis:%s\nM,t);)第10题请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。#include<stdio.h>#include<string.h>#defineN80voidfun(char*w,intm){charb[N];inti,j=0;for(i=0;i<m;i++)(bU]=w[ll;j++;)for(i=0;i<strlen(w)-m;i++)w[i]=w[i+m];for(j=0;j<m;j++)(w[i]=b[j];i++;}w[i]=,\0,;}main()(chara[N]="ABCDEFGHIJKH;intm;printf(HTheoriginalstring:\nM);puts(a);printf(H\n\nEnterm:");scanf(”%d”,&m);fun(a,m);printf(H\nThestringaftermoving:\nM);puts(a);printf(,,\n\nM);}第11题请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。include<stdio.h>defineN80intfun(inta[],intn)inti,t,j=O,*p=a;t=p[O];for(i=0;i<=n;i++)if(t==p[i])relse(a[j]=t;t=p[i];j++;}if(i>=n)a[j]=t;returnj;main(){inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;printf(HTheoriginaldata:\nH);for(i=0;i<n;i++)printf("%3d",a[i]);n=fun(a,n);printf("\n\nThedataafterdeleted:\nH);for(i=0;ivn;i++)printf("%3d",a[i]);printf("\n\n");)第12题请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。#include<conio.h>include<stdio.h>#include<string.h>voidfun(char*s,chart。){inti,j=0,n=strlen(s);for(i=0;i<n;i++)if(i%2!=0)(tU]=s[i];j++;)tui='\o';main()chars[100],t[100];clrscr();printf(M\nPleaseenterstringS:”);scanf("%s”,s);fun(s,t);printf("\nTheresultis:%s\n",t);第13题请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。#include<stdio.h>#include<math.h>doublefun(doublex[9])(doublesum=0.0;inti,j=1;for(i=0;i<9;i++)sum+=sqrt((x[i]+x[i+1])/2.0);j++;}returnsum;main()doubles,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0};inti;printf(M\nTheoriginaldatais:\nM);for(i=0;i<9;i++)printf(H%6.ir,a[i]);printf("\n\n");s=fun(a);printf(,'s=%f\n\n,',s);上机练习六(编写函数部分):二维数组元素问题第1题下列程序定义了nxn的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0.#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5intfun(inta[][N]){intij;for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i]U]=0;main(){inta[N][N],i,j;clrscr();printf(H*****Thearray*****\n");for(i=0;i<N;i++)(for(j=0;j<N;j++)(a[i][j]=rand()%10;printf("%4d",a[i]fl]);)printf("\nM);}fun(a);printf("THERESULTXn");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%4d",a[i][j]);printt("\n");}第2题下列程序定义了nxn的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的Soinclude<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5doublefun(intwQ[N])inti,j,k=O;doubles=0.0;for(j=0;j<N;j++){s+=w[0][j];k++;}for0=O;j<N;j++)(s+=w[N-1][j];k++;)for(i=1;i<=N-2;i++)(s+=w[i][0];k++;}for(i=1;i<=N-2;i++){s+=w[i][N-1];k++;}returns/=k;main(){inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};inti,j;doubles;clrscr();printf(H*****Thearray*****\n");for(i=0;i<N;i++)(for(j=0;j<N;j++)(printf("%4d",a[i][j]);)s=fun(a);printfC******THERESULT*****\nH);printf(HThesumis%lf\nM,s);第3题请编写一个函数voidfun(inttt[m][n],intpp[n]),tt指向一个m行n列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。#include<conio.h>#include<stdio.h>#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){intforO=0;j<N;j++){min=tt[0][j];for(i=0;i<M;i++)(if(tt[i][j]<min)min=tt[i][j];}pp[j]=min;)main(){intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40)};intp[N],i,j,k;clrscr();printf("Theoriginaldatais:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf(-%6d”,t[i]0]);printf("\nM);}fun(t,p);printf(,f\nTheresultis:\nH);for(k=0;k<N;k++)printf("%4d",p[k]);printf("\n");第4题请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。#include<conio.h>#include<stdio.h>#defineM4#defineN5intfun(inta[M][N]){inti,j,s=O;forO=0;j<N;j++){s+=a[O]U];s+=a[M-1][j];)for(i=1;i<=M-2;i++)(s+=a[i][O];s+=a[i][N-1];}returns;main(){intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},(1,3,57,0});inti,j,y;clrscr();printf("Theoriginaldatais:\n");for(i=0;i<M;i++)(for(j=0;j<N;j++)printf("%6d",aa[i]0]);printf(H\n");}y=fun(aa);printf("\nThesum:%d\n",y);printf(,,\nu);第5题编写程序,实现矩阵(3行3歹1])的转置(即行列互换)。#include<stdio.h>#include<conio.h>voidfun(intarray[3][3]){intijjtemp;for(i=0;i<3;i++)for0=O;j<i;j++)(temp=array[i][j];array[i][j]=array[j][i];array[j][i]=temp;))main()(inti,j;intarray[3][3]={{100,200,300},{400,500,600),{700,800,900}};clrscr();for(i=0;iv3;i++)(for(j=0;j<3;j++)printf(”%7cT,aiTay[i][j]);printf(H\nw);)fun(array);printf("Convertedarray:\nM);for(i=0;iv3;i++){for(j=0;j<3;j++)printf("%7d",array[i]0]);printfC\n");}}求出一个2xm整型二维数组中最大元素的值,第6题请编写一个函数fun,求出一个2xm整型二维数组中最大元素的值,#defineM4#include<stdio.h>intfun(inta[][M])inti,j,max;max=a[O][O];for(i=0;i<2;i++)for(j=0;j<M;j++)if(a[i][j]>max)max=a[i][j];returnmax;main(){intarr[2][M]={5,8,3,45,76,-4,12,82);printf(,'max=%d\n",fun(arr));}第7题请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。#include<stdio.h>#define M 3#define N 4voidfun(char(*s)[N],char*b)(inti,j,k=O;forU=O;j<N;j++)for(i=0;i<M;i++)(b[k]=*(*(s+i)+j);k++;}b[k]='\0";)main(){chara[100],w[M][N]={{'w','w','w'.'w'JJ'S'.'S'.'S'.'S'},{'H'.'H'."H'/H'}};inti,j;printf("Thematrix:\n");for(i=0;i<M;i++)(for(j=0;j<N;j++)printf("%3c",w[i][j]);printf("\n");}fun(w,a);printfC'TheAstring:\n");puts(a);printf(^'\n\n^^);}第8题下列程序定义了nxn的二维数组,并在主函数中自动赋值。请编写函数fun(intaO[n],intn),该函数的功能是:将数组右上半三角元素中的值乘以m。#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5voidfun(inta[][N],intm){inti,j;forO=0;j<N;j++)for(i=0;i<=j;i++)a[i]D]=a[i]U]*m;main(){inta[N][N],m,i,j;clrscr();printf(”****Thearray*****\nM);for(i=0;i<N;i++)(for(j=0;j<N;j++){a皿]=rand()%20;pnntf("%4dH,a[i][j]);)printf("\nH);}do{m=rand()%10;Jwhile(m>=3);printf(,,m=%4d\n,',m);fun(a,m);printf("THERESULT\nH);for(i=0;ivN;i++)for(j=0;j<N;j++)printf(n%4d",a[i][j]);printf("\nM);}}第9题请编写函数fun,该函数的功能是:将m行n列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的储存单元中。#include<stdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn)(inti,j;for(i=0;i<mm;i++)for0=O;j<nn;j++)(b[*n]=*(*(s+i)+j);*n=*n+1;)}main(){intw[10][10]={{33,33,33,33},{44,44,44,44),{55,55,55,55}},i,j;inta[100]={0},n=0;printf(HThematrix:\nH);for(i=0;i<3;i++)(for(j=0;j<4;j++)printf("%3d",w[i][j]);printf("\nM);}fun(w,a,&n,3,4);printf(nTheAarray:\nH);for(i=0;ivn;i++)printf("%3dM,a[i]);printf(,,\n\n,');)第10题请编写函数fun,该函数的功能是:实现b=a+a,即把矩阵a加上a的转置,存放在矩阵b中。计算结果在main函数中输出。#include<conio.h>#include<stdio.h>voidfun(inta[3][3],intb[3][3])inti,j,at[3][3];for(i=0;i<=2;i++)forO=0;j<=2;j++)
at[i]U]=aU][i];for(i=0;i<3;i++)f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 25年公司员工安全培训考试试题附参考答案【A卷】
- 2024-2025新工人入场安全培训考试试题A4版可下载
- 2024-2025项目部安全管理人员安全培训考试试题打印
- 2025网络小说版权转让合同
- 2025地下室基础承包土方挖掘工程合同
- 2025标准房屋买卖合同模板
- 2025深圳租房合同
- 2025关于电子产品购销合同样本
- 2025卖方知识产权合同范本
- 2025吉林省医疗器械集中招标采购合同
- 《洗地机培训方案》课件
- 郑州市2025年高中毕业年级第一次质量预测(一模) 化学试卷(含标准答案)
- 云辐射效应研究-洞察分析
- 免疫组库临床应用
- 2025中国海油春季校园招聘笔试高频重点提升(共500题)附带答案详解
- 消防安全培训课件讲稿
- 四川省乐山市(2024年-2025年小学六年级语文)部编版期末考试((上下)学期)试卷及答案
- 2025届徐州市高考英语二模试卷含解析
- 《延续性护理在永久性肠造口患者中的应用研究》4600字(论文)
- 康复人才培养
- 建设工程消防验收现场评定工作报告(第三方机构模板)
评论
0/150
提交评论