第一篇:《C語言程序設計教程》課后題答案
《C語言程序設計教程》課后題答案
第一章
一選擇題
1.A 2.B 3.C 4.D 5.B 6.C 二.填空題 1.程序 2.算法
3.main或主 4.編譯 5.編譯 6..obj 7.庫函數
8.文本或ASCII碼
三、編程題
1.參考代碼如下: #include
printf(“金n木n水n火n土n”);} 2.參考代碼如下: #include
scanf(“%d%d”,&a,&b);
printf(“%d+%d=%dn”,a,b,a+b);
printf(“%d-%d=%dn”,a,b,a-b);
printf(“%d*%d=%dn”,a,b,a*b);
printf(“%d/%d=%dn”,a,b,a/b);} 3.參考代碼如下: #include
float a,b,h,s;
scanf(“%f%f%f”,&a,&b,&h);
s=(a+b)*h/2;
printf(“s=%fn”,s);}
第二章
一選擇題 答案及分析: 1.B,略
2.A,-8在內存中是以補碼(設兩個字節)形式存儲的 3.A,C語言有32個關鍵字(參見課本第18頁),且C語言標識符是區分大小寫字母的 4.A,略
5.D,八進制數據中不能出現數碼8 6.B,字符常量應該用單引號括起來,答案D超出了ASCII取值范圍(ASCII的取值范圍為[0,255])
7.C,該字符串中轉義字符有三個:、22和 n,普通字符有三個:a、,和0,所以字符串長度為6 8.C,略
9.D,C語言沒有read函數和%D格式符號,且scanf函數第二個形參為地址列表
10.B,根據題意,scanf函數輸入數據時分隔符號不應該是逗號,應該是空格或回車符,且輸入數據時分一行或幾行均可
11.A,scanf函數中不允許出現%8.4,%6.2和%8這樣的格式符號
12.C,既要保證5位小數位,還得保證整數位不變,這樣數據12345.67800用10列不能完全顯示出來,按C語言規定,12345.67800原樣輸出
13.B,printf函數中格式符號%d,%o,%x表示對應的整型數據分別按十進制,八進制和十六進制輸出
14.C,按C語言規定,scanf函數形參雙引號中,如果包含非格式符號,在輸入數據時要求原樣輸入 二.填空題 答案及分析:
1.int
float
double(略)
2.65,89,printf函數中如果格式符號是%d,則輸出相應字符的ASCII十進制數值
3.a=98,b=765.000000,c=4321.000000,scanf函數中的格式符號%2d%3f%4f,表示將鍵盤輸入的數據9876543210按2,3,4位分割,然后再分別賦給變量a,b,c 4.scanf(“%lf%lf%lf”,&a,&b,&c);double類型的變量對應的格式符號是%lf
三、編程題
1.參考代碼如下: #include
int a=97;
printf(“%cn”,a);
printf(“%dn”,a);
printf(“%on”,a);
printf(“%xn”,a);} 程序分析:通過printf函數中不同的格式符號,即%c(字符),%d(十進制),%o(八進制),%x(十六進制)輸出相應的值。2.參考代碼如下: #include
int h,m,minute;
scanf(“%d:%d”,&h,&m);
minute=h*60+m;
printf(“minute=%dn”,minute);} 程序分析:輸入形式為10:27,故scanf函數雙引號中兩個格式符號%d之間必須加入“:”。3.參考代碼如下: #include
float r=6371000,s,v;
s=4*3.1415926*r*r;
v=3.1415926*4/3*r*r*r;
printf(“s=%fnv=%f”,s,v);} 程序分析:C語言中的π不代表3.1415926,可以用各種常量的形式體現出來。4.參考代碼如下: #include
int m100,m50,m20,m10,m5,m1,m;
scanf(“%d”,&m);
m100=m/100;
m50=(m-m100*100)/50;
m20=(m-m100*100-m50*50)/20;
m10=(m-m100*100-m50*50-m20*20)/10;
m5=(m-m100*100-m50*50-m20*20-m10*10)/5;
m1=m-m100*100-m50*50-m20*20-m10*10-m5*5;
printf(“%d元發工資,人名幣各票面的張數為:n”,m);
printf(“100元的張數:%dn”,m100);
printf(“50元的張數:%dn”,m50);
printf(“20元的張數:%dn”,m20);
printf(“10元的張數:%dn”,m10);
printf(“5元的張數:%dn”,m5);
printf(“1元的張數:%dn”,m1);} 程序分析:人民幣的面值分別為100元,50元,20元,10元,5元和1元,工資4367元除以100后得到的商就為100元張數,余數再除以50,得到的商為50元的張數,余數再除20,??,以此類推就會得出人民幣各面值相應的張數。5.參考代碼如下: #include
float r1,r2,r3,r;
scanf(“%f%f%f”,&r1,&r2,&r3);
r=r1*r2*r3/(r1*r2+r2*r3+r1*r3);
printf(“三個電阻并聯后的總電阻為%fn”,r);} 程序分析:首先將計算并聯電阻值的公式變換一下;再就是考慮要保留小數位,故變量類型設置為實型,注意格式符號為%f。6.參考代碼如下: #include
int x,a,b,c,d,y;
scanf(“%d”,&x);
a=x%10;
b=x/10%10;
c=x/100%10;
d=x/1000;
y=a*1000+b*100+c*10+d;
printf(“%d逆置各位數后的值為%dn”,x,y);} 程序分析:1234除以10的余數就是4,商再除以10的余數就是3,1234除以100再除以10取余就是2,1234除以1000就是1。也可以用其他的表達式求出各位數值,例如輸入數據1234中的4,可以用公式a=x-d*1000-c*100-b*10來計算。7.參考代碼如下: #include
float F,C;
printf(“請輸入華氏溫度:”);
scanf(“%f”,&F);
C=5.0/9*(F-32);
printf(“華氏溫度%f對應的攝氏溫度為%fn”,F,C);} 程序分析:5/9的值為0,所以要寫成5.0/9,5/9.0或5.0/9.0,還要注意變量類型為實型,且對應的格式符號為%f。8.參考代碼如下: #include
char ch1,ch2,ch3;
printf(“請輸入三個數字字符:”);
scanf(“%c%c%c”,&ch1,&ch2,&ch3);
printf(“將數字字符轉換為數字%d,%d,%dn”,ch1-'0',ch2-48,ch3-'0');} 程序分析:通過鍵盤輸入三個數字字符時要連續輸入,不要加任何分隔符號,例如121等,另外,數字字符輸出時遇到格式符號%d將輸出相應數字字符的ASCII值,但任何一個數字字符的ASCII值減去字符0的ASCII值,再對應%d格式符號輸出時,就是數字字符對應的數字,例如'2'-'0'=2。
9.不能得到指定的輸出結果,參考代碼如下: void main(){
int a, b, c,x, y;
scanf(“%d%d%d”,&a,&b,&c);
x=a*b;
y=x*c;
printf(“a=%d,b=%d,c=%dn”,a,b,c);
printf(“x=%d,y=%dn”,x,y);}
程序分析:scanf(“%d,%d,%d”,a,b,c);scanf函數第二類形參是地址列表,所以語句改為scanf(“%d,%d,%d”,&a,&b,&c);而這個語句對應的鍵盤輸入形式為2,3,4。為了滿足題目要求,scanf語句改為scanf(“%d%d%d”,&a,&b,&c)。另外,printf函數雙引號只能出現一對,且雙引號中需要在相應的位置上添加a=等這樣的字符串才能原樣輸出;還有整型變量對應格式符號是%d等。
第三章
一選擇題
1.A 2.C 3.C 4.D 5.C 6.B 7.C 8.B 9.A 10.A 11.A 12.B 13.D 14.A 15.B 16.C 17.C 18.C 19.C 20.C 21.C 22.B 23.C 24.C 25.A 26.B 27.A 28.A 29.C 30.A 31.C 32.C 二.填空題 1.非零
零 2.passwarm 3.525252 4.fabs(x)>5 5.x%y==0 6.if((1<=x&&x<=10||200<=x&&x<=210)&&x%2==1)printf(“%d”,x);7.k=1 8.Right!1
Right!1 9.$$$ a=0 10.a=2,b=1 11.0 “%f%f” a=b;13.“%c”,&ch 'A'<=ch&&ch<='Z' ch 14.死循環 15.345 16.7 3-1 17.x>=0 x j%3!=0 24.b=i+1 25.8 5 2 26.d=1.0 k++ k<=n 三、編程題 1.參考代碼如下: #include y=x;else if(x==0) y=x-1;else if(x>0&&x<10) y=x+1;printf(“y=%f”,y);} 2.參考代碼如下: #include float a,b,c; printf(“請輸入三角形三邊的長度:n”); scanf(“%f%f%f”,&a,&b,&c); if(a+b>c&&b+c>a&&a+c>b) if(a==b&&a==c) printf(“該三角形是等邊三角形n”); else if(a==b&&a!=c) printf(“該三角形是等腰三角形n”); else printf(“該三角形是一般三角形n”); else printf(“不能構成三角形n”);} 3.參考代碼如下: #include float M,N,menoy; printf(“請輸入購買金額:”); scanf(“%f”,&M); if(M<100) N=0; else if(M>=100&&M<200) N=1.5; else if(M>=200&&M<300) N=2.5; else if(M>=300&&M<400) N=3.5; else if(M>=400&&M<500) N=4.5; else if(M>=500&&M<600) N=5.5; else N=6; menoy=M*(1-N/100); printf(“實際支付金額:%f,返還的金額:%fn”,menoy,M-menoy);} 4.參考代碼如下: #include float M,N,menoy; int in; printf(“請輸入購買金額:”); scanf(“%f”,&M); in=M/100; switch(in) { case 0:N=0;break; case 1:N=1.5;break; case 2:N=2.5;break; case 3:N=3.5;break; case 4:N=4.5;break; case 5:N=5.5;break; default :N=6;break; } menoy=M*(1-N/100); printf(“實際支付金額:%f,返還的金額:%fn”,menoy,M-menoy);} 5.參考代碼如下: #include float x,max; printf(“Enter a number:”); scanf(“%f”,&x); max=x; while(x>0) { printf(“Enter a number:”); scanf(“%f”,&x); if(x>max) max=x; } if(max>0) printf(“The largest number entered was %fn”,max);} 6.參考代碼如下: #include float M,N,menoy; printf(“請輸入購買金額:”); scanf(“%f”,&M); while(M>0) { if(M<100) N=0; else if(M>=100&&M<200) N=1.5; else if(M>=200&&M<300) N=2.5; else if(M>=300&&M<400) N=3.5; else if(M>=400&&M<500) N=4.5; else if(M>=500&&M<600) N=5.5; else N=6; menoy=M*(1-N/100); printf(“實際支付金額:%f,返還的金額:%fn”,menoy,M-menoy); printf(“請輸入購買金額:”); scanf(“%f”,&M); } } 7.參考代碼如下: #include float number,positivesum=0,negativesum=0,total=0; int i; for(i=1;i<=10;i++) { scanf(“%f”,&number); if(number>=0)positivesum+=number; else negativesum+=number; total+=number; } printf(“positive sum %f,negative sum %f,total %fn”,positivesum,negativesum,total);} 8.參考代碼如下: #include int i,sum=0,k=1; for(i=1;i<=101;i+=2) { sum=sum+k*i; k=-k; } printf(“1-3+5-7+...-99+101=%dn”,sum);} 9.參考代碼如下: #include float i,sum=0,k=1; for(i=1;k>=1e-4;i++) { sum=sum+k; k=k/i; } printf(“e=%fn”,sum);} 10.參考代碼如下: #include float i,sum=0,n=2,d=1,temp; for(i=1;i<=20;i++) { sum=sum+n/d; temp=n; n=n+d; d=temp; } printf(“sum=%fn”,sum);} 11.參考代碼如下: #include float apple,watermelon,pear; for(apple=1;apple<100;apple++) for(watermelon=1;watermelon<10;watermelon++) { pear=100-apple-watermelon; if(fabs(apple*0.4+watermelon*4+pear*0.2-40.0)<1e-6) printf(“apple:%.0f,watermelon:%.0f,pear:%.0fn”,apple,watermelon,pear); } } 12.參考代碼如下: #include int i,j,k; for(i=1;i<10;i++) for(j=0;j<10;j++) for(k=0;k<10;k++) if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf(“%dn”,i*100+j*10+k);} 或: #include int a,b,c,i; for(i=100;i<1000;i++) { a=i/100; b=i/10%10; c=i%10; if(i==(a*a*a+b*b*b+c*c*c)) printf(“%dn”,i); } } 13.參考代碼如下: #include int a,b,c,d; for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) for(d=0;d<10;d++) if(a*1000+b*100+c*10+d==(a*10+b+c*10+d)*(a*10+b+c*10+d)) printf(“%dn”,a*1000+b*100+c*10+d);} 或: #include int a,b,c,d,i; for(i=1000;i<10000;i++) { a=i/1000; b=i/100%10; c=i/10%10; d=i%10; if(i==(a*10+b+c*10+d)*(a*10+b+c*10+d)) printf(“%dn”,i); } } 14.參考代碼如下: #include int i,j; for(i=1;i<=4;i++)//先控制打印前4行 { for(j=1;j<=4-i;j++) printf(“ ”); for(j=1;j<=2*i-1;j++) printf(“*”); printf(“n”); } for(i=1;i<=3;i++)//再控制打印后3行 { for(j=1;j<=i;j++) printf(“ ”); for(j=1;j<=2*(4-i)-1;j++) printf(“*”); printf(“n”); } } 第四章 一選擇題 1.A,如果沒有給s[1]賦值,按C語言規定,s[1]下標變量中的數據是一個隨機數 2.C,“China”字符串末尾還有一個
主站蜘蛛池模板:
国产成熟人妻换╳╳╳╳|
久久人人爽人人爽人人片av超碰|
野花社区视频www官网|
无码国产精成人午夜视频一区二区|
国产欧美一区二区三区免费视频|
日韩av片无码一区二区不卡电影|
久久久精品妇女99|
久久久国产乱子伦精品|
亚洲五月综合缴情在线|
亚洲αv久久久噜噜噜噜噜|
69精品人人人人|
亚洲va中文字幕无码一二三区|
亚洲在线观看|
亚洲精品av无码喷奶水网站|
老子午夜精品888无码不卡|
国内揄拍国内精品少妇国语|
久久精品亚洲国产av老鸭网|
中文字幕乱码一区二区三区免费|
曰韩无码av片免费播放不卡|
久久伊人少妇熟女大香线蕉|
亚洲熟妇丰满xxxxx国语|
久久精品人人做人人爽电影蜜月|
狼人大香伊蕉在人线国产|
波多野结衣乳巨码无在线|
在教室伦流澡到高潮hgl视频|
国产成人无码免费视频97|
中文字幕丝袜精品久久|
综合色就爱涩涩涩综合婷婷|
免费?男同???深夜夜行网站|
欧美男生射精高潮视频网站|
麻豆成人av不卡一二三区|
白又丰满大屁股bbbbb|
久久国产精品波多野结衣av|
国产精品露脸视频观看|
国产男女猛烈无遮挡免费网站|
国产免费午夜a无码v视频|
国产乱子伦视频一区二区三区|
av无码人妻一区二区三区牛牛|
精品国产一区二区三区四区|
欧洲精品免费一区二区三区|
熟女女同亚洲女同|