《C语言学习知识程序设计》(苏小红)课后习题集规范标准答案高等教学教育出版社.doc
.2.2 #include<stdio.h>main()float x=2.5,y=2.5,z=2.5;printf("x=%fn",x);printf("y=%fn",y);printf("z=%fn",z);3.1(1) #include<stdio.h>main()int a=12,b=3;float x=18.5,y=4.6;printf("%fn",(float)(a*b)/2);printf("%dn",(int)x%(int)y);3.1(2)#include<stdio.h>main()int x=32,y=81,p,q;p=x+;q=-y;printf("%d %dn",p,q);printf("%d %dn",x,y);3.2 #include<stdio.h>main()int x,b0,b1,b2,s;printf("Inputx:");scanf("%d",&x);b2=x/100;b1=(x-b2*100)/10;/或(x%100)/10;或x/10%10;b0=x%10;s=b0*100+b1*10+b2;printf("s=%dn",s);3.3 #include<stdio.h>#include<math.h>main()float rate=0.0225;float n,capital,deposit;printf("Input n,capital:");scanf("%f,%f",&n,&capital);deposit=capital*pow(1+rate,n);printf("deposit=%fn",deposit);3.4 #include<stdio.h>#include<math.h>main()float a, b, c;double x, y;printf("Input a, b, c:");scanf("%f %f %f", &a, &b, &c);x=(-b+sqrt(b*b-4*a*c)/(2*a);y=(-b-sqrt(b*b-4*a*c)/(2*a);printf("x=%f,y=%fn",x,y);习题44.1(1) #include<stdio.h>main()char c1=a,c2=b,c3=c;printf("a%cb%cc%cn",c1,c2,c3);4.1(2) #include<stdio.h>main()int a=12,b=15;printf("a=%d%,b=%d%n",a,b);4.1(3) #include<stdio.h>main()int a,b;scanf("%2d%*2s%2d",&a,&b);printf("%d,%dn",a,b);4.2 #include<stdio.h>main()long a,b;float x,y;scanf("%d,%dn",&a,&b);scanf("%f,%fn",&x,&y);printf("a=%d,b=%dn",a,b);printf("x=%f,b=%fn",x,y);5.1 #include<stdio.h>main()float a;printf("Input a:");scanf("%f",&a);if(a>=0)a=a;printf("a=%fn",a);elsea=-a;printf("a=%fn",a);5.2 #include<stdio.h>main()int a;printf("Input a:");scanf("%d", &a);if(a%2=0)printf("a 是偶数");elseprintf("a 是奇数");5.3 #include<stdio.h>#include<math.h>main()float a,b,c,s,area;printf("Input a, b, c:");scanf("%f %f %f", &a, &b, &c);if(a+b>c&&a+c>b&&b+c>a)s=(a+b+c)/2;area=(float)sqrt(s*(s-a)*(s-b)*(s-c);printf("area=%fn",area);elseprintf("不是三角形");5.4 #include<stdio.h>#include<math.h>main()float a,b,c,x,y;printf("Inputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);if(a=0)printf("该方程不是一元二次方程n");if(b*b-4*a*c>0)x=(-b+sqrt(b*b-4*a*c)/(2*a);y=(-b-sqrt(b*b-4*a*c)/(2*a);printf("x=%f,y=%fn",x,y);else if(b*b-4*a*c=0)x=-b/(2*a);y=-b/(2*a);printf("x=%f,y=%fn",x,y);elseprintf("该方程无实根n");5.5 #include<stdio.h>main()int year,flag;printf("Input a year:");scanf("%d",&year);if(year%4=0&&year%400!=0|year%400=0)flag=1;elseflag=0;if(flag=1)printf("%d is a leap year !n",year);elseprintf("%d is not a leap year !n",year);5.6 #include<stdio.h>main()int year,flag;printf("Input a year:");scanf("%d",&year);flag=year%400=0|year%4=0&&year%100!=0?1:0;if(flag=1&&flag!=0)printf("%d is a leap year !n",year);elseprintf("%d is not a leap year !n",year);5.7 #include<stdio.h>main()char ch;printf("Inputch:");scanf("%c",&ch);if(ch>=a&&ch<=z)ch=getchar();ch=ch-32;printf("%c,%dn",ch,ch);else if(ch>=A&&ch<=Z)ch=getchar();ch=ch+32;printf("%c,%dn",ch,ch);elseprintf("%c",ch);5.8 #include<stdio.h>main()char ch;printf("Inputch:");scanf("%c",&ch);if(ch>=48&&ch<=57)printf("ch 是数字字符n");else if(ch>=65&&ch<=90)printf("ch 是大写字母n");else if(ch>=97&&ch<=122)printf("ch 是小写字母n");else if(ch=32)printf("ch 是空格n");elseprintf("ch 是其他字符n");5.9 #include<stdio.h>main()int score,grade;printf("Input score:");scanf("%d",&score);grade=score/10;if(score<0|score>100)printf("Input errorn");if(score>=90&&score<=100)printf("%d-An",score);else if(score>=80&&score<90)printf("%d-Bn",score);else if(score>=70&&score<80)printf("%d-Cn",score);else if(score>=60&&score<70)printf("%d-Dn",score);else if(score>=0&&score<60)printf("%d- -En",score);5.10 #include<stdio.h>main()int year,month;printf("Input year,month:");scanf("%d,%d",&year,&month);if(month>12|month<=0)printf("error monthn");elseswitch(year,month)case 12:case 10:case 8:case 7:case 5:case 3:case 1:printf("31 天n");break;case 11:case 9:case 6:case 4:printf("30 天n");break;case 2:if(year%4=0&&year!=0|year%400=0)printf("29 天n");elseprintf("28 天n");break;default:printf("Input errorn");6.1(1) #include<stdio.h>main()int i,j,k;char space= ;for(i=1;i<=4;i+)for(j=1;j<=i;j+)printf("%c",space);for(k=1;k<=6;k+)printf("*");printf("n");6.1(2) #include<stdio.h>main()int k=4,n;for(n=0;n<k;n+)if(n%2=0) continue;k-;printf("k=%dn,n=%dn",k,n);6.1(3) #include<stdio.h>main()int k=4,n;for(n=0;n<k;n+)if(n%2=0) break;k-;printf("k=%d,n=%dn",k,n);6.2(1) #include<stdio.h>main()int i,sum=0;for(i=1;i<=101;i+)sum=sum+i;printf("sum=%dn",sum);6.2(2) #include<stdio.h>main()long i;long term,sum=0;for(i=1;i<=101;i=i+2)term=i*(i+1)*(i+2);sum=sum+term;printf("sum=%ldn",sum);6.2(4) #include<stdio.h>#include<math.h>main()int n=1;float term=1.0,sign=1,sum=0;while(term<=-1e-4|term>=1e-4)term=1.0/sign;sum=sum+term;sign=sign+n;n+;printf("sum=%fn",sum);6.2(5) #include<stdio.h>#include<math.h>main()int n=1,count=1;float x;double sum,term;printf("Input x:");scanf("%f",&x);sum=x;term=x;doterm=-term*x*x/(n+1)*(n+2);sum=sum+term;n=n+2;count+;while(fabs(term)>=1e-5);printf("sin(x)=%f,count=%dn",sum,count);6.3 #include<stdio.h>main()int x=1,find=0;while(!find)if(x%2=1&&x%3=2&&x%5=4&&x%6=5&&x%7=0)printf("x=%dn",x);find=1;x+;/* int x,find=0;for (x=1;!find;x+)if(x%2=1&&x%3=2&&x%5=4&&x%6=5&&x%7=0)printf("x=%dn",x);find=1;*/6.4 #include<stdio.h>main()int i,n;long p=1,m=1;printf("Input n:");scanf("%d",&n);for(i=1;i<=n;i+)p=i*i;m=i*i*i;printf("p=%d,m=%dn",i,p,i,m);6.5 #include<stdio.h>main()float c,f;for(c=-40;c<=110;c=c+10)f=9/5*c+32;printf("f=%fn",f);6.6 #include<stdio.h>#include<math.h>main()int n;double c=0.01875,x;dox=x*pow(1+c,12)-1000;n+;while(x>0);printf("x=%dn",x);6.7 #include<stdio.h>main()int n=0;float a=100.0,c;printf("Inputc:");scanf("%f",&c);doa=a*(1+c);n+;while(a<=200);printf("n=%dn",n);6.8 #include<stdio.h>#include<math.h>main()int n=1,count=1;double sum=1,term=1;while(fabs(term)>=1e-5)term=pow(-1,count)*(1.0/(n+2);sum=sum+term;n=n+2;count+;sum=4*sum;printf( "sum=%f,count=%dn",sum,count);6.9 #include<stdio.h>#include<math.h>main()int n=1,count=1;double sum=1,term=1;while(fabs(term)>=1e-5)term=term*(1.0/n);sum=sum+term;n+;count+;printf("sum=%f,count=%dn",sum,count);6.10 #include<stdio.h>#include<math.h>main()int x;for(x=100;x<=999;x+)if(x=pow(x/100,3)+pow(x/10%10,3)+pow(x%10,3)printf("x=%dn",x);6.11 #include<stdio.h>main()int i=0,n;long sum=0,term=1;printf("Inputn:");scanf("%d",&n);doi+;term=term*i;sum=sum+term;while(sum<n);printf("%dn",i-1);6.12 #include<stdio.h>main()int i,n,m,count=0,sum=0;printf("Input n:");scanf("%d",&n);for(i=1;i<=n;i+)printf("Inputm:");scanf("%d",&m);if(m>0)sum=sum+m;count+;elsebreak;printf("sum=%d,count=%dn",sum,count);6.13 #include<stdio.h>main()int i,n,m,count=0,sum=0;printf("Inputn:");scanf("%d",&n);for(i=1;i<=n;i+)printf("Inputm:");scanf("%d",&m);if(m>0|m<0)sum=sum+m;count+;elsebreak;printf("sum=%d,count=%dn",sum,count);6.14 #include<stdio.h>main()int x,y,z;for(x=0;x<=17;x+)for(y=0;y<=25;y+)3*x+2*y+z=50;z=30-x-y;if( 3*x+2*y+z=50&&x+y+z=30)printf("x=%d,y=%d,z=%dn",x,y,z);6.15 #include<stdio.h>main()int x,y;for(x=0;x<=98;x+)y=98-x;2*x+4*y=386;if(x+y=98&&2*x+4*y=386)printf("x=%d,y=%dn",x,y);6.16 #include<stdio.h>main()int x,y,z;for(x=0;x<=20;x+)for(y=0;y<=33;y+)3*y+5*x+z/3.0=100;z=100-x-y;if (5*x+3*y+z/3.0=100&&z+x+y=100)printf("x=%d,y=%d,z=%dn",x,y,z);6.17 #include<stdio.h>main()int x,y,z;for(x=1;x<=9;x+)for(y=1;y<=17;y+)10*x+5*y+z=100;z=50-x-y;if( 10*x+5*y+z=100&&x+y+z=50&&z>0)printf("x=%d,y=%d,z=%dn",x,y,z);7.1 #include<stdio.h>int Square(int i)return i*i;int main()int i=0;i=Square(i);for( ;i<3;i+)static int i=1;i+=Square(i);printf("%d,",i);printf("%dn",i);return 0;7.2 #include<stdio.h>int hour,minute,second;void update()second+;if(second=60)second=0;minute+;if(minute=60)minute=0;hour+;if(hour=24)hour=0;void display()printf("%d,%d,%dn",hour,minute,second);void delay()int t;for(t=0;t<100000000;t+);int main()int i;void updaye(),display(),delay();for(i=0;i<1000000;i+)update();display();delay();return 0;7.3 #include<stdio.h>int GetMax(int a,int b);int main()int x,y,max;printf("Inputx,y:");scanf("%d,%d",&x,&y);max=GetMax(x,y);printf("max=%dn",max);return 0;int GetMax(int m,int n)if(m>=n)return m;elsereturn n;7.4 #include<stdio.h>int LCM(int n,int m);int main()int a,b;printf("Inputa,b:");scanf("%d,%d",&a,&b);printf("%dn",LCM(a,b);return 0;int LCM(int n,int m)int x;int find=0;for(x=1;!find;x+)if(x%n=0&&x%m=0)find=1;return x-1;7.5 #include<stdio.h>long Fact(int n);int main()int m,a;printf("Inputm:");scanf("%d",&m);for(a=1;a<=m;a+)printf("%d!=%ldn",a,Fact(a);return 0;long Fact(int n)int i;long result=1;for(i=2;i<=n;i+)result*=i;return result;7.6 #include<stdio.h>long Fact(int n);int main()int m;long ret;printf("Inputm:");scanf("%d",&m);ret=Fact(m);printf("ret=%dn",ret);return 0;long Fact(int n)int i;long result=1,sum=0;for(i=2;i<=n;i+)result*=i;sum=sum+result;return sum;7.7(1) #include<stdio.h>int Gcd(int a,int b);int main()int m,n;printf("Inputm,n:");scanf("%d,%d",&m,&n);printf("%dn",Gcd(m,n);return 0;int Gcd(int a,int b)int t,min,find=0;min=a<b?a:b;t=min;for(t=min;!find;t-)a%t=0;b%t=0;if(a%t=0&&b%t=0)return t;find=1;7.7(2) #include<stdio.h>int Gcd(int a,int b);int main()int m,n;printf("Inputm,n:");scanf("%d,%d",&m,&n);printf("%dn",Gcd(m,n);return 0;int Gcd(int a,int b)int r,temp;r=a%b;if(r=0)return b;elsedotemp=b;b=r;a=temp;r=a%b;while(r!=0);return b;8.1(1) #include<stdio.h>void Func(int x)x=2;int main()int x=10;Func(x);printf("%d",x);return 0;8.1(2) #include<stdio.h>void Func(int b)int j;for(j=0;j<4;j+)bj=j;int main()static int a=5,6,7,8,i;Func(a);for(i=0;i<4;i+)printf("%d",ai);return 0;8.2(1) int PositiveNum(int a,int n)int i,count=0;for(i=0;i<n;i+)if(ai>0)count+;return 0;8.2(2) void Fib(long f,long n)int i;f0=0;f1=1;for(i=2;i<n;i+)fi=fi-1+fi-2;8.2(3) #include<stdio.h>int main()int a10,n,max,min,maxPos,minPos;for(n=0;n<10;n+)scanf("%d",&an);max=min=a0;maxPos=minPos=0;for(n=0;n<10;n+)if(an>max)max=an;maxPos=n;else if(an<min)min=an;minPos=n;printf("max=%d,pos=%dn",max,maxPos);printf("min=%d,pos=%dn",min,minPos);return 0;8.3 void DivArray(int *pArray,int n)int i;for(i=0;i<n;i+)pArrayi/=pAttay0;8.4 #include<stdio.h>#define N 40int FailNum(int score,int n);void ReadScore(int score,int n);int main()int scoreN,n;printf("Input n:");scanf("%d",&n);ReadScore(score,n);FailNum(score,n);printf("FailNum students are %dn",FailNum(score,n);return 0;int FailNum(int score,int n)int i,count=0;for(i=0;i<n;i+)if(scorei<60)count+;return count;void ReadScore(int score,int n)int i;printf("Input score:");for(i=0;i<n;i+)scanf("%d",&scorei);8.5 #include<stdio.h>#define N 40int HighAver(int score,int n);int ReadScore(int score);int main()int scoreN,n;n=ReadScore(score);printf("HighAver students are %dn",HighAver(score,n);return 0;int HighAver(int score,int n)int i,count=0,sum=0,aver;for(i=0;i<n;i+)sum=sum+scorei;aver=sum/n;for(i=0;i<n;i+)if(scorei>aver)count+;return count;int ReadScore(int score)int i=-1;doi+;printf("Input score:");scanf("%d",&scorei);while(scorei>=0);return i;8.6 #include<stdio.h>#define N 40int ReadScore(int score,long num);int FindMax(int score,long num,int n);int main()int scoreN,n,max,num,t;long numN;t=FindMax(score,n);max=scoret;num=numt;printf("max=%d,num=%dn",max,num);return 0;int ReadScore(int score,long num)int i=-1;doi+;printf("Input students ID and score:");scanf("%ld%d",&numi,&scorei);while(numi>0&&scorei>=0);return i;int FindMax(int score,long num,int n)int max,i;max=score0;for(i=1;i<n;i+)if(scorei>max)max=scorei;return i;8.7 #include<stdio.h>#define N 40int Read(int a);int ChangeArry(int a,int n);int main()int aN,n;printf("%dn",ChangeArry(a,n);return 0;int Read(int a)int i;for(i=0;i<9;i+)printf("Input a:");scanf("%d",&ai);return i;int ChangeArry(int a,int n)int max,min,i,maxpos,minpos,term;max=min=score0;for(i=1;i<n;i+)if(ai>max)max=scorei;maxpos=n;else(ai<min)min=ai;minpos=n;temp=maxpos;maxpos=minpos;minpos=temp;return ai;8.10 #include<stdio.h>#define N 5void main()int aNN;int sum = 0;int i, j;printf("请输入一个%d*%d 的矩阵n",N,N);for(i = 0; i < N; i+)for(j = 0; j < N; j+)scanf("%d",&aij);for(i = 0; i < N; i+)for(j = 0; j < N; j+)if(i = j | i + j = N - 1)sum=sum+aij;printf("对角线元素之和为:%dn",sum);8.11 #include<stdio.h>#define N 2#define M 3void main()int aNM,bNM;int i,j,sum1=0,su