C程序设计第四版谭浩强习题例题第7章.docx
- 文档编号:15004362
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:37
- 大小:20.43KB
C程序设计第四版谭浩强习题例题第7章.docx
《C程序设计第四版谭浩强习题例题第7章.docx》由会员分享,可在线阅读,更多相关《C程序设计第四版谭浩强习题例题第7章.docx(37页珍藏版)》请在冰点文库上搜索。
C程序设计第四版谭浩强习题例题第7章
第7章函数
例7.1
#include
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
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
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
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
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
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
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
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
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
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
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 sum=sum+array[i]; aver=sum/n; return(aver); } 例7.12 #include 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 { k=i; for(j=i+1;j if(array[j] k=j; t=array[k];array[k]=array[i];array[i]=t; } } 例7.13 #include 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 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] sum+=array[i]; } aver=sum/n; return(aver); } 例7.15 #include 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 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 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 intdivisor(x,y) { intr; if(x { 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 #include 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 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 #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 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 voidf(chara[80],charb[40]) { inti,j; for(i=0,j=0;a[i]! ='\0';i++) if(a[i]=='A'||a[i]=='E'||a[i]=='I'||a[i]=='O'||a[i]=='U'||a[i]=='a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 第四 版谭浩强 习题 例题