C程序設計教程課后習題答案_第1頁
C程序設計教程課后習題答案_第2頁
C程序設計教程課后習題答案_第3頁
C程序設計教程課后習題答案_第4頁
C程序設計教程課后習題答案_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、精品第1章習題一、選擇題1 、A2、D3、C4、D5、B6、C7、C8、B9、B10、A二、填空題1、一,函數(shù)體2 、main(主),main(主)3 、編譯,目標4 、.c,.obj,.exe5 、縮進,無影響,/*/三、程序分析題1、*Verygood!*2、a=12,b=5a=17,b=223、r=5.50,s=95.033098四、編程題1 用printf()函數(shù)在屏幕上輸出自己的班級、學號、姓名。#include"stdio.h"voidmain()printf("班級:BX1109n");printf("學號:11100353090

2、1n");printf("姓名:王孟榮n");2 從鍵盤輸入兩個整數(shù),計算它們的和、差、積、商,并在屏幕上輸出結(jié)果。#include<stdio.h>voidmain()intx,y,a,b,c;floatd;printf("PleaseInputTwoIntegers:n");scanf("%d%d",&x,&y);a=x+y;b=x-y;c=x*y;d=1.0*x/y;printf("a=%dnb=%dnc=%dnd=%fn",a,b,c,d);感謝下載載第2章習題一、選擇

3、題15BCDCD610DBBCA二、填空題1 單精度浮點型、雙精度浮點型、字符型2 03 x%10*10+x/104 5.55 5.7206 sin(sqrt(x*x)/(a*b)7 ,8 11110111737B9 3310 3三、程序分析題17,8,102 1,33 5F4 (int)i=12,12.505 461579112四、編程題1 編寫程序,求表達式c=21%9-(float)a+4/b*b的值,假設表達式中a和b的值分別由鍵盤輸入。#include<stdio.h>voidmain()inta,b;floatc;printf("Pleaseinputdata

4、a,b:");scanf("%d%d",&a,&b);c=21%9-(float)a+4/b*b;printf("c=%5.2fn",c);的值并輸出O2 .編寫程序,從鍵盤輸入兩個整數(shù)存入變量a和b中,求a2-b2#include<stdio.h>voidmain()inta,b,c;printf("Pleaseinputdataa,b:");scanf("%d%d",&a,&b);c=a*a-b*b;printf("c=%dn",c);第

5、3章習題一、選擇題123456789DCA、BABBB、CBD10D二、填空題1.有窮性確定性可行性2. #3. 從終端(鍵盤)輸入一個字符4. md5. 97,g6. 123.456000,123.46,1237. 格式控制符不正確(輸入數(shù)據(jù)時不能控制列寬和小數(shù)位數(shù))8. 63,63,77,3f9. %f%f&x,&y10. <stdio.h>chch三、程序分析題1. c=112. a=123f=4573. x=345y=3.4600004. a=1,b=3a=3,b=15. (題目需修改為:從鍵盤輸入一個除a和z以外的小寫字母)程序的功能:從鍵盤輸入一個除a和

6、z以外的小寫字母,求出該字母對應的大寫字母的前趨和后繼字母,然后順序輸出此三個大寫字母,每個字母所占列寬為3。運行結(jié)果:假如輸入:f'輸出:EFG四、編程題1 編寫程序,計算的值并輸出(保留3位小數(shù)),其中a、b的值由鍵盤輸入。#include<stdio.h>#include<math.h>voidmain()floata,b,x;scanf("%f%f",&a,&b);x=(a*a+b*b)/sqrt(3*(a+b);printf("x=%.3fn",x);2 編寫程序,從鍵盤輸入一個梯形的上底a、下底

7、b和高h,輸出梯形的面積s。#include<stdio.h>#include<math.h>voidmain()floata,b,h,s;scanf("%f,%f,%f",&a,&b,&h);s=(a+b)*h/2;printf("梯形面積s=%.2fn",s);3 編寫程序,在屏幕上輸入你姓名的第一個字母,顯示出該字母以及下面的信息:Hello!Thisisacprogram.Mynameis第一個字母#include<stdio.h>voidmain()charname;name=getc

8、har();putchar(name);printf("nHello!n");printf("Thisisacprogram.n");printf("Mynameis%cn",name);第4章習題一、選擇題12345678910BBCBCACBACC二、填空題1. !&&|2. 13. ab4. 15. 06. x%4=0&&x%100!=07. 568. A9. x<0|x>10&&x<5010. -1三、程序分析題1 No2 -23 .5324 #&5 (

9、1)2(2)3CCa=2,b=2,c=4四、編程題1 .有一個函數(shù)如下:x2-2(x<5)y=3x+5(5今<50)x-(x書0)編寫程序,輸入x的值,計算相應的y值輸出(保留3位小數(shù))。#include<stdio.h>#include<math.h>voidmain()floatx,y;scanf("%f",&x);if(x<5)y=x*x-2;elseif(x<50)y=3*x+5;elsey=x-sqrt(4*x-1);printf("x=%f,y=%.3fn",x,y);2 編寫一個程序,

10、根據(jù)輸入的三角形的三條邊判斷是否能組成三角形,如果可以則輸出它的面積和三角形類型(等邊、等腰、直角、一般三角形)。#include<stdio.h>#include<math.h>voidmain()floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b)s=(a+b+c)/2;area=sqrt(s*(s*(s-a)*(s-b)*(s-c);printf("area=%fn",

11、area);if(a=b&&b=c)printf("等邊三角形n");elseif(a=b|a=c|b=c)printf("等腰三角形n");elseif(a*a+b*b=c*c)|(a*a+c*c=b*b)|(b*b+c*c=a*a)printf("直角三角形n");elseprintf("一般三角形n");elseprintf("不能組成三角形n");3 設獎金稅率r有如下的要求(n代表獎金):0n<10005%1000訴<2000r=8%2000訴<300

12、010%3000許<600015%6000許用switch多分支選擇語句編寫程序,輸入獎金值,計算并輸出相應的稅率和實際應得獎金值。#include<stdio.h>voidmain()floatn,r,s;intm;printf("請輸入獎金值:");scanf("%f",&n);if(n>=6000)m=6;elsem=n/1000;switch(m)case0:r=0;break;case 1: r=0.05;break;case 2: r=0.08;break;case 3:case 4:case 5: r=0.1

13、;break;case 6: r=0.15;break;s=n-r*n;printf("稅率r=%.0f%,獎金值n=%.2f,實際應得獎金值s=%.2fn",r*100,n,s);4. 從鍵盤輸入任意4個數(shù)a、b、c、d,按照從大到小的順序排列后重新輸出。#include<stdio.h>voidmain()inta,b,c,d,t;scanf("%d,%d,%d,%d",&a,&b,&c,&d);if(a<b)t=a;a=b;b=t;if(a<c)t=a;a=c;c=t;if(a<d)t=

14、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%dn",a,b,c,d);1234 ,5. 給出一個不超過4位數(shù)的正整數(shù),判斷它是幾位數(shù),并按逆向輸出各位數(shù)字。例輸出為4321。#include<stdio.h>voidmain()intnum,i,j,k,m;printf("輸入一個少于4位的正整數(shù):");scanf("%d",&num);if(num>=0&&

15、;num<=9999)if(num>1000&&num<=9999)printf("是一個4位數(shù)n");m=num%10;/*求個位上的數(shù)字*/k=num/10%10;/*求十位上的數(shù)字*/j=num/100%10;/*求百位上的數(shù)字*/i=num/1000;/*求千位上的數(shù)字*/printf("逆序數(shù)為:%d%d%d%dn",m,k,j,i);elseif(num>=100)printf("是一個3位數(shù)n");m=num%10;/*求個位上的數(shù)字*/k=num/10%10;/*求十位上的數(shù)字*

16、/j=num/100;/*求百位上的數(shù)字*/printf("逆序數(shù)為:%d%d%dn",m,k,j);elseif(num>=10)printf("是一個2位數(shù)n");m=num%10;/*求個位上的數(shù)字*/k=num/10;/*求十位上的數(shù)字*/printf("逆序數(shù)為:%d%dn",m,k);elseprintf("是一個1位數(shù)n");printf("逆序數(shù)為:%dn",num);elseprintf("是一個無效的數(shù)n");第5章習題一、選擇題1234567891

