C程序设计第四版谭浩强习题例题第7章.docx
- 文档编号:27816562
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:44
- 大小:170.57KB
C程序设计第四版谭浩强习题例题第7章.docx
《C程序设计第四版谭浩强习题例题第7章.docx》由会员分享,可在线阅读,更多相关《C程序设计第四版谭浩强习题例题第7章.docx(44页珍藏版)》请在冰豆网上搜索。
C程序设计第四版谭浩强习题例题第7章
第7章函数
例7。
1
#include〈stdio.h〉
intmain()
{
voidprint_star();
voidprint_message();
print_star();
print_message();
print_star();
return0;
}
voidprint_star()
{
printf("***********************************\n”);
}
voidprint_message()
{
printf("Howdoyoudo!
\n”);
}
例7。
2
intmax(intx,inty)
{
intz;
z=x>y?
x:
y;
return(z);
}
#include h> intmain() { intmax(intx,inty); inta,b,c; printf(”pleaseentertwointegernumber: "); scanf("%d,%d",&a,&b); c=max(a,b); printf("maxis%d\n",c); return0; } 例7。 3 #include〈stdio。 h〉 intmain() { intmax(floatx,floaty); floata,b; intc; printf("pleaseentertwointegernumber: "); scanf(”%f,%f",&a,&b); c=max(a,b); printf("maxis%d\n”,c); return0; } intmax(floatx,floaty) { floatz; z=x>y? x: y; return(z); } 例7。 4 #include h> intmain() { floatadd(floatx,floaty); floata,b,c; printf(”pleaseenteraandb: ”); scanf("%f,%f",&a,&b); c=add(a,b); printf(”sumis%f\n",c); return0; } floatadd(floatx,floaty) { floatz; z=x+y; return(z); } 例7.5 #include h〉 intmain() { intmax4(inta,intb,intc,intd); inta,b,c,d,max; printf(”pleaseenter4intergernumber: "); scanf("%d%d%d%d”,&a,&b,&c,&d); max=max4(a,b,c,d); printf(”max=%d\n”,max); return0; } intmax4(inta,intb,intc,intd) { intmax2(inta,intb); intm; m=max2(a,b); m=max2(m,c); m=max2(m,d); return(m); } intmax2(inta,intb) { if(a>=b)returna; elsereturnb; } #include〈stdio.h〉 intmain() { intmax4(inta,intb,intc,intd); inta,b,c,d,max; printf(”pleaseenter4intergernumber: "); scanf("%d%d%d%d",&a,&b,&c,&d); max=max4(a,b,c,d); printf("max=%d\n",max); return0; } intmax4(inta,intb,intc,intd) { intmax2(inta,intb); return(max2(max2(max2(a,b),c),d)); } intmax2(inta,intb) { return(a>b? a: b); } 例7。 6 #include〈stdio.h〉 intmain() { intage(intn); printf(”NO。 5,age: %d\n”,age(5)); return0; } intage(intn) { intc; if(n==1)c=10; elsec=age(n-1)+2; return(c); } 例7。 7递归方法求n! #include〈stdio.h〉 intmain() { intfac(intn); intn,y; printf(”inputaintergernumber: "); scanf("%d",&n); y=fac(n); printf("%d! =%d\n”,n,y); return0; } intfac(intn) { intf; if(n<0)printf("n<0,dataerror! ”); elseif(n==0||n==1)f=1; elsef=fac(n—1)*n; return(f); } 例7。 8汉诺塔 #include〈stdio.h> intmain() { voidhanoi(intn,charone,chartwo,charthree); intm; printf(”inputthenumberofdiskes: "); scanf("%d",&m); printf(”Thesteptomove%ddiskes: \n",m); hanoi(m,’A’,'B’,'C’); } voidhanoi(intn,charone,chartwo,charthree)//将N-1个盘子从一座移到另一座。 { voidmove(charx,chary);//用到这个函数,提前声明 if(n==1)move(one,three);//最后一步1—3 else { hanoi((n—1),one,three,two);//小和尚工作n—1个盘子借用3由1搬到2 move(one,three);//老和尚工作最大盘子由1搬到3 hanoi((n-1),two,one,three);//小和尚工作n-1个盘子借用2由1搬到3,完成工作 } } voidmove(charx,chary)//将一个盘子从一座移到另一座 { printf("%c-—>%c\n”,x,y); } 例7。 9 #include intmain() { intmax(intx,inty); inta[10],m,n,i; printf(”enter10intergernumbers: ”); for(i=0;i〈10;i++) scanf(”%d”,&a[i]); printf(”\n”); for(i=1,m=a[0],n=0;i〈10;i++) { if(max(m,a[i])>m) { m=max(m,a[i]); n=i; } } printf("Thelargestnumberis%d\nitisthe%dthnumber。 \n",m,n+1); } intmax(intx,inty) { return(x〉y? x: y); } 例7。 10 #include〈stdio。 h> intmain() { floataverage(floatarray[10]); floatscore[10],aver; inti; printf(”enter10scores: \n"); for(i=0;i〈10;i++) scanf("%f",&score[i]); printf(”\n”); aver=average(score); printf("averagescoreis%5。 2f\n”,aver); return0; } floataverage(floatarray[10]) { inti; floataver,sum=array[0]; for(i=1;i〈10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } 例7。 11 #include〈stdio。 h> intmain() { floataverage(floatarray[10],intn); floatscore1[5]={98。 5,97,91。 5,60,55}; floatscore2[10]={67.5,89。 5,99,69.5,77,89。 5,76。 5,54,60,99.5}; printf("TheaverageofclassAis%6。 2f\n",average(score1,5)); printf(”TheaverageofclassBis%6。 2f\n",average(score2,10)); return0; } floataverage(floatarray[10],intn) { inti; floataver,sum=array[0]; for(i=1;i〈n;i++) sum=sum+array[i]; aver=sum/n; return(aver); } 例7。 12 #include〈stdio.h> intmain() { voidsort(intarray[],intn); inta[10],i; printf(”enterarray: \n"); for(i=0;i〈10;i++) scanf(”%d",&a[i]); sort(a,10); printf("Thesortedarray: \n”); for(i=0;i〈10;i++) printf(”%d”,a[i]); printf("\n”); return0; } voidsort(intarray[],intn) { inti,j,k,t; for(i=0;i〈n-1;i++) { k=i; for(j=i+1;j〈n;j++) if(array[j] k=j; t=array[k];array[k]=array[i];array[i]=t; } } 例7.13 #include h> intmain() { intmax_value(intarray[][4]); inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}}; printf(”Maxvalueis%d\n",max_value(a)); return0; } intmax_value(intarray[][4]) { inti,j,max; max=array[0][0]; for(i=0;i〈3;i++) for(j=0;j<4;j++) if(array[i][j]>max)max=array[i][j]; return(max); } 例7。 14 #include h> floatMax=0,Min=0; intmain() { floataverage(floatarray[],intn); floatave,score[10]; inti; printf(”Pleaseenter10score: ”); for(i=0;i〈10;i++) scanf("%f",&score[i]); ave=average(score,10); printf("max=%6。 2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave); return0; } floataverage(floatarray[],intn) { inti; floataver,sum=array[0]; Max=Min=array[0]; for(i=1;i { if(array[i]〉Max)Max=array[i]; elseif(array[i]〈Min)Min=array[i]; sum+=array[i]; } aver=sum/n; return(aver); } 例7。 15 #include h〉 inta=3,b=5; intmain() { intmax(inta,intb); inta=8; printf(”max=%d\n",max(a,b)); return0; } intmax(inta,intb) { intc; c=a〉b? a: b; return(c); } 例7.16 #include intmain() { intf(int); inta=2,i; for(i=0;i<3;i++) printf(”%d\n",f(a)); return0; } intf(inta) { autointb=0; staticc=3; b=b+1; c=c+1; return(a+b+c); } 例7.17 #include〈stdio。 h〉 intmain() { intfac(intn); inti; for(i=1;i〈=5;i++) printf(”%d! =%d\n",i,fac(i)); return0; } intfac(intn) { staticintf=1; f=f*n; return(f); } 例7.18 #include〈stdio。 h> intmain() { intmax(); externintA,B,C; printf(”Pleaseenterthreeintergernumbers\n"); scanf("%d%d%d”,&A,&B,&C); printf("maxis%d\n",max()); return0; } intA,B,C; intmax() { intm; m=A>B? A: B; if(C>m)m=C; return(m); } 例7.19 file1。 c #include intA; intmain() { intpower(int); intb=3,c,d,m; printf("enterthenumberaanditspowerm: \n"); scanf(”%d,%d”,&A,&m); c=A*b; printf(”%d*%d=%d\n",A,b,c); d=power(m); printf("%d**%d=%d\n”,A,m,d); return0; } file2。 c externA; intpower(intn) { inti,y=1; for(i=1;i〈=n;i++) y*=A; return(y); } 例7。 20 file1。 c #include intmain() { externvoidenter_string(charstr[]); externvoiddelete_string(charstr[],charch); externvoidprint_string(charstr[]); charc,str[80]; enter_string(str); scanf("%c",&c); delete_string(str,c); print_string(str); return0; } file2。 c voidenter_string(charstr[80]) { gets(str); } file3.c voiddelete_string(charstr[],charch) { inti,j; for(i=j=0;str[i]! =’\0';i++) if(str[i]! =ch) str[j++]=str[i]; str[j]=’\0'; } file4。 c voidprint_string(charstr[]) { printf("%s\n”,str); } 习题 1. #include〈stdio.h〉 intdivisor(x,y) { intr; if(x〈y) { r=x; x=y; y=r; } while(r) { r=x%y; x=y; y=r; } return(x); } intmultiple(intx,inty) { intz; z=x*y/divisor(x,y); return(z); } intmain() { inta,b; printf("请输入两个整数a和b: ”); scanf(”%d,%d",&a,&b); printf(”a和b的最大公约数为%d。 \n”,divisor(a,b)); printf(”a和b的最小公倍数为%d。 \n",multiple(a,b)); return0; } 2。 #include〈stdio。 h> #include〈math.h> floatd; voiddisc1(floata,floatb,floatc) { printf("方程有两不等实根: x1=%5。 2f,x2=%5.2f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)); } voiddisc2(floata,floatb,floatc) { printf(”方程有两相等实根: x1=x2=%5.2f\n”,-b/(2*a)); } voiddisc3(floata,floatb,floatc) { printf("方程有两不等实根: x1=%5。 2f+%5。 2fi,x2=%5.2f-%5。 2fi\n",-b/(2*a),sqrt(—d)/(2*a),—b/(2*a),sqrt(—d)/(2*a)); } intmain() { floata,b,c; printf("请输入a,b,c: "); scanf("%f,%f,%f",&a,&b,&c); d=b*b-4*a*c; if(d>0)disc1(a,b,c); elseif(fabs(d)<=1e—6)disc2(a,b,c); elsedisc3(a,b,c); return0; } 3。 #include #include voidf(inta) { inti,n=(int)sqrt(a),t; for(i=2,t=1;i<=n;i++) { if(a%i==0) { t=0; printf("这是一个合数。 \n”);break; } } if(t)printf("这是一个素数。 \n"); } intmain() { inta; printf("请输入一个正整数a: ”); scanf("%d",&a); f(a); return0; } 4. #include h〉 voidf(inta[3][3]) { inti,j,t; for(i=0;i<=2;i++) for(j=0;j { t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } } voidmain() { inti,j,a[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i〈=2;i++) { for(j=0;j〈=2;j++) printf(”%5d”,a[i][j]); printf(”\n"); } printf("\n"); f(a); for(i=0;i<=2;i++) { for(j=0;j<=2;j++) printf(”%5d",a[i][j]); printf(”\n”); } } 5. #include〈stdio。 h> #include voidf(chara[]) { inti,t; charb; t=strlen(a); for(i=0;i<=t/2;i++) { b=a[i]; a[i]=a[t-i-1]; a[t—i-1]=b; } } voidmain() { charch[80]; gets(ch); f(ch); puts(ch); } 6. #include〈stdio。 h〉 voidf(chara[],charb[]) { inti,j; for(i=0;a[i]! ='\0';i++); for(j=0;b[j]! ='\0’;i++,j++) a[i]=b[j]; } voidmain() { charch1[80]=”Howdoyoudo! ”,ch2[]=”Fine,thankyou,andyou? "; f(ch1,ch2); puts(ch1); } 7. #include〈stdio.h> voidf(chara[80],charb[40]) { inti,j; for(i=0,j=0;a[i]! =’\0’;i++) if(a[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 第四 版谭浩强 习题 例题