C程序设计第四版谭浩强习题例题.docx
- 文档编号:6042604
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:39
- 大小:165.46KB
C程序设计第四版谭浩强习题例题.docx
《C程序设计第四版谭浩强习题例题.docx》由会员分享,可在线阅读,更多相关《C程序设计第四版谭浩强习题例题.docx(39页珍藏版)》请在冰点文库上搜索。
C程序设计第四版谭浩强习题例题
第7章函数
例
#include<>
intmain()
{
voidprint_star();
voidprint_message();
print_star();
print_message();
print_star();
return0;
}
voidprint_star()
{
printf("***********************************\n");
}
voidprint_message()
{
printf("Howdoyoudo!
\n");
}
例
intmax(intx,inty)
{
intz;
z=x>yx:
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;
}
例
#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>yx:
y;
return(z);
}
例
#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);
}
例
#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>ba:
b);
}
例
#include<>
intmain()
{
intage(intn);
printf(",age:
%d\n",age(5));
return0;
}
intage(intn)
{
intc;
if(n==1)c=10;
elsec=age(n-1)+2;
return(c);
}
例递归方法求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);
}
例汉诺塔
#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",m,n+1);
}
intmax(intx,inty)
{
return(x>yx:
y);
}
例
#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%\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);
}
例
#include<>
intmain()
{
floataverage(floatarray[10],intn);
floatscore1[5]={,97,,60,55};
floatscore2[10]={,,99,,77,,,54,60,};
printf("TheaverageofclassAis%\n",average(score1,5));
printf("TheaverageofclassBis%\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); } 例 #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; } } 例 #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); } 例 #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=%\nmin=%\naverage=%\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); } 例 #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>ba: b; return(c); } 例 #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); } 例 #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); } 例 #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>BA: B; if(C>m)m=C; return(m); } 例 #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; } externA; intpower(intn) { inti,y=1; for(i=1;i<=n;i++) y*=A; return(y); } 例 #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; } voidenter_string(charstr[80]) { gets(str); } 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'; } 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=%,x2=%\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)); } voiddisc2(floata,floatb,floatc) { printf("方程有两相等实根: x1=x2=%\n",-b/(2*a)); } voiddisc3(floata,floatb,floatc) { printf("方程有两不等实根: x1=%+%,x2=%%\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'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u') { b[j]=a[i]; j++; } b[j]='\0'; } intmain() { charch1[80]="HowareyouFine,thankyou,andyou",ch2[40]; f(ch1,ch2); puts(ch2); return0; } 8. #include<> voidf(intn,intch[]) { ch[0]=n/1000; ch[1]=(n-ch[0]*1000)/100; ch[2]=(n-ch[0]*1000-ch[1]*100)/10; ch[3]=n%10; } voidmain() { intn,i,ch[4]; printf("输入一个四位整数: \n"); scanf("%d",&n); f(n,ch); for(i=0;i<=3;i++) printf("%c",ch[i]+48); } 9. #include<> intupp,low,num,space,other; voidf(charc[]) { inti; for(upp=0,low=0,num=0,space=0,other=0,i=0;c[i]! ='\0';i++) { if(c[i]>='A'&&c[i]<='Z')upp++; elseif(c[i]>='a'&&c[i]<='z')low++; elseif(c[i]>='0'&&c[i]<='9')num++; elseif(c[i]=='')space++; elseother++; } } voidmain() { charch[80]; printf("输入一句英文,限80字符内: \n"); gets(ch); f(ch); printf("大写字母%d个,小写字母%d个,数字%d个,空格%d个,其他%d个\n",upp,low,num,space,other); } 10. #include<> voidf(chara[100],charb[40][30]) { inti,m,n,k,g; for(i=m=n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 第四 版谭浩强 习题 例题