




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
上機練習一(編寫函數部分):數字問題第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?;匚氖侵疙樧x和倒讀都是一樣的字符串。#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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論