c答案

更新时间:2024-06-18 04:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

c程序设计(第三版)答案 作者:谭浩强

新世纪计算机基础教育丛书 清华大学出版社 第一章 1.6 main()

{int a,b,c,max;

printf(\ scanf(\ max=a;

if(max

printf(\}

第二章

2.3

(1)(10)10=(12)8=(a)16 (2)(32)10=(40)8=(20)16 (3)(75)10=(113)8=(4b)16 (4)(-617)10=(176627)8=(fd97)16 (5)(-111)10=(177621)8=(ff91)16 (6)(2483)10=(4663)8=(963)16

(7)(-28654)10=(110022)8=(9012)16 (8)(21003)10=(51013)8=(520b)16 2.6

aabb (8)cc (8)abc (7)AN 2.7 main()

{char c1='C',c2='h',c3='i',c4='n',c5='a'; c1+=4, c2+=4, c3+=4, c4+=4, c5+=4; printf(\} 2.8 main() {int c1,c2; c1=97;c2=98;

printf(\ %c\}

1

2.9 (1)=2.5 (2)=3.5 2.10 9,11,9,10

2.12

(1)24 (2)10 (3)60 (4)0 (5)0 (6)0

第三章 3.4 main() {int a,b,c; long int u,n; float x,y,z; char c1,c2; a=3;b=4;c=5;

x=1.2;y=2.4;z=-3.6; u=51274;n=128765; c1='a';c2='b';

printf(\

printf(\ b=- c=-\\n\printf(\,z);

printf(\ y+z=%5.2f z+x=%5.2f\\n\,y+z,z+x);

printf(\ n=%9ld\\n\

printf(\ printf(\} 3.5 57

5 7

67.856400,-789.123962

67.856400,-789.123962

67.86 -789.12,67.856400,-789.123962,67.856400,-789.123962 6.785640e+001,-7.89e+002 A,65,101,41

1234567,4553207,d687 65535,177777,ffff,-1 COMPUTER, COM 3.6

a=3 b=7/

2

x=8.5 y=71.82/

c1=A c2=a/ 3.7

10 20Aa1.5 -3.75 +1.4,67.8/

(空3)10(空3)20Aa1.5(空1)-3.75(空1)(随意输入一个数),67.8回车 3.8 main()

{float pi,h,r,l,s,sq,sv,sz; pi=3.1415926;

printf(\ scanf(\ l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; sv=4.0/3.0*pi*r*r*r; sz=pi*r*r*h;

printf(\ printf(\ printf(\ printf(\ printf(\} 3.9 main()

{float c,f;

scanf(\ c=(5.0/9.0)*(f-32); printf(\}

3.10

#i nclude\main() {char c1,c2;

scanf(\ putchar(c1); putchar(c2); printf(\

printf(\}

3

第四章

4.3

(1)0 (2)1 (3)1 (4)0 (5)1 4.4 main() {int a,b,c;

scanf(\ if(a

printf(\ else

printf(\ else if(a

printf(\ else

printf(\}

main()

{int a,b,c,temp,max;

scanf(\ temp=(a>b)?a:b;

max=(c>temp)?c:temp; printf(\} 4.5

main() {int x,y;

scanf(\ if(x<1)y=x;

else if(x<10)y=2*x-1; else y=3*x-11; printf(\} 4.6

main()

{int score,temp,logic; char grade; logic=1;

while(logic)

{scanf(\

if(score>=0&&score<=100)logic=0;

4

}

if(score==100) temp=9; else

temp=(score-score)/10; switch(temp)

{case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break; case 5: case 4: case 3: case 2:

case 1:

case 0:grade='E';

}

printf\} 4.7

main()

{long int num;

int indiv,ten,hundred,thousand,ten_thousand,place; scanf(\ if(num>9999) place=5; else if(num>999) place=4; else if(num>99) place=3; else if(num>9) place=2; else place=1;

printf(\ ten_thousand=num/10000;

thousand=(num-ten_thousand*10000)/1000;

hundred=(num-ten_thousand*10000-thousand*1000)/100;

ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10; indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10; switch(place)

{case 5:printf(\ printf(\ break;

case 4:printf(\ printf(\ break;

case 3:printf(\

5

printf(\ break;

case 2:printf(\ printf(\ break;

case 1:printf(\ printf(\ } } 4.8 main()

{long i;

float bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1;

bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; scanf(\ if(i<=1e5)bonus=i*0.1;

else if(i<=2e5)bonus=bon1+(i-100000)*0.075; else if(i<=4e5)bonus=bon2+(i-200000)*0.05; else if(i<=6e5)bonus=bon4+(i-400000)*0.03; else if(i<=1e6)bonus=bon6+(i-600000)*0.015;

else bonus=bon10+(i-1000000)*0.01; printf(\}

main() {long i;

float bonus,bon1,bon2,bon4,bon6,bon10; int branch;

bon1=100000*0.1;

bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; scanf(\ branch=i/100000; if(branch>10)branch=10; switch(branch)

{case 0:bonus=i*0.1;break;

case 1:bonus=bon1+(i-100000)*0.075;break; case 2:

6

case 3:bonus=bon2+(i-200000)*0.05;break; case 4:

case 5:bonus=bon4+(i-400000)*0.03;break; case 6: case 7 case 8:

case 9:bonus=bon6+(i-600000)*0.015;break; case 10:bonus=bon10+(i-1000000)*0.01; }

printf(\} 4.9 main()

{int t,a,b,c,d;

scanf(\ if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(a>d){t=a;a=d;d=t;} if(b>c){t=b;b=c;c=t;} if(b>d){t=b;b=d;d=t;}

if(c>d){t=c;c=d;d=t;}

printf(\ %d %d %d\\n\} 4.10 main()

{int h=10;

float x,y,x0=2,y0=2,d1,d2,d3,d4; scanf(\

d1=(x-x0)*(x-x0)+(y-y0)*(y-y0); d2=(x-x0)*(x-x0)+(y+y0)*(y+y0); d3=(x+x0)*(x+x0)+(y-y0)*(y-y0); d4=(x+x0)*(x+x0)+(y+y0)*(y+y0); if(d1>1&&d2>1&&d3>1&&d4>1)h=0; printf(\}

第五章 循环控制 5.1 main()

{int a,b,num1,num2,temp;

scanf(\

if(num1

7

while(b!=0) {temp=a%b; a=b;

b=temp;} printf(\

printf(\}

5.2

#i nclude\main() {char c;

int letters=0,space=0,digit=0,other=0; while((c=getchar())!='\\n')

{if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ')space++; else if(c>='0'&&c<='9')digit++; else other++; }

printf(\}

5.3 main()

{int a,n,count=1,sn=0,tn=0; scanf(\ while(count<=n) {tn+=a; sn+=tn; a*=10; ++count; }

printf(\} 5.4 main()

{float n,s=0,t=1;

for(n=1;n<=20;n++) {t*=n; s+=t;

}

printf(\}

8

5.5 main()

{int N1=100,N2=50,N3=10; float k;

float s1=0,s2=0,s3=0; for(k=1;k<=N1;k++)s1+=k; for(k=1;k<=N2;k++)s2+=k*k; for(k=1;k<=N3;k++)s3+=1/k; printf(\} 5.6 main()

{int i,j,k,n;

for(n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf(\ } } 5.7

#define M 1000 main()

{int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9; int i,j,n,s;

for(j=2;j<=M;j++) {n=0; s=j;

for(i=1;i

{case 1:k0=i;break; case 2:k1=i;break; case 3:k2=i;break; case 4:k3=i;break; case 5:k4=i;break; case 6:k5=i;break; case 7:k6=i;break;

9

case 8:k7=i;break; case 9:k8=i;break; case 10:k9=i;break; } } } if(s==0)

{printf(\

if(n>1)printf(\ if(n>2)printf(\ if(n>3)printf(\ if(n>4)printf(\ if(n>5)printf(\ if(n>6)printf(\ if(n>7)printf(\ if(n>8)printf(\ if(n>9)printf(\ } } }

main()

{static int k[10]; int i,j,n,s;

for(j=2;j<=1000;j++) {n=-1; s=j;

for(i=1;i

if(s==0)

{printf(\ for(i=0;i

10

main()

{int n,t,number=20; float a=2;b=1;s=0;

for(n=1;n<=number;n++) {s=s+a/b; t=a,a=a+b,b=t; }

printf(\} 5.9 main()

{float sn=100.0,hn=sn/2; int n;

for(n=2;n<=10;n++) {sn=sn+2*hn; hn=hn/2; }

printf(\ printf(\}

5.10 main()

{int day,x1,x2; day=9; x2=1;

while(day>0) {x1=(x2+1)*2; x2=x1; day--; }

printf(\}

5.11

#i nclude\main()

{float a,xn0,xn1; scanf(\ xn0=a/2;

xn1=(xn0+a/xn0)/2; do

{xn0=xn1;

11

xn1=(xn0+a/xn0)/2;

}

while(fabs(xn0-xn1)>=1e-5);

printf(\}

5.12

#i nclude\main() {float x,x0,f,f1; x=1.5; do

{x0=x;

f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x=x0-f/f1;

}

while(fabs(x-x0)>=1e-5); printf(\}

5.13

#i nclude\main()

{float x0,x1,x2,fx0,fx1,fx2; do

{scanf(\ fx1=x1*((2*x1-4)*x1+3)-6; fx2=x2*((2*x2-4)*x2+3)-6; }

while(fx1*fx2>0); do

{x0=(x1+x2)/2;

fx0=x0*((2*x0-4)*x0+3)-6; if((fx0*fx1)<0) {x2=x0; fx2=fx0; } else {x1=x0; fx1=fx0; } }

while(fabs(fx0)>=1e-5);

12

printf(\} 5.14 main() {int i,j,k; for(i=0;i<=3;i++) {for(j=0;j<=2-i;j++) printf(\ for(k=0;k<=2*i;k++) printf(\ printf(\ }

for(i=0;i<=2;i++) {for(j=0;j<=i;j++) printf(\

for(k=0;k<=4-2*i;k++) printf(\ printf(\ } } 5.15 main() {char i,j,k;

for(i='x';i<='z';i++) for(j='x';j<='z';j++) {if(i!=j)

for(k='x';k<='z';k++) {if(i!=k&&j!=k)

{if(i!='x'&&k!='x'&&k!='z')

printf(\ } } } }

第六章 数组 6.1

#i nclude #define N 101 main()

{ int i,j,line,a[N];

for (i=2;i

13

for (j=i+1;j

for (i=2,line=0;i

{ printf(\ line++; } if(line==10) { printf(\ line=0; } } } 6.2

#define N 10 main()

{int i,j,min,temp,a[N]; for(i=0;i

for(j=i+1;j

if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; }

for(i=0;i

main()

{float a[3][3],sum; int i,j;

for(i=0;i<3;i++) for(j=0;j<3;j++) {scanf(\ a[i][j]=sum; }

for(i=0;i<3;i++) sum=sum+a[i][i];

14

printf(\}

if(number>end) a[10]=numbe 6.4 main()

{int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number, end,i,j; scanf(\ end=a[9];

{for(i=0;i<10;i++) {if(a[i]>number) {temp1=a[i]; a[i]=number; for(j=i+1;j<11;j++) {temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } }

for(i=0;i<11;i++) printf(\}

6.5

#define N 5 main()

{int a[N]={8,6,5,4,1},i,temp; for(i=0;i

for(i=0;i

#define N 11 main()

{int i,j,a[N][N];

15

for(i=1;i

for(i=3;i

a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i

{int a[16][16],i,j,k,p,m,n; p=1;

while(p==1) {scanf(\

if((n!=0)&&(n<=15)&&(n%2!=0))p=0; }

for(i=1;i<=n;i++) for(j=1;j<=n;j++) a[i][j]=0; j=n/2+1; a[1][j]=1;

for(k=2;k<=n*n;k++) {i=i-1; j=j+1;

if((i<1)&&(j>n)) {i=i+2; j=j-1; }

else

{if(i<1)i=n; if(j>n)j=1; }

if(a[i][j]==0)a[i][j]=k; else {i=i+2; j=j-1; a[i][j]=k; }

16

}

for(i=1;i<=n;i++) {for(j=1;j<=n;j++)

printf(\ printf(\ } } 6.8 #define N 10 #define M 10 main()

{int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; scanf(\ for(i=0;i

for(i=0;i for(k=0,flag1=1;ka[k][maxj])flag1=0;

if(flag1)

{ printf(\ flag2=1; } }

if(!flag2) printf(\}

6.9

#i nclude #define N 15 main()

{int i,j,number,top,bott,min,loca,a[N],flag; char c;

for(i=0;i<=N;i++) scanf(\ flag=1;

17

while(flag)

{scanf(\ loca=0; top=0; bott=N-1;

if((numbera[N-1])) loca=-1;

while((loca==0)&&(top<=bott)) {min=(bott+top)/2; if(number==a[min])

{loca=min;

printf(\ }

else if(number

top=min+1; }

if(loca==0||loca==-1)

printf(\ printf(\ c=getchar();

if(c=='N'||c=='n')flag=0; } } 6.10

main()

{int i,j,uppn,lown,dign,span,othn; char text[3][80];

uppn=lown=dign=span=othn=0; for(i=0;i<3;i++)

{gets(text[i]);

for(j=0;j<80&&text[i][j]!='\\0';j++) {if(text[i][j]>='A'&&text[i][j]<='Z') uppn++;

else if(text[i][j]>='a'&&text[i][j]<='z') lown++;

else if(text[i][j]>='0'&&text[i][j]<='9') dign++;

else if(text[i][j]==' ') span++; else

othn++;

18

}

}

for(i=0;i<3;i++)

printf(\ printf(\ printf(\ printf(\ printf(\ printf(\} 6.11

main()

{static char a[5]={'*','*','*','*','*'}; int i,j,k;

char space=' '; for(i=0;i<=5;i++) {printf(\

for(j=1;j<=3*i;j++) printf(\ for(k=0;k<=5;k++) printf(\ } }

6.12

#i nclude main() {int i,n;

char ch[80],tran[80]; gets(ch); i=0;

while(ch[i]!='\\0')

{if((ch[i]>='A')&&(ch[i]<='Z')) tran[i]=26+64-ch[i]+1+64; else if((ch[i]>='a')&&(ch[i]<='z')) tran[i]=26+96-ch[i]+1+96; else

tran[i]=ch[i]; i++; }

n=i;

for(i=0;i

19

}

6.13 main()

{char s1[80],s2[40]; int i=0,j=0; scanf(\ scanf(\

while(s1[i]!='\\0')i++;

while(s2[j]!='\\0')s1[i++]=s2[j++]; s1[i]='\\0';

printf(\}

6.14

#i nclude main() {int i,resu;

char s1[100],s2[100]; gets(s1); gets(s2);

i=0;

while((s1[i]==s2[i])&&(s1[i]!='\\0'))i++; if(s1[i]=='\\0'&&s2[i]=='\\0')resu=0; else

resu=s1[i]-s2[i];

printf(\} 6.15

#i nclude\main()

{char from[80],to[80];; int i;

scanf(\

for(i=0;i<=strlen(from);i++) to[i]=from[i]; printf(\}

第七章 7.1 hcf(u,v) int u,v;

20

{int a,b,t,r;

if(u>v){t=u;u=v;v=t;} a=u;b=v;

while((r=b%a)!=0) {b=a;a=r;} return(a); } lcd(u,v,h) int u,v,h; {return(u*v/h);} main() {int u,v,h,l;

scanf(\ h=hcf(u,v);

printf(\ l=lcd(u,v,h);

printf(\}

7.2

#i nclude\float x1,x2,disc,p,q; greater_than_zero(a,b) float a,b;

{x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); }

equal_to_zero(a,b) flaot a,b;

{x1=x2=-b/(2*a);} smaller_than_zero(a,b) float a,b;

{p=-b/(2*a);

q=sqrt(-disc)/(2*a); }

main() {float a,b,c;

scanf(\ disc=b*b-4*a*c; if(fabs(disc)<=1e-5) {equal_to_zero(a,b);

printf(\ }

else if(disc>0)

21

{greater_than_zero(a,b);

printf(\ } else

{smaller_than_zero(a,b);

printf(\ } } 7.3 main()

{int number;

scanf(\ if(prime(number)) printf(\ else

printf(\}

int prime(number) int number; {int flag=1,n;

for(n=2;n

7.4

#define N 3 int array[N][N]; convert(array) int array[3][3]; {int i,j,t;

for(i=0;i

{int i,j;

for(i=0;i

22

scanf(\ convert(array); for(i=0;i

for(j=0;j

printf(\ } } 7.5

main()

{char str[100]; scanf(\ inverse(str); printf(\}

inverse(str) char str[]; {char t; int i,j;

for(i=0,j=strlen(str);i

str[i]=str[j-1]; str[j-1]=t; } }

7.6

char concate(str1,str2,str) char str1[],str2[],str[]; {int i,j;

for(i=0;str1[i]!='\\0';i++) str[i]=str1[i];

for(j=0;str2[j]!='\\0';j++) str[i+j]=str2[j]; str[i+j]='\\0'; }

main()

{char s1[100],s2[100],s[100]; scanf(\ scanf(\ concate(s1,s2,s); printf(\}

23

7.7 main()

{char str[80],c[80]; void cpy(); gets(str); cpy(str,c); printf(\}

void cpy(s,c) char s[],c[]; {int i,j;

for(i=0,j=0;s[i]!='\\0';i++)

if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'|| s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U') {c[j]=s[i];j++;} c[j]='\\0'; } 7.8 main()

{char str[80]; scanf(\ insert(str); } insert(str) char str[];

{int i;

for(i=strlen(str);i>0;i--) {str[i*2]=str[i]; str[i*2-1]=' '; }

printf(\} 7.9

int alph,digit,space,others; main()

{char text[80]; gets(text);

alph=0,digit=0,space=0,others=0;

count(text);

printf(\}

24

count(str)

char str[]; {int i;

for(i=0;str[i]!='\\0';i++)

if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')) alph++;

else if(str[i]>='0'&&str[i]<='9') digit++;

else if(strcmp(str[i],' ')==0) space++; else

others++; }

7.10

int alph(c)

char c;

{if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return(1); else return(0);

}

int longest(string) char string[];

{int len=0,i,length=0,flag=1,place,point; for(i=0;i<=strlen(string);i++) if(alph(string[i])) if(flag) {point=i; flag=0; } else len++; else

{flag=1;

if(len>length) {length=len; place=point; len=0; } } return(place); }

main()

25

{int i;

char line[100]; gets(line);

for(i=longest(line);alph(line[i]);i++) printf(\ printf(\} 7.11 #define N 10 char str[N]; main()

{int i,flag;

for(flag=1;flag==1;) {scanf(\ if(strlen(str)>N) printf(\ else

flag=0; } sort(str);

for(i=0;i

sort(str) char str[N]; {int i,j;

char t;

for(j=1;j

for(i=0;(istr[i+1]) {t=str[i]; str[i]=str[i+1]; str[i+1]=t; } }

7.12

#i nclude float solut(a,b,c,d) float a,b,c,d; {float x=1,x0,f,f1; do

{x0=x;

26

f=((a*x0+b)*x0+c)*x0+d; f1=(3*a*x0+2*b)*x0+c; x=x0-f/f1; }

while(fabs(x-x0)>=1e-5); return(x); }

main()

{float a,b,c,d;

scanf(\ printf(\} 7.13 main() {int x,n;

float p();

scanf(\

printf(\}

float p(tn,tx) int tn,tx; {if(tn==0) return(1); else if(tn==1) return(tx); else

return(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn); }

7.14

#define N 10 #define M 5

float score[N][M]; float a_stu[N],a_cor[M]; main() {int i,j,r,c; float h;

float s_diff(); float highest(); r=0; c=1;

input_stu(); avr_stu();

27

avr_cor();

printf(\ number class 1 2 3 4 5 avr\ for(i=0;i

{printf(\ for(j=0;j

printf(\ printf(\ }

printf(\ for(j=0;j

printf(\ %d %d\\n\ printf(\ %8.2f\\n\}

input_stu() {int i,j; float x;

for(i=0;i

float s;

for(i=0;i

{for(j=0,s=0;j

for(j=0;j

{for(i=0,s=0;i

float highest(r,c)

28

int *r,*c;

{float high; int i,j;

high=score[0][0]; for(i=0;ihigh) {high=score[i][j]; *r=i+1; *c=j+1; } return(high); }

float s_diff()

{int i,j;

float sumx=0.0,sumxn=0.0; for(i=0;i

{sumx+=a_stu[i]*a_stu[i]; sumxn+=a_stu[i]; }

return(sumx/N-(sumxn/N)*(sumxn/N)); } 7.15

#i nclude #define N 10

void input_e(num,name) int num[];

char name[N][8]; {int i;

for(i=0;i

{scanf(\ gets(name[i]); }

}

void sort(num,name) int num[]; char name[N][8]; {int i,j,min,temp1; char temp2[8]; for(i=0;i

{min=i;

for(j=i;j

if(num[min]>num[j])min=j;

29

temp1=num[i];

num[i]=num[min]; num[min]=temp1; strcpy(temp2,name[i]); strcpy(name[i],name[min]); strcpy(name[min],temp2); }

for(i=0;i

printf(\}

void search(n,num,name) int n,num[];

char name[N][8]; {int top,bott,min,loca; loca=0; top=0;

bott=N-1;

if((nnum[N-1])) loca=-1;

while((loca==0)&&(top<=bott)) {min=(bott+top)/2;

if(n==num[min]) {loca=min;

printf(\ }

else if(n

top=min+1; }

if(loca==0||loca==-1)

printf(\}

main()

{int num[N],number,flag,c,n; char name[N][8]; input_e(num,name); sort(num,name); for(flag=1;flag;)

{scanf(\ search(number,num,name); printf(\ c=getchar(); if(c=='N'||c=='n')

30

flag=0; } } 7.16

#i nclude #define MAX 1000 main()

{int c,i,flag,flag1; char t[MAX]; i=0; flag=0;

flag1=1;

while((c=getchar())!='\\0'&&i

{if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f') {flag=1; t[i++]=c; }

else if(flag) {t[i]='\\0';

printf(\ printf(\ c=getchar(); if(c=='n'||c=='N') flag1=0; else

{flag=0; i=0; } } } } htoi(s) char s[]; {int i,n; n=0;

for(i=0;s[i]!='\\0';i++) {if(s[i]>='0'&&s[i]<='9') n=n*16+s[i]-'0'; if(s[i]>='a'&&s[i]<='f') n=n*16+s[i]-'a'+10; if(s[i]>='A'&&s[i]<='F') n=n*16+s[i]-'A'+10; }

31

return(n); } 7.17

#i nclude void convert(n) int n;

{int i;

if((i=n/10)!=0) convert(i); putchar(n+'0'); }

main()

{int number;

scanf(\ if(number<0) {putchar('-');

number=-number; }

convert(number); }

7.18 main()

{int year,month,day;

int days;

scanf(\ days=sum_day(month,day); if(leap(year)&&(month>=3)) days+=1;

printf(\}

static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31} int sum_day(month,day) int month,day; {int i;

for(i=1;i

int leap(year)

int year; {int leap;

leap=year%4==0&&year0!=0||year@0==0;

32

return(leap); }

第八章 编译预处理 8.1

#define SWAP(a,b) t=b;b=a;a=t main()

{int a,b,t;

scanf(\ SWAP(a,b);

printf(\} 8.2

#define SURPLUS(a,b) ((a)%(b)) main()

{int a,b;

scanf(\

printf(\}

8.3

#i nclude\

#define S(a,b,c) ((a+b+c)/2)

#define AREA(a,b,c) (sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))) main()

{float a,b,c;

scanf(\ if(a+b>c&&b+c>a&&a+c>b)

printf(\ else

printf(\}

8.4

#define LEAP(y) (y%4==0)&&(y0!=0)||(y@0==0) main()

{int year;

scanf(\ if(LEAP(year)) printf(\ else

printf(\}

33

8.5

printf(\

printf(\

printf(\输出结果:

value=5.000000ormat \value=3.000000ormat \ 8.6

\#define NL \#define Fs \#define F \#define F1 F NL

#define F2 F \#define F3 F \main()

{float a,b,c; scanf(Fs,&a); scanf(Fs,&b); scanf(Fs,&c); PR(NL); PR(F1,a); PR(F1,b); PR(F1,c); PR(NL); PR(F2,a,b); PR(F1,c); PR(NL); PR(F3,a,b,c); }

8.7

/*format.h文件*/

#define DIGIT(d) printf(\#define FLOAT(f) printf(\#define STRING(s) printf(\/*用户文件*/ #i nclude\main() {int d,num; float f; char s[80];

34

scanf(\ switch(num)

{case 1:scanf(\ DIGIT(d); break; case 2:scanf(\ FLOAT(f); break;

case 3:scanf(\ STRING(s); break;

default:printf(\ } } 8.8

main() {int a,b,c;

scanf(\ printf(\}

max(a,b,c) int a,b,c; {int t;

t=x>y?x:y; return(t>z?t:z); }

#define MAX(a,b) ((a)>(b)?(a):(b)) main()

{int a,b,c;

scanf(\ printf(\}

8.10

#i nclude\#define MAX 80 #define CHANGE 1 main()

{char str[MAX]; int i;

scanf(\ #if(CHANGE)

35

{for(i=0;i

{if(str[i]!='\\0')

if(str[i]>='a'&&str[i]<'z'||str[i]>='A'&&str[i]<'Z') str[i]++;

else if(str[i]=='z'||str[i]=='Z') str[i]-=25; } } #endif

printf(\}

第九章 指针 9.1

main()

{int n1,n2,n3;

int *p1,*p2,*p3;

scanf(\ p1=&n1; p2=&n2; p3=&n3; if(n1>n2)swap(p1,p2); if(n1>n3)swap(p1,p3); if(n2>n3)swap(p2,p3);

printf(\

}

swap(p1,p2)

int *p1,*p2; {int p;

p=*p1;*p1=*p2;*p2=p; } 9.2 main()

{char *str1[20],*str2[20],*str3[20]; char swap(); scanf(\ scanf(\ scanf(\

if(strcmp(str1,str2)>0)swap(str1,str2); if(strcmp(str1,str3)>0)swap(str1,str3); if(strcmp(str2,str3)>0)swap(str2,str3); printf(\}

36

char swap(p1,p2) char *p1,*p2; {char *p[20]; strcpy(p,p1); strcpy(p1,p2); strcpy(p2,p); } 9.3 main()

{int number[10]; input(number);

max_min_value(number); output(number); }

input(number) int number[10]; {int i;

for(i=0;i<10;i++)

scanf(\}

max_min_value(number) int number[10]; {int *max,*min; int *p,*end; end=number+10; max=min=number;

for(p=number+1;p*max)max=p; else if(*p<*min)min=p; *p=number[0]; number[0]=*min; *min=*p;

*p=number[9]; number[9]=*max; *max=*p; return; }

output(number) int number[10]; {int *p;

for(p=number;p

37

}

9.4 main()

{int number[20],n,m,i; scanf(\ scanf(\

for(i=0;i

scanf(\ move(number,n,m); for(i=0;i

printf(\}

move(array,n,m) int array[20],n,m; {int *p,end;

end=*(array+n-1);

for(p=array+n-1;p>array;p--) *p=*(p-1); *array=end; m--;

if(m>0)move(array,n,m); } 9.5

#define nmax 50 main()

{int i,k,m,n,num[nmax],*p; scanf(\ p=num; for(i=0;i

if(i==n)i=0; }

while(*p==0)p++;

38

printf(\} 9.6 main() {int len; char *str[20]; scanf(\ len=length(str); printf(\}

length(p) char *p; {int n=0; while(*p!='\\0') {n++;p++;} return(n); } 9.7 main()

{int m;

char *str1[20],*str2[20]; scanf(\ scanf(\ if(strlen(str1)

{copystr(str1,str2,m); printf(\ } }

copystr(p1,p

39

本文来源:https://www.bwwdw.com/article/i6n3.html

Top