17、0BCBCABDBAB二填空題1. 循環(huán)switch2. 4,73. 64. #5. 026. 187. 18. sum=809. c=getchar()n:m10. i%13=0break三程序分析題1. output1:216output2:56output3:5772. n=73. Max=18Min=34. 1*1=12*1=22*2=43*1=33*2=63*3=95. 0123123023013012四、編程題1.從鍵盤上輸入若干字符,以按Enter鍵結(jié)束,統(tǒng)計其中字符A或a的個數(shù)。#include"stdio.h"main()charch;intk=0;whi

18、le(ch=getchar()!='n')if(ch='A'|ch='a')k=k+1;printf("%dn",k);2. 利用二X的前100項之積計算p的值。#include<stdio.h>main()doubleterm,result=1;/*累乘項初值應為1*/intn;for(n=2;n<=100;n=n+2)term=(double)(n*n)/(n-1)*(n+1);/*計算累乘項*/result=result*term;printf("result=%fn",2*resu

19、lt);3. 用1元5角錢人民幣兌換5分、2分和1分的硬幣(每一種都要有)共100枚,問共有幾種兌換方案?每種方案各換多少枚?#include<stdio.h>main()intx,y,z,count=0;for(x=1;x<=28;x+)for(y=1;y<=73;y+)z=100-x-y;if(5*x+2*y+z=150)count+;printf("%d,%d,%dn",x,y,z);printf("count=%dn",count);4. 雞兔同籠,共有98個頭,386只腳,編程求雞、兔各多少只。#include<s

