C程序設(shè)計教程與實(shí)驗(yàn)課后習(xí)題答案-給呆呆.docx_第1頁
C程序設(shè)計教程與實(shí)驗(yàn)課后習(xí)題答案-給呆呆.docx_第2頁
C程序設(shè)計教程與實(shí)驗(yàn)課后習(xí)題答案-給呆呆.docx_第3頁
C程序設(shè)計教程與實(shí)驗(yàn)課后習(xí)題答案-給呆呆.docx_第4頁
C程序設(shè)計教程與實(shí)驗(yàn)課后習(xí)題答案-給呆呆.docx_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章習(xí)題一、選擇題1、A2、D3、C4、D5、B6、C7、C8、B9、B10、A二、填空題1、一,函數(shù)體2、main(主),main(主)3、編譯,目標(biāo)4、.c,.obj,.exe5、縮進(jìn),無影響,/*/三、程序分析題1、*Verygood!*2、a=12,b=5a=17,b=223、r=5.50,s=95.033098四、編程題1用printf()函數(shù)在屏幕上輸出自己的班級、學(xué)號、姓名。#includestdio.hvoidmain()printf(班級:BX1109n);printf(學(xué)號:111003530901n);printf(姓名:王孟榮n);2從鍵盤輸入兩個整數(shù),計算它們的和、差、積、商,并在屏幕上輸出結(jié)果。#includevoidmain()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章習(xí)題一、選擇題15BCDCD610DBBCA二、填空題1單精度浮點(diǎn)型、雙精度浮點(diǎn)型、字符型203x%10*10+x/1045.555.7206sin(sqrt(x*x)/(a*b)7,811110111737B933103三、程序分析題17,8,1021,33.5F4(int)i=12,12.505461579112四、編程題1編寫程序,求表達(dá)式c=21%9-(float)a+4/b*b的值,假設(shè)表達(dá)式中a和b的值分別由鍵盤輸入。#includevoidmain()inta,b;floatc;printf(Pleaseinputdataa,b:);scanf(%d%d,&a,&b);c=21%9-(float)a+4/b*b;printf(c=%5.2fn,c);2.編寫程序,從鍵盤輸入兩個整數(shù)存入變量a和b中,求a2-b2的值并輸出。#includevoidmain()inta,b,c;printf(Pleaseinputdataa,b:);scanf(%d%d,&a,&b);c=a*a-b*b;printf(c=%dn,c);第3章習(xí)題一、選擇題12345678910DCA、B ABBB、C BDD二、填空題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.chch三、程序分析題1.c=112.a=123f=4573.x=345y=3.4600004.a=1,b=3a=3,b=15.(題目需修改為:從鍵盤輸入一個除a和z以外的小寫字母)程序的功能:從鍵盤輸入一個除a和z以外的小寫字母,求出該字母對應(yīng)的大寫字母的前趨和后繼字母,然后順序輸出此三個大寫字母,每個字母所占列寬為3。運(yùn)行結(jié)果:假如輸入:f輸出:EFG四、編程題1編寫程序,計算的值并輸出(保留3位小數(shù)),其中a、b的值由鍵盤輸入。#include#includevoidmain()floata,b,x;scanf(%f%f,&a,&b);x=(a*a+b*b)/sqrt(3*(a+b);printf(x=%.3fn,x);2編寫程序,從鍵盤輸入一個梯形的上底a、下底b和高h(yuǎn),輸出梯形的面積s。#include#includevoidmain()floata,b,h,s;scanf(%f,%f,%f,&a,&b,&h);s=(a+b)*h/2;printf(梯形面積s=%.2fn,s);3編寫程序,在屏幕上輸入你姓名的第一個字母,顯示出該字母以及下面的信息:Hello!Thisisacprogram.Mynameis第一個字母#includevoidmain()charname;name=getchar();putchar(name);printf(nHello!n);printf(Thisisacprogram.n);printf(Mynameis%cn,name);第4章習(xí)題一、選擇題12345678910BBCBCACBACC二、填空題1.!&|2.13.ab4.15.06.x%4=0&x%100!=07.568.A9.x10&x5010.-1三、程序分析題1No2-23.5324#&5(1)2(2)3CCa=2,b=2,c=4四、編程題1.有一個函數(shù)如下:x2-2(x5)y=3x+5(5x50)x-(x50)編寫程序,輸入x的值,計算相應(yīng)的y值輸出(保留3位小數(shù))。#include#includevoidmain()floatx,y;scanf(%f,&x);if(x5)y=x*x-2;elseif(x50)y=3*x+5;elsey=x-sqrt(4*x-1);printf(x=%f,y=%.3fn,x,y);2編寫一個程序,根據(jù)輸入的三角形的三條邊判斷是否能組成三角形,如果可以則輸出它的面積和三角形類型(等邊、等腰、直角、一般三角形)。#include#includevoidmain()floata,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);if(a+bc&b+ca&a+cb)s=(a+b+c)/2;area=sqrt(s*(s*(s-a)*(s-b)*(s-c);printf(area=%fn,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設(shè)獎金稅率r有如下的要求(n代表獎金):0n10005%1000n2000r=8%2000n300010%3000n600015%6000n用switch多分支選擇語句編寫程序,輸入獎金值,計算并輸出相應(yīng)的稅率和實(shí)際應(yīng)得獎金值。#includevoidmain()floatn,r,s;intm;printf(請輸入獎金值:);scanf(%f,&n);if(n=6000)m=6;elsem=n/1000;switch(m)case0:r=0;break;case1:r=0.05;break;case2:r=0.08;break;case3:case4:case5:r=0.1;break;case6:r=0.15;break;s=n-r*n;printf(稅率r=%.0f%,獎金值n=%.2f,實(shí)際應(yīng)得獎金值s=%.2fn,r*100,n,s);4.從鍵盤輸入任意4個數(shù)a、b、c、d,按照從大到小的順序排列后重新輸出。#includevoidmain()inta,b,c,d,t;scanf(%d,%d,%d,%d,&a,&b,&c,&d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;printf(%d%d%d%dn,a,b,c,d);5.給出一個不超過4位數(shù)的正整數(shù),判斷它是幾位數(shù),并按逆向輸出各位數(shù)字。例1234,輸出為4321。#includevoidmain()intnum,i,j,k,m;printf(輸入一個少于4位的正整數(shù):);scanf(%d,&num);if(num=0&num1000&num=100)printf(是一個3位數(shù)n);m=num%10;/*求個位上的數(shù)字*/k=num/10%10;/*求十位上的數(shù)字*/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章習(xí)題一、選擇題12345678910BCBCABDBAB二填空題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ù)。#includestdio.hmain()charch;intk=0;while(ch=getchar()!=n)if(ch=A|ch=a)k=k+1;printf(%dn,k);2.利用=的前100項(xiàng)之積計算p的值。#includemain()doubleterm,result=1; /*累乘項(xiàng)初值應(yīng)為1*/intn;for(n=2;n=100;n=n+2)term=(double)(n*n)/(n-1)*(n+1); /*計算累乘項(xiàng)*/result=result*term;printf(result=%fn,2*result);3.用1元5角錢人民幣兌換5分、2分和1分的硬幣(每一種都要有)共100枚,問共有幾種兌換方案?每種方案各換多少枚?#includemain()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只腳,編程求雞、兔各多少只。#includemain() 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。#includemain()intn,i;printf(npleaseinputanumber:n);scanf(%d,&n);printf(%d=,n);for(i=2;i=n;i+)while(n!=i)if(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#includemain()inti1,i2,i3,i4,k,n;printf(Inputdatais:);scanf(%d,&n);k=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ù),因?yàn)?53=13+53+33。#includevoidmain()inti,j,k,n;printf(parcissusnumbersare:n);for(n=100;n1000;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)的值。要求最后一項(xiàng)的絕對值小于10-5,并統(tǒng)計出此時累加了多少項(xiàng)(x由鍵盤輸入)。#include#includemain()intn=1,count=1;floatx;doublesum,term;/*因?yàn)槲粩?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ù),請用戶從鍵盤上輸入數(shù)據(jù)猜想設(shè)置的數(shù)是什么,告訴用戶是猜大了還是小了。10次以內(nèi)猜對,用戶獲勝;否則,告訴用戶設(shè)置的數(shù)據(jù)是什么。#includevoidmain()intnum=123,x,n;printf(hint:0number1000n);/*給出數(shù)據(jù)范圍的提示信息*/for(n=1;nnum)printf(bigger!n);if(xnum)printf(smaller!n);if(n=11)printf(Lost!thenumberis%dn,x);10.編程輸出以下圖案。*#includemain()inti,j;for(i=1;i=1;j-)printf(%c,);for(j=0;j=1;i-)for(j=20-i;j=1;j-)printf(%c,);for(j=0;j2*i-1;j+)printf(*);printf(n);第6章習(xí)題一、選擇題12345678910DADBDCBDBD二填空題1.02.14m31074.數(shù)據(jù)類型5.strcpy(S2,S1)#include6.037.7,68.sum=0i=jaij9.410.Tony三程序分析題1.max=85min=5sum=180aver=30.002.a=2b=2c=2d=2e=1f=2g=23.j=454.Ti_saCPormTss_Pgm5.1115四、編程題1從鍵盤輸入15個整數(shù),存放在數(shù)組中,找出其中最小數(shù)并指出其所在的位置。#include#defineN15main()intmin,i,j,aN;printf(EnterNintegers:n);for(i=0;iN;i+)scanf(%d,&ai);min=a0;for(i=1;iai)min=ai;j=i;printf(%d,%d,min,j);2將輸入的十進(jìn)制正整數(shù)化為十六進(jìn)制數(shù)。#includemain()inti,x,j,a20;printf(請輸入一個正整數(shù):);while(1)scanf(%d,&x);if(x=0;j-)if(aj=9)printf(%d,aj);elseif(aj=15)printf(%c,aj+A-10);printf(n);3從鍵盤輸入一行字符,統(tǒng)計其中有多少單詞,假設(shè)單詞之間以逗號分隔。#includevoidmain()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,num);4從鍵盤輸入一字符串,放在字符數(shù)組a中,將字符數(shù)組a中下標(biāo)值為偶數(shù)的元素按從小到大排序。#include#includevoidmain()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;jaj)m=j;if(m!=i)t=ai;ai=am;am=t;puts(a);printf(n);5編寫程序輸出以下楊輝三角形(要求輸出10行)。11112113311464115101051#include#includevoidmain()inti,j,a1010;for(i=0;i10;i+)ai0=aii=1;for(j=1;ji;j+)aij=ai-1j-1+ai-1j;for(i=0;i10;i+)for(j=0;j=i;j+)printf(%6d,aij);printf(n);6編程將s數(shù)組中的字符串的正序和反序進(jìn)行連接,形成一個新串放在t數(shù)組中。例如,當(dāng)s數(shù)組中字符串為ABCD時,則t數(shù)組中的內(nèi)容應(yīng)為:ABCDDCBA。#include#includemain()chars100,t100;inti,d;printf(PleaseenterstringS:);scanf(%s,s);d=strlen(s);for(i=0;id;i+)ti=si;for(i=0;id;i+)td+i=sd-1-i;t2*d=0;printf(Theresultis:%sn,t);7某公司在傳輸數(shù)據(jù)過程中為了安全要對數(shù)據(jù)進(jìn)行加密,若傳遞的是四位的整數(shù),對其進(jìn)行加密的規(guī)則為:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。如:輸入數(shù)字7659,則加密后的數(shù)字為4012#includemain()inta,i,aa4,t;printf(輸入一個需加密的四位數(shù)整數(shù):);scanf(%d,&a);aa0=a%10;aa1=a%100/10;aa2=a%1000/100;aa3=a/1000;for(i=0;i=3;i+)aai+=5;aai%=10;for(i=0;i=0;i-)printf(%d,aai);printf(n);8編寫程序查找數(shù)值18在以下二維數(shù)組中第一次出現(xiàn)的位置。3451881216544334187#includemain()inti,j,a34=3,4,5,18,8,12,16,54,43,34,18,7;for(i=0;i3;i+)for(j=0;j4;j+)if(aij=18)break;if(j4)break;printf(數(shù)值18第一次出現(xiàn)的位置在%d行,第%d列n,i+1,j+1);9設(shè)有4行4列的數(shù)組a,其元素aij=3*i+2*j-6。編寫程序,實(shí)現(xiàn)如下功能:(1)求第二行4元素的累加和;(2)求第四列4元素的平均值;(3)求主對角線4元素中負(fù)數(shù)的個數(shù)。#includevoidmain()inta44,i,j,s=0,m=0;floatn=0;for(i=0;i4;i+)for(j=0;j4;j+)aij=3*i+2*j-6;printf(原始數(shù)組為:n);for(i=0;i4;i+)for(j=0;j4;j+)printf(%3d,aij);printf(n);for(j=0;j4;j+)s+=a1j;printf(第二行4元素累加和為:%dn,s);for(j=0;j4;j+)n+=aj3;printf(第四列4元素平均值為:%.2fn,n/4.0);for(i=0;i4;i+)if(aii0)m+;printf(主對角線4元素中負(fù)數(shù)的個數(shù)為:%dn,m);10約瑟夫環(huán)問題:編號為1,2,3,.,n的n個人按順時針方向圍坐一圈,每人持有一個正整數(shù)密碼。一開始任選一個正整數(shù)m作為報數(shù)上限值,從第一個人開始按順時針報數(shù),報到m時停止,報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數(shù),如此下去,直到所有人全部出列為止。設(shè)計程序求出出列順序。分析:設(shè)整型數(shù)組a中保存n個人的密碼,對應(yīng)的人出列后,數(shù)組元素置0作為標(biāo)志。順時針確定下一個人的方法,可將下標(biāo)加1,再對n求余。#include#defineN100main()inta100;inti,j,m,n,k=0;printf(輸入人數(shù)n和任選的一個正整數(shù)m:);scanf(%d%d,&n,&m);printf(輸入n個人的密碼:);for(i=0;in;i+)scanf(%d,&ai);printf(n出列順序?yàn)?);for(i=0;in;i+)j=1;while(jm)while(ak=0)/*跳過已出列的人*/k=(k+1)%n;j+;k=(k+1)%n;while(ak=0)/*跳過已出列的人*/k=(k+1)%n;printf(%d,k+1);m=ak;ak=0;第7章習(xí)題一、選擇題12345678910ADDBADCDBA二填空題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.6123654四、編程題1寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否素數(shù)的信息。#include#includevoidmain()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(i=2;isqrt(n)&flag=1;i+)if(n%i=0)flag=0;return(flag);2寫一個函數(shù),用于實(shí)現(xiàn)函數(shù)strcmp()的功能,能將兩個字符串進(jìn)行比較,將兩個字符串中第一個不相同字符的ASCII碼值之差作為函數(shù)的返回值。#includeintMyStrcmp(chars,chart);main()charstr120,str220;printf(Inputstring:);gets(str1);printf(Inputanotherstring:);gets(str2);if(MyStrcmp(str1,str2)0)printf(str1str2n);elseif(MyStrcmp(str1,str2)0)printf(str1str2n);elseprintf(str1=str2n);intMyStrcmp(chars,chart)inti;for(i=0;si=ti;i+)if(si=0)return0;return(si-ti);3.寫一個函數(shù),用于實(shí)現(xiàn)函數(shù)strcat()的功能,能將兩個字符串連接。#includevoidmain()voidconcatenate(charstring1,charstring2,charstring);chars1100,s2100,s100;printf(inputstring1:);scanf(%s,s1);printf(inputstring2:);scanf(%s,s2);concatenate(s1,s2,s);printf(nThenewstringis%sn,s);voidconcatenate(charstring1,charstring2,charstring)inti,j;for(i=0;string1i!=0;i+)stringi=string1i;for(j=0;string2j!=0;j+)stringi+j=string2j;stringi+j=0;4.從鍵盤任意輸入10個整數(shù),用函數(shù)編程實(shí)現(xiàn)將其中最大數(shù)與最小數(shù)的位置對換后,再輸出調(diào)整后的數(shù)組。#include#defineARRSIZE10voidMaxMinExchang(inta,intn)intmaxValue=a0,minValue=a0,maxPos=0,minPos=0;inti,temp;for(i=1;imaxValue)maxValue=ai;maxPos=i;elseif(aiminValue)minValue=ai;minPos=i;temp=amaxPos;amaxPos=aminPos;aminPos=temp;main()intaARRSIZE,i;printf(Input%dNumbers:n,ARRSIZE);for(i=0;iARRSIZE;i+)scanf(%d,&ai);MaxMinExchang(a,ARRSIZE);printf(AfterMaxMinExchange:n);for(i=0;iARRSIZE;i+)printf(%4d,ai);printf(n);5.寫一函數(shù),能對給定的一個二維數(shù)組(33)進(jìn)行轉(zhuǎn)置(即行列互換)。#include#defineN3intarrayNN;voidmain()voidconvert(intarray3);inti,j;printf(inputarray:n);for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&arrayij);printf(noriginalarray:n);for(i=0;iN;i+)for(j=0;jN;j+)printf(%5d,arrayij);printf(n);convert(array);printf(convertarray:n);for(i=0;iN;i+)for(j=0;jN;j+)printf(%5d,arrayij);printf(n);voidconvert(intarray3)inti,j,t;for(i=0;iN;i+)for(j=i+1;jN;j+)t=arrayij;arrayij=arrayji;arrayji=t;6.寫一函數(shù),能用“起泡法”對輸入的10個字符按由小到大順序排序。#include#include#defineN10charstrN;voidmain()voidsort(charstr);inti,flag;for(flag=1;flag=1;)printf(inputstring:n);scanf(%s,str);if(strlen(str)N)printf(stringtoolong,inputagain!);elseflag=0;

溫馨提示

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

評論

0/150

提交評論