(3)a==1.5 && b==1.5 && c==1.5
4.c=1 5.?4 6.1 7.5, 0, 3 8.5 9.123 10.(cvb= ='y'||cvb= ='Y')&&(work>=3||college=='y'|| college=='Y')&&age<=35 3.(1)0
(2)1
(3)1
(4)0
(5)1 4.3 改錯題(略)4.4 編程題
1.答
#include “stdio.h” #include “math.h” main(){ double a,b,c,p,area;scanf(“%lf%lf%lf”,&a,&b,&c);printf(“三角形的三邊為:%.llf,%.1lf,%.1lfn”,a,b,c);if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2;附錄F 課后題參考答案
area=sqrt(p*(p-a)*(p-b)*(p-c));printf(“三角形的面積為%.2lfn”,area);} else printf(“不能構成三角形n”);}
273 2.答:
#include “stdio.h” main(){ int x,y;scanf(“%d,%d”,&x,&y);if(x*x+y*y>1000)
printf(“%dn”,(x*x+y*y)/100);else printf(“%dn”,x+y);} 3.答:
#include “stdio.h” #include “math.h” main(){ double x,y;scanf(“%lf”,&x);if(x<-2)
y=x*x-sin(x);else if(x<=2)
y=pow(2,x)+x;else
y=sqrt(x*x+x+1);printf(“x=%.2lf y=%.2lfn”,x,y);} 4.答:
#include “stdio.h” main(){ long ge,shi,qian,wan,x;
scanf(“%ld”,&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if(ge==wan&&shi==qian)/*個位等于萬位并且十位等于千位*/
printf(“this number is a huiwenn”);
else
} printf(“this number is not a huiwenn”);5.答:
#include “stdio.h” main(){ float p,w,s,d,f;
274 C語言程序設計教程(第3版)
scanf(“%f,%,%f”,p,s,w);if(s>3000)d=0.15 else if(s>=2000)d=0.1;else if(s>=1000)d=0.08;else if(s>=500)d=0.05;else if(s>=250)d=0.02;else d=0 f=p*w*s*(1-d);printf(“%f”,f);} 6.答:
#include “stdio.h” main(){ int year,money;char x;printf(“是否是本公司產品(y/n):”);scanf(“%c”,&x);if(x=='y'||x=='Y')
{printf(“產品使用的年限:”);
scanf(“%d”,&year);if(year<=1)money=0;else if(year<8)money=50;else money=100;printf(“產品保修額是:%dn”,money);} else
{ money=200;
printf(“不是本公司產品,產品保修額是:%dn”,money);} } 7.答:
#include “stdio.h” main(){ int money,num1,num2;printf(“請輸入取款額(≤2000):”);scanf(“%d”,&money);if(money>2000)printf(“請輸入取款額數(shù)≤2000!n”);else
if(money%50==0)
{ num1=money/100;
num2=(money-num1*100)/50;
printf(“需支付100元:%d張n”,num1);
printf(“需支付50元:%d張n”,num2);
} else
printf(“輸入錢數(shù)必須是50的倍數(shù)!n”);} 附錄F 課后題參考答案
275習
題5.1 單選題
CDABA ABDDB DBCB 5.2 填空題
1.2 0 2.333
3.(1)i<10 或 i<=9
(2)j%3!=0 4.(1)flag*(float)k/(k+1)或1.0*flag*k/(k+1)5.(1)max=x(2)x!=?1
6.(1)x<=9或x<10
(2)y=9?x 5.3 改錯題(略)5.4 編程題
1.答:
1)for循環(huán),其他略
#include “stdio.h” main(){ int i,s=0;for(i=1;i<=100;i++)s+=i*i;printf(“%dn”,s);} 2)for循環(huán),其他略
#include “stdio.h” main(){ int i=1,p=1;double s=1;do { s+=1.0/p;p*=++i;}while(1.0/p>1e-6);printf(“%lf”,s);} 2.答:
#include “stdio.h” main(){ int m,n,t,a,b;scanf(“%d,%d” ,&m,&n);if(m(2)flag=-flag(3)scanf(“%d”, &x)
((276 C語言程序設計教程(第3版)
{ t=m;m=n;n=t;} a=m;b=n;t=m%n;while(t){ m=n;n=t;t=m%n;} printf(“%d”,n);} 3.答:
#include “stdio.h” main(){ int x,y,s=1;scanf(“%d,%d”,&x,&y);for(;y>0;y--)s*=x;printf(“%d,%d,%dn ”,s%10,s/10%10,s/100%10);} 4.答:
#include “stdio.h” main(){ int x,y,z;for(x=1;x<20;x++)for(y=1;y<33;y++){ z=100-x-y;
if((z%3)==0 &&(5*x+3*y+z/3)==100)
printf(“x=%d,y=%d,z=%dn”,x,y,z);} } 5.答:(a)
#include “stdio.h” main(){ int j,k;
for(j=1;j<=4;j++){ for(k=1;k<=4-j;k++)printf(“ ”);
printf(“****”);printf(“n”);} }(b)
#include “stdio.h” main(){ int j,k;for(j=1;j<=4;j++){for(k=1;k<=4-j;k++)printf(“ ”);for(k=1;k<=2*j-1;k++)
printf(“*”);printf(“n”);} } 附錄F 課后題參考答案
6.答:
程序分析:利用for循環(huán)控制在100~999之間,對每個數(shù)分解出個位、十位、百位。
#include main(){
int i,j,k,n;
printf(“water flower'number is:”);
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出個位*/
if(n==i*i*i+j*j*j+k*k*k)
{
printf(“%-5d”,n);
}
}
printf(“n”);}
277 7.答:
#include main(){
int x;
for(x=1000;x>=3;x--)
if(x%3==1&&x%5==2&&x%7==3){ printf(“該校的學生人數(shù)是:%d人n”,x);break;} } 8.答:
#include main(){ int x=12,i=1;while(1)
{ if((x+20+i)==2*(x+i))break;
i++;} printf(“小明母親在%d年后比小明的年齡大一倍n”,i);printf(“那時小明年齡是:%d歲,小明母親年齡是:%d歲n”,x+i,x+20+i);}習
題6.1 單選題
DBCCB
BDC
278 C語言程序設計教程(第3版)
6.2 填空題
1.c 2.60 3.1000 10 4.16
6.3 編程題
1.答:
#include “stdio.h” #include “math.h” #define F(a)a*a+ sqrt(3*a*a+2*a+1)main(){ float x, f;scanf(“%f”, &x);f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x);printf(“%fn”, f);}習
題7.1 單選題
BCADA CCCDA BCBDB 7.2 填空題
1.(1)2 3 4 5
(4)10000
01000
00100
00010
00001
(5)Language(6)Language Programming(2)10010
(3)QuickC
2.(1)j+=2
(2)a[i]>a[j] 3.(1)i=1
(2)x[i?1] 7.3 改錯題(略)7.4 編程題
1.答:
#define N 10
#include “stdio.h” main()
{ int a[N]={1,2,3,4,5,6,7,8,9,10,osum=0, qsum=0,j;for(j=0;j<10;j++)if(j%2)qsum+=a[j];附錄F 課后題參考答案
else osum+=a[j];printf(“osum=%d,qsum=%dn”, osum,qsum);}
279 2.答:
#define N 10 #include “stdio.h” main(){ int a[N]={10,20,30,40,50,60,70,80,90}, j, k, x;scanf(“%d”,&x);for(j=0;jj;k--)a[k]=a[k-1];a[j]=x;} for(j=0;jprintf(“%d ”,a[j]);} 3.答:
#define M 3 #include “stdio.h” main(){ int a[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;;for(j=0;jif(a[j][k]!=a[k][j]){ flag=0;break;} if(flag)printf(“ok”);else printf(“NO”);} 4.答:
#include “stdio.h” #include “string.h” main(){ char c1[10],c2[10],j;gets(c1);gets(c2);for(j=0;(c1[j]==c2[j])&& c1[j] && c2[j];j++);if(c1[j]>c2[j])printf(“%dn”,1);if(c1[j]#include “stdio.h” #include “string.h” #define M 3 #define N 80 main(){ char a[M][N],j,k,n[5]={0};for(j=0;jgets(a[j]);
280 C語言程序設計教程(第3版)
for(j=0;jif(a[j][k]>='A' && a[j][k]<='Z')n[0]++;
else if(a[j][k]>='a' && a[j][k]<='z')n[1]++;
else if(a[j][k]>='0' && a[j][k]<='9')n[2]++;
else if(a[j][k]==' ')n[3]++;
else
n[4]++;
for(j=0;j<5;j++)
printf(“%4d”, n[j]);}習
題8.1 單選題
DBDAC BACCC 8.2 填空題
1.(1)2, 1
(2)10#30#
2.(1)49
(2)2
(4)1, 1, 1, 1, 1
3, 3, 3, 3, 3
(3)FOUR, P(3)2
(4)60(5)1
0
0
0
0
0
0 0
0
0
0 0
0
0
0
0
0
8.3 改錯題(略)8.4 編程題
1.答:
#include “stdio.h” main(){ int n1,n2,n3,t;int *p1,*p2,*p3;printf(“please input 3 number:n1,n2,n3:”);scanf(“%d,%d,%d”,&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(*p1>* p2){ t=*p1;*p1=*p2;*p2=t;} if(*p1>*p3){ t=*p1;*p1=*p3;*p3=t;} if(*p2>*p3){ t=*p2;*p2=*p3;*p3=t;} printf(“the sorted numbers are:%d,%d,%dn”,n1,n2,n3);} 附錄F 課后題參考答案
2.答:
#include “stdio.h” #define N 3 main(){ int a[N],*p=a;for(;p-a=0;p--)
printf(“%d ”,*p);}
281 3.答:
#include “stdio.h” main(){ int a[10];int j,minl=0,maxl=0;for(j=0;j<10;j++)
scanf(“%d”, a+j);for(j=0;j<10;j++)
{ if(a[maxl]<*(a+j))maxl=j;if(a[minl]>*(a+j))minl=j;} j=a[0];a[0]=a[minl];a[minl]=j;j=a[9];a[9]=a[maxl];a[maxl]=j;for(j=0;j<10;j++)
printf(“%d ”, *(a+j));} 4.答:
輸入陣列如下: 11 12
輸出陣列如下:
11 10 9 #define M 3 #define N 4 #include “stdio.h” main(){ int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=&a[0][0],t;for(k=0,j=M*N-1;kprintf(“n”);
282 } } C語言程序設計教程(第3版)
5.答:
#include “stdio.h” main(){ int len;char str[20],*p=str;printf(“please input a string:n”);scanf(“%s”,str);len=0;while(*p!='