20、tdio.h>main()intx,y;for(x=1;x<=97;x+)y=98-x;if(2*x+4*y=386)printf("雞=%d,兔=%d",x,y);5. 將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。#include<stdio.h>main()intn,i;printf("npleaseinputanumber:n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i+)while(n!=i)i

21、f(n%i=0)printf("%d*",i);n=n/i;elsebreak;printf("%d",n);6. 從鍵盤任意輸入一個4位數(shù)x,編程計算x的每一位數(shù)字相加之和。例如,輸入x為1234,則由1234分離出其千位1、百位2、十位3、個位4,然后計算1+2+3+4=10,并輸出10。#include<stdio.h>#include<math.h>main()inti1,i2,i3,i4,k,n;printf("Inputdatais:");scanf("%d",&n);k

22、=fabs(n);/*取絕對值*/i1=k/1000;/*分離出千位*/i2=(k-i1*1000)/100;/*分離出百位*/i3=(k-i1*1000-i2*100)/10;/*分離出十位*/i4=k%10;/*分離出個位*/printf("Thesumofthetotalbitis%dn",i1+i2+i3+i4);7 .打印出所有"水仙花數(shù)",所謂"水仙花數(shù)"是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個水仙花數(shù),因為153=13+53+33。#include<stdio.h>voidmain()

23、inti,j,k,n;printf("parcissusnumbersare:n");for(n=100;n<1000;n+)i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf("%dn",n);8 .利用泰勒級數(shù)sin(x)與十算sin(x)的值。要求最后一項的絕對值小于10-5,并統(tǒng)計出此時累加了多少項(x由鍵盤輸入)。#include<math.h>#include<stdio.h>main()intn=1,count=1;floatx;doublesum,

24、term;/*因為位數(shù)多,所以定義為雙精度*/printf("Inputx:");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)=%.1f,count=%dn",sum,count);9 編寫一個猜數(shù)游戲:任意設置一個整數(shù),請用戶從鍵盤上輸入數(shù)據(jù)猜想設置的數(shù)是什么,告訴用戶是猜大了還是小了。10次以內(nèi)猜

25、對,用戶獲勝;否則,告訴用戶設置的數(shù)據(jù)是什么。#include<stdio.h>voidmain()intnum=123,x,n;printf("hint:0<number<1000n");/*給出數(shù)據(jù)范圍的提示信息*/for(n=1;n<=10;n+)printf("guess:");scanf("%d",&x);if(x=num)printf("Win!n");break;if(x>num)printf("bigger!n");if(x<nu

26、m)printf("smaller!n");if(n=11)printf("Lost!thenumberis%dn",x);10 .編程輸出以下圖案。*#include<stdio.h>main()inti,j;for(i=1;i<=4;i+)for(j=20-i;j>=1;j-)printf("%c",'');for(j=0;j<2*i-1;j+)printf("*");printf("n");for(i=3;i>=1;i-)for(j=20

27、-i;j>=1;j-)printf("%c",'');for(j=0;j<2*i-1;j+)printf("*");printf("n");精品第6章習題、選擇題10D二填空題1. 02. 14m3. 1074. 數(shù)據(jù)類型5. strcpy(S2,S1)#include<string.h>6. 037. 7,68. sum=0i=jaij9. 410. Tony三程序分析題1. max=85min=5sum=180aver=30.002. a=2b=2c=2d=2e=1f=2g=23. j=45

28、4. Ti_saCPormTss_Pgm5. 1115四、編程題1從鍵盤輸入15個整數(shù),存放在數(shù)組中,找出其中最小數(shù)并指出其所在的位置。#include<stdio.h>#defineN15main()intmin,i,j,aN;printf("EnterNintegers:n");scanf("%d",&ai);min=a0;for(i=1;i<N;i+)if(min>ai)min=ai;j=i;printf("%d,%d",min,j);2 將輸入的十進制正整數(shù)化為十六進制數(shù)。#include<

29、;stdio.h>main()inti,x,j,a20;printf("請輸入一個正整數(shù):");while(1)scanf("%d",&x);if(x<0)printf("數(shù)據(jù)輸入錯誤,請重新輸入一個正整數(shù):");elsebreak;for(i=0;i<N;i+)感謝下載載精品i=0;while(x)ai=x%16;x=x/16;i+;for(j=i-1;j>=0;j-)if(aj<=9)printf("%d",aj);elseif(aj<=15)printf("

30、;%c",aj+'A'-10);printf("n");3 從鍵盤輸入一行字符,統(tǒng)計其中有多少單詞,假設單詞之間以逗號分隔。#include<stdio.h>voidmain()charstring81;inti,num=0,word=0;charc;gets(string);for(i=0;(c=stringi)!='0'i+)if(c=',')word=0;elseif(word=0)word=1;num+;printf("Thereare%dwordsintheline.n",n

31、um);4 從鍵盤輸入一字符串,放在字符數(shù)組a中,將字符數(shù)組a中下標值為偶數(shù)的元素按從小到大排序。#include<stdio.h>#include<string.h>voidmain()chara80,t,m;inti,j,k;printf("請輸入一字符串:");gets(a);k=strlen(a);for(i=0;i<=k-2;i+=2)m=i;for(j=i+2;j<=k;j+=2 )感謝下載載精品if(am>aj)m=j;if(m!=i)t=ai;ai=am;am=t;puts(a);printf("n&quo

32、t;);10 行) 。5 編寫程序輸出以下楊輝三角形(要求輸出11112113311464115101051#include<stdio.h>#include<string.h>voidmain()inti,j,a1010;for(i=0;i<10;i+)ai0=aii=1;for(j=1;j<i;j+)aij=ai-1j-1+ai-1j;for(i=0;i<10;i+)for(j=0;j<=i;j+)printf("%6d",aij);printf("n");6 編程將s數(shù)組中的字符串的正序和反序進行連接

33、,形成一個新串放在t數(shù)組中。例如,當s數(shù)組中字符串為"ABCD"時,則t數(shù)組中的內(nèi)容應為:"ABCDDCBA"。#include<stdio.h>#include<string.h>main()chars100,t100;inti,d;printf("PleaseenterstringS:");scanf("%s",s);d=strlen(s);for(i=0;i<d;i+)ti=si;for(i=0;i<d;i+)td+i=sd-1-i;t2*d='0'prin

34、tf("Theresultis:%sn",t);7 某公司在傳輸數(shù)據(jù)過程中為了安全要對數(shù)據(jù)進行加密,若傳遞的是四位的整數(shù),對其進行加密的規(guī)則為:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。如:輸入數(shù)字7659,則加密后的數(shù)字為4012#include<stdio.h>main()inta,i,aa4,t;printf("輸入一個需加密的四位數(shù)整數(shù):");scanf("%d",&a);aa0=a%10;aa1=a%100/10;aa2=a%1000/100;aa3=

35、a/1000;for(i=0;i<=3;i+)aai+=5;aai%=10;for(i=0;i<=3/2;i+)t=aai;aai=aa3-i;aa3-i=t;printf("加密后的數(shù)字為:");for(i=3;i>=0;i-)printf("%d",aai);printf("n");8 編寫程序查找數(shù)值18在以下二維數(shù)組中第一次出現(xiàn)的位置。3451881216544334187#include<stdio.h>main()inti,j,a34=3,4,5,18,8,12,16,54,43,34,18,

36、7;for(i=0;i<3;i+)for(j=0;j<4;j+)if(aij=18)break;if(j<4)break;printf("數(shù)彳t18第一次出現(xiàn)的位置在%d行,第列n",i+1,j+1);感謝下載載精品9設有4行4列的數(shù)組a,其元素aij=3*i+2*j-6。編寫程序,實現(xiàn)如下功能:(1)求第二行4元素的累加和;(2)求第四列4元素的平均值;(3)求主對角線4元素中負數(shù)的個數(shù)。#include<stdio.h>voidmain()inta44,i,j,s=0,m=0;floatn=0;for(i=0;i<4;i+)for(j

37、=0;j<4;j+)aij=3*i+2*j-6;printf("原始數(shù)組為:n");for(i=0;i<4;i+)for(j=0;j<4;j+)printf("%3d",aij);printf("n");for(j=0;j<4;j+)s+=a1j;printf("第二行4元素累加和為:%dn",s);n+=aj3;printf("第四列4元素平均值為:%.2fn",n/4.0);for(i=0;i<4;i+)if(aii<0)m+;printf("主

38、對角線4元素中負數(shù)的個數(shù)為:%dn",m);10約瑟夫環(huán)問題:編號為1,2,3,.,n的n個人按順時針方向圍坐一圈,每人持有一個正整數(shù)密碼。一開始任選一個正整數(shù)m作為報數(shù)上限值,從第一個人開始按順時針報數(shù),報到m時停止,報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數(shù),如此下去,直到所有人全部出列為止。設計程序求出出列順序。分析:設整型數(shù)組a中保存n個人的密碼,對應的人出列后,數(shù)組元素置0作為標志。順時針確定下一個人的方法,可將下標加1,再對n求余。#include<stdio.h>#defineN100main()inta100;inti

39、,j,m,n,k=0;printf("輸入人數(shù)n和任選的一個正整數(shù)m:");scanf("%d%d",&n,&m);printf("輸入n個人的密碼:");for (i=0;i<n;i+)感謝下載載精品scanf("%d",&ai);printf("n出列順序為:");for(i=0;i<n;i+)j=1;while(j<m)while(ak=0)/*跳過已出列的人*/k=(k+1)%n;j+;k=(k+1)%n;while(ak=0)/*跳過已出列的人

40、*/k=(k+1)%n;printf("%d",k+1);m=ak;ak=0;感謝下載載第7章習題一、選擇題123456789ADDBADCDB10A二填空題1. main()2. main()3. 函數(shù)首部4. 解決函數(shù)必須“定義在前,使用在后”的原則問題5. int6. 定義調(diào)用7. 地址傳遞值傳遞8. returnvoid9. voidf(floata,floatb)floatf(floata,floatb)10. static三程序分析題1. a=482. 8,173. 27214. BASICCCOBOLFORTRANPASCALSmalltalk5. 61236

41、54四、編程題1 寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否素數(shù)的信息。#include<stdio.h>#include<math.h>voidmain()intprime(int);intn;printf("Inputaninteger:");scanf("%d",&n);if(prime(n)printf("n%disaprime.n",n);elseprintf("n%disnotaprime.n",n);intprime(intn)intflag=1,i;for(

42、i=2;i<sqrt(n)&&flag=1;i+)if(n%i=0)flag=0;return(flag);2 寫一個函數(shù),用于實現(xiàn)函數(shù)strcmp()的功能,能將兩個字符串進行比較,將兩個字符串中第一個不相同字符的ASCII碼值之差作為函數(shù)的返回值。#include<stdio.h>intMyStrcmp(chars,chart);main()charstr120,str220;printf("Inputstring:");gets(str1);printf("Inputanotherstring:");gets(st

43、r2);if(MyStrcmp(str1,str2)>0)printf("str1>str2n");elseif(MyStrcmp(str1,str2)<0)printf("str1<str2n");elseprintf("str1=str2n");intMyStrcmp(chars,chart)inti;for(i=0;si=ti;i+)if(si='0')return0;return(si-ti);3 .寫一個函數(shù),用于實現(xiàn)函數(shù)strcat()的功能,能將兩個字符串連接。#include<stdio.h>voidmain()voidconcatenate(charstring1,charstring2,charstring);chars1100,s2100,s100;printf("inputstri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論