程序設(shè)計基礎(chǔ)(C語言)第3版習題及答案_第1頁
程序設(shè)計基礎(chǔ)(C語言)第3版習題及答案_第2頁
程序設(shè)計基礎(chǔ)(C語言)第3版習題及答案_第3頁
程序設(shè)計基礎(chǔ)(C語言)第3版習題及答案_第4頁
程序設(shè)計基礎(chǔ)(C語言)第3版習題及答案_第5頁
已閱讀5頁,還剩99頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章C語言概述【習題1-1]簡述C語言的特點。答:C語言的特點:C語言簡潔、緊湊、使用靈活、方便;運算符豐富;數(shù)據(jù)結(jié)構(gòu)豐富;C是結(jié)構(gòu)式語言;C語法限制不太嚴格,程序設(shè)計自由度大;C語言允許直接訪問物理地址;c語言程序生成代碼質(zhì)量高;C語言適用范圍大,可移植性好?!玖曨}『2】簡述上機調(diào)試運行C程序的操作步驟。答:上機運行C語言程序的操作步驟為:啟動VisualC++6.Of建立工程f創(chuàng)建源程序文件f輸入(編輯)源程序內(nèi)容一保存源程序文件一編譯源程序文件一連接目標程序一執(zhí)行程序一開始另一個程序?!玖曨}1-3]上機運行本章的3個例題。答:略?!玖曨}『4】請從以下的4個選項中選擇一個正確答案。(1)A(2)A(3)C(4)B【習題1-5】參照本章例題,編寫一個C語言程序,輸出以下信息:Nicetomeetyou!編寫程序如下:#include<stdio.h>voidmain()(printf(''**************\n");printf(*Nicetomeetyou!\nz,);printf("**************\ri");}第2章基本數(shù)據(jù)類型和運算符【習題2T】上機編輯并調(diào)試本章所有例題。答:略。【習題2-2】下面哪些是合法的常量?⑴200.501213e5.1E-58e45.0x6a⑵‘mn'"OK""a"''012' "a/b"'\\'答:⑴合法的常量有:200.5012 8e45.0x6a⑵合法的常量有:"OK""a"''012'"a/b"'\\'【習題2-3】下面的變量名中哪些是合法的?A&babcl23abc%AbCa_b_cint_abc123abca\b?cabea*bc'abe答:合法的變量名有:abc123AbCa_b_c_abc

【習題2-4】指出下面的變量定義哪些是正確的,哪些是不正確的,為什么?(Dinti,j;(2)floata,b;(3)inta,b;floata,b;(4)floata,intb;(5)char'a";答:⑴錯誤,因為關(guān)鍵字Int應(yīng)該全為小寫字母⑵正確⑶錯,因為同一變量在程序的同一處不應(yīng)該聲明為不同的數(shù)據(jù)類型⑷錯,因為不同類型的變量要分別聲明,其間應(yīng)使用分號,而不是逗號⑸錯,’a'表示字符常量,不能用作變量名【習題2-5】把下列數(shù)學式子寫成C語言表達式。(1)(2)3.26ex+l(a+b)43(1)(2)2五十士里3sin(x)m}m2―(4)27rr+nr2+cos(450(4)27rr+nr2+cos(450)(5)loan(l+ra/e)"w,rt-l對應(yīng)的C語言表達式分別為:3.26*exp(x)+l.0/3*pow(a+b,4)2*sqrt(x)+(a+b)/(3*sin(x))g*ml*m2/(r*r)2*3.14*r+3.14*r*r+cos(3.14/180*45)1oan*rate*pow(1+rate,month)/(pow(1+rate,month)-1)【習題2-6】C語言中為什么要引入轉(zhuǎn)義字符?答:在字符集中,有一類字符具有這樣的特性:當從鍵盤上輸入這個字符時,顯示器上就可以顯示這個字符,即輸入什么就顯示什么。這類字符稱為可顯示字符,如a、b、$等。但另一類字符卻沒有這種特性。它們或者在鍵盤上找不到對應(yīng)的一個鍵,或者當按鍵以后不能顯示鍵面上的字符,為了解決這一問題,在C語言中引入了轉(zhuǎn)義字符?!玖曨}2-7】邏輯表達式的值是什么?只能用1和。才能表示真值和假值嗎?答:邏輯表達式的值是一個邏輯量“真”或者“假”,不是只有用1表示真值,用0表示假值,在判斷一個量為真假時,常以。表示假,以非。表示真?!玖曨}2-8]對于表達式(l+2)*(y=3),可以肯定(1+2)先計算,而(y=3)后計算嗎?答:不能?!玖曨}2-9]"&&”和“II”嚴格地執(zhí)行運算符優(yōu)先級的規(guī)則嗎?它的規(guī)則是什么?答:邏輯運算符不按照規(guī)定的優(yōu)先級計算。在邏輯表達式的求值過程中,如果從“&&”或“II”左邊的運算對象部分已經(jīng)能夠確定整個邏輯發(fā)達式的值,則不再求右邊運算對象的值,這樣做提高了運算速度。具體地說:若“&&”的左運算對象值為0,則不再對右運算對象求值,因整個式子的結(jié)果必定為0?若“II”的左運算對象值為非0,則不再對右運算對象求值,因整個式子的結(jié)果必定為1。以上所說的這種運算的規(guī)則是C對邏輯運算的特殊處理規(guī)則。它嚴格地執(zhí)行從左到右運算的規(guī)則,不受運算符優(yōu)先級所影響。【習題2-10】字符常量和字符串常量有什么區(qū)別?答:字符常量和字符串常量的區(qū)別:①從形式上看,字符常量使用單引號,而字符串常量使用雙引號。②從內(nèi)部存儲來看,編譯程序在每個字符串的尾部自動加上了一個空字符NULL(即''0')作為字符串的結(jié)束標志,而字符常量則不存在這種情況?!玖曨}2-11]將下面語句組進行簡寫。(Dinti;intj;⑵x=0;y=0;(3)x=x+y;(4)intx,y;x=y-(y/10)*10;(5)intx;x=x+l;(6)y=x;-x;對應(yīng)的簡寫語句分別為:inta,b;x=y=0;x+=y;intx,y;x=y%10;intx;x++;或x+=l;或++x;y=x-;【習題2-12]寫出下面程序運行后的結(jié)果。⑴程序運行結(jié)果:2,3⑵程序運行結(jié)果:y=5.000000⑶程序運行結(jié)果:chl=65,ch2=97B,b(4)程序運行結(jié)果:0,48⑸程序運行結(jié)果:0221(6)程序運行結(jié)果:a,A,32,32⑺程序運行結(jié)果:01,60,15,15(8)程序運行結(jié)果:2,2,11,2,10,2,2-1,2,2⑼程序運行結(jié)果:324(10)程序運行結(jié)果:323,343,4,40第3章順序和選擇結(jié)構(gòu)程序設(shè)計

【習題3-1】請從以下的4個選項中選擇1個正確答案。.結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是()oA.函數(shù)結(jié)構(gòu)、判斷結(jié)構(gòu)、選擇結(jié)構(gòu) B.平行結(jié)構(gòu)、嵌套結(jié)構(gòu)、函數(shù)結(jié)構(gòu)C.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)D.判斷結(jié)構(gòu)、嵌套結(jié)構(gòu)、循環(huán)結(jié)構(gòu)【正確答案】C.putchar()函數(shù)可以向終端輸出一個()。A.整型變量表達式值 B.實型變量值C.字符串 D.字符或字符型變量值【正確答案】D.若已定義doubley;擬從鍵盤輸入一個值賦給變量y,則正確的函數(shù)調(diào)用是()。A.scanf("%d",&y);C.scanf(“%lf”,&y);【正確答案】C4.若有以下定義:floatx;inta,A.switch(x){case1.0:printfC*\n*);case2:printf("**\n"))C.switch(a+b){case1:printf("*\n");case2:printf("**n");}B.scanf("%7.2f",&y);B.scanf("%7.2f",&y);D.scanf(“%ld”,&y):b;則正確的switch語句是()。switch(x){case1,2:printf("*\n");case3:printf("**\n");)D.switch(a~b);{case1:printf("*\n");case2:printf("**\n");})組成配對關(guān)系5.為了避免嵌套的if-else語句的二義性,C語言規(guī)定else總是與(A.縮排位置相同的if B.在其之前未配對的ifC.在其之前尚未配對的最近的ifD.同一行上的if【正確答案】B【習題3-2】if語句有那3種形式,請分別畫出每種形式的執(zhí)行流程圖?!緟⒖即鸢浮浚?)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)(當型循環(huán))循環(huán)結(jié)構(gòu)(直到型循環(huán))【習題3-3】下面哪些語句是合法的?if(a=b)printf("Hello");if(a=b){printf(*Hello*)}if(a=b)printf(*Hello*)elseprintf("Goodbye");ifa==bprintfCHello*);【正確答案】(1)合法。(2)不合法。(3)不合法。(4)不合法?!玖曨}3-4】讀程序?qū)懡Y(jié)果。(1)從鍵盤輸入58#include<stdio.h>voidmain()(inta;scanf&a);if(a>50)printf("A=%d",a);if(a>40)printf("B=%d",a);if(a>30)printf("C=%d",a);}答案:A=58B=58C=58#include<stdio.h>voidmain()(intx=10,y=20,t=0;if(x==y)t=x;x=y;y=t;printf(*%d,%d\n”,x,y);答案:20#include<stdio.h>voidmain()(intp,a=5;if(p=a!=0)printf("%d\n",p);elseprintf("%d\n”,p+2);}答案:1#include<stdio.h>voidmain()(inta=4,b~3,c=5,t~0jif(a<b) {t=a;a=b;b=t;}if(a<c) {t=a;a=c;c=t;}printf("%d%d%d\n”,a,b,c);)答案:534#include<stdio.h>voidmain()(inti,m=0,n=0,k=0;for(i=9;i<=ll;i++)switch(i/10){case0:m++;n++;break;case10:n++;break;default:k++;n++;}printf(*%d%d%d\n*,m,n,k);)答案:132#include<stdio.h>voidmain()intn=0,m=l,x=2;if(!n)x-=l;if(m)x-=2;if(x)x-=3;printf("%d\n",x);}答案:-4#include<stdio.h>voidmain()(intx=l,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("%d%d\n”,a,b);)答案:21#include<stdio.h>voidmain(){inta=3,b=4,c=5,t=99;if(b<a&&a<c){t=a;a=c;c=t;}if(a<c&&b<c){t=b;b=a;a=t;}printf(/z%d%d%d\n*,a,b,c);)答案:435#include<stdio.h>voidmain()(intn='c';switch(n++){default:printf("error");break;case'a':case'A':case'b':case'B':printf("good");break;case'c':case'C':printf("pass");

case'd':case'D':printf("warn");答案:passwarn【習題3-5]有如下if條件語句:if(a<b){if(c<d)x=l;elseif(a<c)if(b<d)x=2;elsex=3;}elseif(c<d)x=4;elsex=5;試按縮進對齊的格式將以上語句改寫為結(jié)構(gòu)更清晰的等效if語句,并在每個條件表達式之后用邏輯表達式注釋所滿足的條件?!菊_答案】case'd':case'D':printf("warn");答案:passwarn【習題3-5]有如下if條件語句:if(a<b){if(c<d)x=l;elseif(a<c)if(b<d)x=2;elsex=3;}elseif(c<d)x=4;elsex=5;試按縮進對齊的格式將以上語句改寫為結(jié)構(gòu)更清晰的等效if語句,并在每個條件表達式之后用邏輯表達式注釋所滿足的條件?!菊_答案】if(a<b)(if(c<d)x=l;elseif(a<c)if(b<d)x=2;elsex=3;)elseif(c<d)x=4;elsex=5;/*a<b*//*(a<b)&&(c<d)*//*(a<b)&&(a<c)*//*(a<b)&&(a<c)&&(b<d)*//*(a<b)&&(a<c)&&(b>=d)*//?(a>=b)&&(c<d)*//*(a>=b)&&(c>=d))*/【習題3-6】有兩個程序段:if(a<b)if(a<b)if(c=d)x=l;}elsex=2;if(c==d)x=l;elsex=2;它們所表示的邏輯關(guān)系是下列所示關(guān)系中的哪一個?①r1a<b且c=d②廠1a<b且c=d2a2b且cKdX=YJ2a<b且cKda<b且c=da2bcWd答案:(1)所表示的是3,(2)所表示的是2【習題3-7】寫一程序,從鍵盤上輸入1年份year(4位十進制數(shù)),判斷其是否閏年。閏年的條件是:能被4整除、但不能被100整除,或者能被400整除。程序如下:/*c3_7.c*/#include"stdio.h"voidmainO(intyear;scanf("%d”,feyear);if(year%400==0||(year%4==0&&year%100!=0))printf(/z%disaleapyear\n/z,year);elseprintf("%disnotaleapyear\n'z,year);)【習題3-8】設(shè)計一個程序,從鍵盤輸入3個整數(shù),按由小到大的順序輸出。程序如下:/*c3_8.c*/#include<stdio.h>voidmain()(inta,b,c;if(a>b){t=a;a=b;b=t;}if(a<c) {t=a;a=c;c=t;}printf("%d%d%d\rT,a,b,c);)【習題3-9】編程序計算下面的函數(shù):e77-! 0<x<ly=3|x|+2 3Wx<4Isin(x2) 當x取其他值時程序如下:/*c39.c*//include<stdio.h>ttinclude<math.h>voidmain()(floatx,y;printf("輸入x:");scanf&x);if(x>0&&x<l) /*若OVxVl*/y=exp(sqrt(x))T;elseif(x>=3&&x<=4) /*若3WxW4*/y=fabs(x)+2;else /*若xN10*/y=sin(x*x);printfIf,y=%.2f\n”,x,y);【習題3-10]編程序計算下面的分段函數(shù):輸入x值,求下列相應(yīng)y值。--1 (x<l)y=y2x+l(IWxWlO)I3x+2(x^10)分析:對于分段函數(shù),往往采用多路分支選擇語句實現(xiàn)。程序如下:/?c3_10.c*/#include<stdio.h>voidmain()(intx,y;printf("輸入x:");scanf&x);if(x<l) /*若x<l*/(y=x;printf(*x=%3d,y=x=%d\n”,x,y);)elseif(x<=10) /*若IWxWlO*/{y=2*x+l;printf("x或3d,y=2*x+l=%d\n”,x,y);)else /*若x210*/{y=3*x+2;printf("x或3d,y=3*x+2=%d\n”,x,y):)}【習題3-11】輸入一個整數(shù)m,判斷它能否被3、13、17整除,如果能被三個數(shù)之一整除,則輸出它能被整除的信息,否則輸出m不能被3、13、17整除的信息。試編寫該程序。程序如下:/*c3_ll.c*/#include<stdio.h>voidmain()

intm;scanf("%d",&m);if(m%3==0|ni%13==0||m%17==0)printf(wcanbedivided!w;elseprintf(acannotbedivided!M;【習題3-12]若一個學生是某校的學生,且是男生,則輸出“male”;若是女生,則輸出“female":若不是某校的學生,則輸出“No”。試編寫該程序并畫出流程圖。程序如下:/*c3_12.c*/#include<stdio.h>voidmain()(intschool,sex;scanf("%d, , &school,&sex);if(school==l)(if(sex==l)printf("male");elseprintf(afemalew);)elseprintf("No");}【習題3-13】某產(chǎn)品的國內(nèi)銷售價為80箱以下,每箱350元,超過80箱,超過部分每箱優(yōu)惠20元;國外銷售價為1000箱以下,每箱900元,超過1000箱,超過部分每箱優(yōu)惠15元。試編寫計算銷售額的程序。程序如下:/*c3_13.c*/#include<stdio.h>voidmain()(floatmoney;intnational,count;printf("Inputnationalorexternal:");scanf(^d*,fenational);printf("Inputcountofproduct:");scanf&count);if(national) /*國內(nèi)銷售*/if(count<=80)money=count*350.0;elsemoney=count*350.0-(count-80.0)*20.0;else /*國外銷售*/if(count<=1000)money=count*900.0;elsemoney=count*900.0-(count-1000.0)*15.0;printf("total=%f”,money);}【習題3-14】電文加密的算法是:將字母A變成字母G,a變成g,B變成H,b變成h,依此類推,并且U變成A,V變成B等。從鍵盤輸入一個電文字符,輸出其相應(yīng)的密碼。程序如下:/*c3_14.c*/#include<stdio.h>voidmainO(charchr;charpassword;chr=getchar();password=chr+6;if(chr<=90)(if(password>90)password=(password%91);elsepassword=password%91;)else{if(password>=123)password"(password%123)+'a';elsepassword=password%l23;)printf("Thecharacter'spasswordis%c”,password);)【習題3-15】企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5祝20萬到40萬之間時,高于20萬元的部分,可提成5%;40萬到60萬

之間時高于40萬元的部分,可提成3祝60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應(yīng)發(fā)放獎金總數(shù)?程序如下:/*c3_15.c*/ttinclude<stdio.h>main()(longinti;intbonusl,bonus2,bonus4,bonus6,bonuslO,bonus;scanfC%ld/Z,&i);bonusl=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+100000*0.5;bonus6=bonus4+100000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;金*/elseif(i<=200000)bonus=bonusl+(i-100000)*0.075;金*/elseif(i<=400000)bonus=bonus2+(1-200000)*0.05;金*/elseif(i<=600000)bonus=bonus4+(i-400000)*0.03;金*/elseif(i<=1000000)bonus=bonus6+(i-600000)*0.015;的獎金*/elsebonus=bonus10+(i-1000000)*0.01;金*/printf("bonus=%d”,bonus);/*利潤為10萬元/*利潤為10萬元時的獎金*//*利潤為20萬元時的獎金*//*利潤為40萬元時的獎金*//*利潤為60萬元時的獎金*//*利潤為100萬元時的獎金*//*利潤在10萬元以內(nèi)按0.1提成獎/*利潤在10萬至20萬元時的獎/*利潤在20萬至40萬元時的獎/*利潤在40萬至60萬元時的獎/*利潤在60萬元至100萬元時/*利潤在100萬元以上時的獎【習題4-1】分析下面程序的結(jié)果:(1)程序運行結(jié)果:k=12(2)程序運行結(jié)果:*#(3)程序運行結(jié)果:0(4)程序運行結(jié)果:k=0(5)程序運行結(jié)果:m=l【習題4-2】假設(shè)全班有30個學生,編寫一個程序,連續(xù)輸入30個學生的計算機考試成績,并計算出全班學生的計算機平均成績。程序如下:/*c4_2.c*/^include<stdio.h>voidmain(){floatsum=0.0,ave=0.0,score;inti;for(i=0;i<30;i++)(scanf(飛f\n”,&score);sum+=score;)ave=sum/i;printf(''Averageis%f\n”,sum);ave;}【習題4-3】編程求1!+3!+5!+7!+…+19!的值。程序如下:/*c4_3.c*/ttinclude<stdio.h>voidmain(){floatsum=0.0;inti,j=l;for(i=l;i<20;i++)(j*=i;if(i%2==0)continue;sum+=j;printf("sum=%e\n”,sum);【習題4-4】打印出所有的水仙花數(shù)。所謂水仙花數(shù)是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)字本身,如xyz=x'+y'+z)程序如下:/*c4_4.c*/#include<stdio.h>voidmain(){intx,y,z;printf("水仙花數(shù)有:");for(x=l;x<=9;x++)for(y=0;y<=9;y++)for(z=0;z<=9;z++)if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)printfC%-5d",x*100+y*10+z);}【習題4-5】分別用三種循環(huán)控制語句編寫程序,求下面和式的值。100s=Ln!n=l方法一:利用for循環(huán)實現(xiàn)程序如下:/*c4_5a.c*/#include<stdio.h>voidmain()(ints=0,i;for(i=l;i<=100;i++)s+=i;printf("s=%d\n”,s);)方法二:利用while循環(huán)實現(xiàn)程序如下:/*c4_5b.c*/^include<stdio.h>voidmain(){ints=0,i=l;while(i<=100)s+=i;i++;)printf("s=%d\n',s);)方法三:利用do-while循環(huán)實現(xiàn)程序如下:/*c4_5c.c*/4include<stdio.h>voidmain()(ints=0,i=l;do(s+=i;i++;}while(i<=100)printf("s二%d\n',s);}【習題4-6】將從鍵盤輸入的一對數(shù),由小到大排序輸出。當輸入一對相等數(shù)時結(jié)束循環(huán)。程序如下:/*c4_6.c*/#include<stdio.h>voidmain()(inta,b,t;scanf("%d,%d",&a,&b);while(a!=b){if(a>b)(t二a;a二b;b二t;)printf("%d,%d\n”,a,b);scanf("%d,%d",&a,&b);[習題4-7]從鍵盤輸入的一組字符中統(tǒng)計出大寫字母的個數(shù)m和小寫字母的個數(shù)n,并輸出m、n中的較大者。程序如下:/*c4_7.c*/^include<stdio.h>voidmain()intm=0,n=0;charc;while((c=getchar())!='\n')(if(c>'A'&&c<='Z')m++;if(c>=,a'&&c<='z')n++;}printf(,zm=%d,n=%d,max=%d\n,z,m,n,m<n?n:m);【習題4-8】輸入n個數(shù),求其最大數(shù)、最小數(shù)和平均值。程序如下:/*c4_8.c*/#include<stdio.h>voidmain()(intn,i,max,min,a;floats;scanf("%d,%d”,&n,&a);s=max=min=a;for(i=l;i<n;i++){scanf&a);s+=a;if(max<a)max=a;if(min>a)min=a;)printf(z,Max=%d,Min=%d,avg=%f”,max,min,s/n);)【習題4-9]輸出顯示自然數(shù)1?100之間的全部素數(shù)。程序如下:/*c4_9.c*/#include<stdio.h>#include<math.h>voidmain()(intn,i,j,1=0;for(n=2;n<=100;n++)i=sqrt(n);for(j=2;j<=i;j++)if(!(n%j))break;if(j>=i+l)if(l<5)|printf("知\t",n);1++;)else{printf(*%d\n*,n);1=0;【習題4-10】一個數(shù)如果恰好等于它的因子之和,就把它稱為“完數(shù)”。例如,28的因子為1、2、4、7、14,而28=1+2+4+7+14,因此28是“完數(shù)”。編程序找出10000以內(nèi)的所有“完數(shù)”并輸出其因子。程序如下:/*c4_10.c*/#include<stdio.h>voidmain()(intm,s,i;for(m=2;m<l0000;m++)(s=0;for(i=l;i<m;i++)if((m%i)==0)s=s+i;if(s==m)(printf("%d,itsfactorsare”,m);for(i=l;i<m;i++)if(m%i==0)printf(*%d",i);printf("\n");【習題4-11]求算式xyz+yzz=888中的x、y、z的值(其中xyz和yzz分別表示一個三位數(shù))。程序如下:/*c4_ll.c*/??include<stdio.h>voidmain()(intx,y,z,i,result=888;for(x=l;x<10;x++)for(y=l;y<10;y++)for(z=0;z<10;z++)(i=100*x+10*y+z+100*y+10*z+z;if(i==result)printf("x=%d,y=%d,z=%d\n”,x,y,z);【習題4T2】已知雞兔共有30只,腳共有90只,編程計算雞兔各有多少只。程序如下:/*c4_12.c*/ttinclude<stdio.h>voidmain()(intx,y;for(x=0;x<=30;x++){y=30-x;if((2*x+y*4)==90)printf(*%d,%d\n",x,y);【習題4-13】猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃了一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半多一個。知道第十天早上想再吃時,只剩下一個桃子了。求第一天一共摘了多少個桃子?分析:前一天桃子數(shù)是后一天桃子數(shù)的2倍加2個。程序如下:/*c4_13.c*/#include<stdio.h>voidmain()(intx,i;x=l;for(i=9;i>=l;i-)x=2*(x+1);【習題4-14]編寫程序,找出1-99之間的全部同構(gòu)數(shù)。(同構(gòu)數(shù)的定義:出現(xiàn)在平方數(shù)的右邊。例如:5是25右邊的數(shù),25是625右邊的數(shù),5和25都是同構(gòu)數(shù))程序如下:/*c4_14.c*/#include<stdio.h>voidmain()(inti;for(i=l;i<100;i++)if(i*i%10==i|i*i%100==i)printf("%3d”,i);}【習題4T5]使用嵌套循環(huán)輸出下列圖形:****程序如下:/*c4_15.c*/^include<stdio.h>voidmain(){inti,j;for(i=0;i<=3;i++)(for(j=0;j<=5;j++)if(i==0|j=01|i==31|j==5)printf(");elseprintf("");printf("\n");))【習題4-16]使用循環(huán)嵌套輸出下列圖形:程序如下:

/*c4_16.c*/#include<stdio.h>voidmain()inti,j,k;/*c4_16.c*/#include<stdio.h>voidmain()inti,j,k;for(i=0;i<=3;i++)(for(k=l;k〈=i;k++)printf(*");for(j=0;j<=4;j++)printf("*");printf("\n");/*k是內(nèi)循環(huán)變量用于控制每行的空格數(shù)*//*j是內(nèi)循環(huán)變量用于控制每行中星號的個數(shù)*/【習題4-17]編寫一程序,根據(jù)用戶輸入的不同的邊長,輸出其菱形。例如,邊長為3的菱形為:*******程序如下:/*c4_17.c*/ttinclude<stdio.h>voidmain()(inta,i,j,k;printf(,zpleaseenterthenumber");scanf&a);for(i=0;i<=a-l;i++){for(j=0;j<=a-2-i;j++)printfC");for(k=0;k<=2*i;k++)printf("*〃);printf("\n");)for(i=0;i<=a-2;i++)for(j=0;j<=i;j++)printf(*");for(k=0;k<=2*a-4-2*i;k++)printf('*");printf('\n");(習題4-18]編程實現(xiàn)從鍵盤輸入若干學號,然后輸出學號中十位數(shù)字是9的學號(輸入0時結(jié)束循環(huán))。程序如下:/*c4_18.c*/#include<stdio.h>voidmain()(longintnum;scanf&num);do(if(num/10%10==9)printfnum);scanf&num);}while(num!=0);【習題479】假設(shè)x,y是整數(shù),編程求/的最后3位數(shù),要求x、y從鍵盤輸入。程序如下:/*c4_19.c*/#include<stdio.h>voidmain()(inti,x,y;longlast=l;printf("Inputxandy:");scanf(*%d,%d",&x,&y);for(i=l;i<=y;i++)last=last*x%1000;printf(*Thelast3digits:%ld\n*,last);}【習題4-20]編程實現(xiàn)將從鍵盤輸入的偶數(shù)寫成兩個素數(shù)之和。程序如下:/*c4_20.c*/^include<stdio.h>#include<math.h>voidmainO{inta,b,c,d;scanf&a);for(b=3;b<=a/2;b+=2)for(c=2;c<=sqrt(b);c++)if(b%c==O)break;if(c>sqrt(b))d=a-b;elsecontinue;for(c=2;c<=sqrt(d);c++)if(d%c==0)break;if(c>sqrt(d))printf("%d=%d+%d\n”,a,b,d);))第5章數(shù)組[習題5-1】現(xiàn)有一實型一維數(shù)組A[12],其各元素值在內(nèi)存中排列的順序為:1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5,請按下列要求編寫程序求答案。(1)數(shù)組中元素值最小的數(shù)組元素。(2)數(shù)組中元素值最大的數(shù)組元素。(3)數(shù)組中某數(shù)組元素值等于另外兩個數(shù)組元素值之和的等式。(4)數(shù)組中某數(shù)組元素值等于另外兩個數(shù)組元素值之差的等式。程序如下:/?c5_l.c*/ttinclude<stdio.h>voidmain(){doublea[12]={l.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5};inti,j,k;doublemax,min;min=a[0];for(i=0;i<12;i++)if(min>a[i])min=a[i];printfCzmin=%lf\n*,min);max二a[0];for(i=0;i<12;i++)if(max<a[i])max=a[i];printf(zzmax=%lf\nz/,max);for(i=0;i<12;i++)for(j=0;j<12;j++)for(k=0;k<12;k++){if(i==j||j==k||k=i)continue;if(a[i]+a[j]=a[k])printf 二%a[i],a[j],a[k]);)for(i=0;i<12:i++)for(j=0;j<12;j++)for(k=0;k<12;k++)(if(i==j||j==k||k=i)continue;if(a[i]-a[j]=a[k])printf a[i],a[j],a[k]);【習題5-2】現(xiàn)有一實型二維數(shù)組A[4][3],其各元素值在內(nèi)存中排列的順序為:4.0,28.0,15.5,-9.5,-23.0,8.0,56.0,2.0,28.0,7.0,6.2,5.0請按下列要求寫出各題的答案。(1)數(shù)組中元素值最小的數(shù)組元素。(2)數(shù)組中元素值最大的數(shù)組元素。(3)數(shù)組中某數(shù)組元素值等于另外兩個數(shù)組元素值之積的等式。(4)數(shù)組中某數(shù)組元素值等于另外兩個數(shù)組元素值之商的等式。答案:-23.056.0(3)(略)(4)(略)【習題5-3】完成下列各數(shù)組的數(shù)組說明語句。(1)定義一個有100個數(shù)組元素的整型一維數(shù)組r。(2)定義一個有100行100列的實型二維數(shù)組s,(3)定義一個整型三維數(shù)組t,第一維長度為3,第二維長度為4,第三維長度為5。(4)定義一個實型四維數(shù)組q,第一維長度為6,第二維長度為5,第三維長度為4,第四維長度為3=答案:intr[100];floats[100][100];intt[3][4][5];floatq[6][5][4][3];【習題5-4】說明下面各數(shù)組定義的含義,并指出對各數(shù)組元素所賦的值。floata[10]={3.,4.5,6.0,8.4,-32.8,3.2,56.0,4.5,2.3,1.5};intb[10]={3,5,0,12,34,7,8,9,41,88);floatc[2][4]={1.,2.,3.,4.,5.,6.,7.,8.}:intd[3][3]={{1,2,3},{4,5,6},{7,8,9}};inte[][4]={1,2,3,4,5,6,7,8,9,10,11,12};答案:⑴(略)⑵(略)(3)(略)⑷(略)(5)(略)【習題5-5]按下列要求完成對各數(shù)組的初始化數(shù)組語句。(1)實型一維數(shù)組A[12],其各元素值在內(nèi)存中排列的順序為:1.0,15.5,9.5,-23.0,8.4,66.5,7.1,22.0,54.5,-34.0,11.3,32.0(2)整型二維數(shù)組A[3][3],其各元素值在內(nèi)存中排列的順序為:2,3,4,5,6,7,8,9(3)實型三維數(shù)組A[2][3][2],其各元素值在內(nèi)存中排列的順序為:1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.0答案:floata[12]={l.0,15.5,9.5,-23.0,8.4,66.5,7.1,22.0,54.5,-34.0,11.3,32.0};inta[3][3]={1,2,3,4,5,6,7,8,9};floata[2][3][2]={1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.0);【習題5-6】用數(shù)組定義語句和scanf語句完成5.4題中各小題相應(yīng)的功能。程序如下:/*c5_6.c*/(略)【習題5-7】有一整型二維數(shù)組按下列要求寫出下列各題C語言程序段。(1)按行輸出所有的數(shù)組元素。(2)按列輸出所有的數(shù)組元素。(3)輸出主對角線上的所有元素。(4)輸出副對角線上的所有元素。(5)輸出上三角陣(包含主對角線元素)的所有元素。(6)輸出上三角陣(包含副對角線元素)的所有元素。(7)輸出下三角陣(包含主對角線元素)的所有元素。(8)輸出下三角陣(包含副對角線元素)的所有元素。程序如下:/*c5_7.c*/#include<stdio.h>voidmain()(inta[10][10];inti,j,k;for(i=0;i<10;i++)for(j=0:j<10;j++)a[i][j]=i*10+j;printf("==l==\n");for(i=0;i<10;i++)printf(*%3d*,a[i][j]);printf(*\n");)printfCV);printf('=2=\n");fori=0;i<10;i++){for(j=0;j<10;j++)printf(線3d",a[j][i]);printf("\n");)printffW);printf(^==3==\n");for(i=0;i<10;i++)(for(j=0;j<10;j++)if(i==j)printf(73d",a[i][j]);elseprintf(" ");printf("\n");)printfC\nz,);printf("=4=\n");for(i=0;i<10;i++)(for(j=0;j<10;j++)if(i+j==10-l)printfC%3d*,a[i][j]);elseprintf("");printf("\n");)printf("\n〃);printf("=5=\n〃);for(i=0;i<10;i++)(for(j=0;j<10;j++)if(i<=j)printf(線3d”,a[i][j]);elseprintf;printf("\n");)printf("\n");printf(""6=\n");for(i=0;i<10;i++)(for(j=0;J<10;j++)if(j<10-i)printf("%3d",a[i][j]);elseprintfC*");printf('\n");)printf("\n");printf(4=7=\rT);for(i=0;i<10;i++)(for(j=0;j<10;j++)if(i>=j)printfC%3d*,a[i][j]);elseprintf(" ");printf('\n");)printf("\n");printf(〃=8=\n〃);for(i=0;i<10;i++)(for(j=0;j<10;j++)if(j>=9-i)printf("%3d",a[i][j]);elseprintf”);printf('\n");)printf("\n");}【習題5-8】閱讀、分析卜列程序,并寫出運行相應(yīng)程序后的輸出結(jié)果。ttinclude"stdio.h"voidmain(){staticinta[10]={l,1,1,1,1,1,1,1,1,1};inti,j;for(i=0;i<10;i++)for(j=0;j<i;j++)a[i]=a[i]+a[j];for(i=0;i<10;i++)printf("%d\n",a[i]);}ttinclude"stdio.h"voidmain(){staticinta[200];inti,j,n;for(i=0;i<200;i++)a[i]=0;n=100;for(i=0;i<n;i++)for(j=0;j<n;j++)

a[j]=a[i]+l;printf("%d\rT,a[n-l]);}^include"stdio.h"voidmain(){inta,b=0;staticintc[10]={l,2,3,4,5,6,7,8,9,0};for(a=0;a<10;++a)if((c[a]%2)=0)b+=c[a];printfb);)ttinclude"stdio.h"voidmain(){inta,b=0;staticintc[10]={l,2,3,4,5,6,7,8,9,0);for(a=0;a<10;++a)if((a%2)==0)b+=c[a];printfb);^include"stdio.h"main(){inta,b=O;intc[10]={l,2,3,4,5,6,7,8,9,0};for(a=0;a<10;++a)b+=c[a];printfb);}^include"stdio.h"intc[10]={l,2,3,4,5,6,7,8,9,0};voidmain(){inta,b=0;for(a=0;a<10;++a)if((c[a]%2)=l)b+=c[a];printfb);)結(jié)果:12481664128256512結(jié)果:199結(jié)果:20結(jié)果:25結(jié)果:45結(jié)果:25【習題5-9]編寫一個程序,完成5.1題的要求。程序如下:/*c5_9.c*/^include<stdio.h>voidmain()doublea[12]={L0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5};inti,j,k;doublemax,min;min=a[0];for(i=0;i<12;i++)if(min>a[i])min=a[i];printf(zzmin=%lf\n*,min);max二a[0];for(i=0;i<12;i++)if(max<a[i])max=a[i];printf(zzmax=%lf\n*,max);for(i=0;i<12;i++)for(j=0;j<12;j++)for(k=0;k<12;k++)(if(i==j||j==k||k==i)continue;if(a[i]+a[j]=a[k])printf(*%lf+%lf=%lf\n”,a[i],a[j],a[k]);}for(i=0;i<12;i++)for(j=0;j<12;j++)for(k=0;k<12;k++)(if(i==j||j==k||k==i)continue;if(a[i]-a[j]=a[k])printf \n”,a[i],a[j],a[k]);【習題5-10]編寫一個程序,完成5.2題的要求。程序如下:/*c5_10.c*/(略)【習題5-11]對給定的整型一維數(shù)組a[100]賦值,要求給奇數(shù)下標值的元素賦負值,偶數(shù)下標值的元素賦正值。程序如下:/*c5_ll.c*/ttinclude<stdio.h>voidmain()inta[100];inti,j,k;for(i=0;i<100;i++)if(i%2==l)a[i]=-l;elsea[i]=l;)[習題5-12]給整型二維數(shù)組b[3][4]輸入12個數(shù)據(jù),計算并輸出數(shù)組中所有正數(shù)之和、所有負數(shù)之和。程序如下:/*c5_12a.c*/#include<stdio.h>voidmain(){staticintb[3][4];inti,j,sum1=0,sum2=0;printf(zzInput12numbers:z,);for(i=0;i<3;i++)for(j=0;j<4;j++)scanf&b[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++){if(b[i][j]>0)suml+=b[i][j];if(b[i][j]<0)sum2+=b[i][j];}printf("\n");printf("suml二%d,sum2=%d\n”,suml,sum2);}/*c5-12b.c*/^include<stdio.h>voidmain(){intx[3][4],i,j,a=0,b=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf&x[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)if(x[i][j]>0)a+=x[i][j];elseb+=x[i][j];printf("%d\t%d”,a,b);【習題5-13]對稀疏數(shù)組a[20](所謂稀疏數(shù)組,即有若干數(shù)組元素值為0的數(shù)組),編寫一個程序,將所有非零元素值按緊密排列形式轉(zhuǎn)移到數(shù)組的前端。(要求:程序中不再開辟其它的單元作為數(shù)組元素值的緩存單元)程序如下:/*c5_13.c*/ttinclude<stdio.h>voidmainO(inta[20]={0,0,1,0,2,0,0,0,3,4,0,0,0,0,0,5,0,0,6,0};inti,j,k;for(i=0;i<20;i++)printf("%3d",a[i]);printf("\n");for(i=l;i<20;i++){if(a[i]=0)continue;for(k=i-l;k>=O;k-)if(a[k]!=0)break;if(k==i-l)continue;a[k+l]=a[i];a[i]=0;}for(i=0;i<20;i++)printf(/z%3d*,a[i]);printf('\n");}【習題5T4]用選擇法編寫一個程序,使存儲在整型數(shù)組a[100]中的各元素值按升序排列存放。(要求:程序中至多允許使用一個緩存單元)程序如下:/*c5_14a.c*/#include<stdio.h>voidmain(){staticinta[100];inti,j,temp;printf(''Input100numbers/');for(i=0;i<100;i++)scanf;for(i=0;i<99;i++)for(j=i+l;j<100;j++)if(a[i]>a[j])(temp=a[j];a[j]=a[i];a[i]=temp;}for(i=0;i<100;i++)printf(/z%d a[i]);printfr\nz,);}/*c5.14b.c*/voidmainO{inta[100],i,j,min,t;for(i=0;i<100;i++)scanf&a[i]);for(i=0;i<99;i++){min=i;for(j=i+l;j<100;j++)if(a[j]<a[min])min=j;t=a[i];a[i]=a[min];a[min]=t;}printf(*sorting.\n");for(i=0;i<100;i++)printfa[i]);)【習題5T5】試編寫一個程序,把下面的矩陣a轉(zhuǎn)置成矩陣b的形式。(用兩種算法完成)125976348b=843679521程序如下:/*c5_15.c*/#include<stdio.h>voidmainO(inta[3][3]={1,2,5,3,4,8,6,7,9};inti,j,k;for(i=0;i<3;i++)(for(j=0;j<3;j++)printf(*%3d*,a[i][j]);printf('\n");)printf('\n");/*method1for(i=0;i<3;i++)(k=a[0][i];a[0]⑴=a[;2][i];a[2][i]=k;for(i=0;i<3;i++)k=a[i][O];a[i][O]=a[i]⑵;a[i][2]=k;}*//*method2*/for(i=0;i<3;i++)(k=a[0][i];a[0]⑴F⑵[2-i];a[2][2-i]=k;}k=a[l][0];a[l][0]=a[lH2];a[l]⑵=k;for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%3d",a[i][j]);printf("\n");)printf("\n");)【習題5-16】設(shè)二維數(shù)組b[5][4]中有鞍點,即元素值在第i行中最小,且在第j列中最大,試編寫一程序找出所有的鞍點,并輸出其下標值。也可能沒有。程序如下:/*c5_16a.c*/ttinclude<stdio.h>voidmain(){intb[5][4],i,j,k,1,min,x,y;for(i=0;i<5;i++)for(j=0;j<4;j++)scanf&b[i][j]);for(i=0;i<5;i++){min=b[i][0];y=0;for(j=l;j<4;j++)if(min>b[i][j]){min=b[i][j];x=j;}for(k=0;k<5;k++)if(min<b[k][x]){y=l;break;}if(y=l)printf(,zNofound!\n");elseprintf(*B[%d][%d]=%d\n*,i,x,min);/*c5.16b.c*/voidmain(){intb[5][4],i,j,min,1,k,n=0;printf(*Iutputarrayb[5][4]:\n〃);for(i=0;i<5;i++)for(j=0;j<4;j++)scanf("%d”,&b[i][j]);printf(^Outputarrayb[5][4]:\n〃);for(i=0;i<5;i++){for(j=0;j<4;j++)printfC%3d*,b[i][j]);printf("\n");)for(i=0;i<5;i++){min=b[i][0];n=0;for(j=l;j<4;j++)if(b[i][j]<min){min=b[i][j];l=j;)for(k=0;k<5;k++)if(min<b[k][1]){n=l;break;}if(n==0)printf(z,%d,%d,%d\n”,i,j,min);elseprintf("Nofound'd);【習題5-17]按如下圖案打印楊輝三角形的前10行。楊輝三角形是由二項式定理系數(shù)表組成的圖型,其特點是兩個腰上的數(shù)都為1,其他位置上的每一個數(shù)是它上一行相鄰的兩個整數(shù)之和。111TOC\o"1-5"\h\z1 2 113 3 11 4 6 4 11 510 105 1程序如下:/*c5_17.c*/ttinclude<stdio.h>voidmain()inta[10][10]={0};inti,j,k;for(i=0;i<10;i++)a[i][O]=l;for(i=l;i<10;i++)for(j=l;j<=i;j++)a[i][j]=a[i-l][j-l]+a[i-l][j];for(i=0;i<10;i++){for(j=0;j<10-i;j++)printf(*");for(j=0;j<=i;j++)printf(*%6d*,a[i][jD;printf('\n");))【習題5T8]從鍵盤輸入一個數(shù),然后在一個整型一維數(shù)組a[20]中,用折半查找法找出該數(shù)是數(shù)組中第幾個元素的值。如果該數(shù)不在數(shù)組中,則打印“Nofound”。程序如下:/*c5_18a.c*/#include<stdio.h>voidmain(){inta[20],i,n=0,m=20,a;for(i=0;i<20;i++)scanf(,z%d/z,&a[i]);scanf&a);while(n<=m){i=(n+m)/2;if(a[i]==a){printfi);break;}if(a[i]<a)n=i+l;if(a[i]>a)m=i-l;}if(a[i]!=a)printf(*Nofound!\n");)/*c5.18b.c*/#include<stdio.h>voidmain(){staticinta[20]={l,2,6,24,120,720,5040,40320,4,8,16,32,64,128,256,512,1024,2048,4096,8192};inti,n=0,m=19,1=0,x;printf("Inputyournumber:\nzz);scanf&x);do{i=(n+m)/2;if(a[i]==x){1=1;printf(*%d,%d”,i,a[i]);break;}if(a[i]<x)n=i+l;if(a[i]>x)m=i-l;}while(n!=m&&a[i]!=x);if(l==0)printf(*Nofound\n*);}【習題5-19]編寫一個程序,求一個二維矩陣的轉(zhuǎn)置矩陣,即將原矩陣行列互換的結(jié)果。程序如下:/*c5」9.c*/ttinclude<stdio.h>^defineN7voidmainO{inta[N][N];inti,j,k;for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=i*N+j;for(i=0;i<N;i++)(for(j=0;j<N;j++)printfC%3d",a[i][j]);printf("\n〃);)printfC\nO;for(i=0;i<N;i++)for(j=i+l;j<N;j++){k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;)for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d",a[i][j]);printf('\n");}printfC\nO;【習題5-20】說明下面各數(shù)組定義的含義,并指出對各數(shù)組元素所賦的值。staticcharflag[4]={'T','R','U','E'};staticcharflag[]={"TRUE"};staticchara[3][7]={"Chine","Canada","Japan"};程序如下:/*c5_20.c*/(略)【習題5-21]輸入一串字符,分別統(tǒng)計其中數(shù)字0,1,2, 9和各字母出現(xiàn)的次數(shù),并按出現(xiàn)的多少輸出。(先輸出出現(xiàn)次數(shù)多的字母,次數(shù)相同的按字母表順序輸出,不出現(xiàn)的字母不輸出)程序如下:/*c5_21.c*/#include<stdio.h>voidmain()(inta[256];intb[256]={0};inti,j,k,max;chars口=“askjdhsdjfgl23sdfjkzxc";for(i=0;i<256;i++)a[i]=i;for(i=0;s[i]!=0;i++)b[s[i]]++;for(i=0;i<256-1;i++)(max=i;for(j=i+l;j<256;j++)if(b[max]<b[j])max=j;if(max==i)continue;k=a[i];a[i]=a[max];a[max]=k;k=b[i];b[i]=b[max];b[max]=k;}for(i=0;i<256&&b[i]!=0;i++)printf(,zchar%c:%dtimes\n*,a[i],b[i]);}【習題5-22】編程打印如下圖形。****程序如下:/*c5_22.c*/^include<stdio.h>voidmain(){inti,j,k;for(i=l;i<=3;i++){for(j=0;j<=2*(3-i);j++)printfC");for(k=l;k<=2*iT;k++)printf("*");printf(*\n");}for(i=l;i<=2;i++){for(j=l;j<=i;j++)printfC〃);for(k=l;k<=2*(3-i)-1;k++)printf("*");printf('\n");【習題5-23】有一篇文章共有3行文字,每行有80個字符。要求統(tǒng)計出其中英文大寫字母、小寫字母、數(shù)字、空格以及其他字符的個數(shù)。程序如下:/*c5_23.c*/^include<stdio.h>voidmain()(inti;chars口="AMsNJasHOOaskjdhsdjfg?!123#@@sdfjkzxc”;char*t[5]={"Blank","Digit","Upper","Lower","Other"};intcount[5]={0};charch;for(i=0;s[i]!=0;i++)(ch=s[i];if(ch==,')count[0]++;elseif(ch>='O'&&ch<='9')count[1]++;elseif(ch>=A*&&ch<=Z1)count[2]++;elseif(ch>=,a&&ch<=,z)count[3]++;elsecount[4]++;for(i=0;i<5;i++)printf(*%s:%dtimes\n/z,t[i],count[i]);}【習題5-24]有一電文,已按下列規(guī)律譯成譯碼:AfZa-*zBfYbfyCfXcfx即第一個字母變成第26個字母,第i個字母變成第(26-i+1)個字母,非字母字符不變。編寫一個程序?qū)⒚艽a譯成原文,并輸出密碼和原文。程序如下:/*c5_24.c*/#include"stdio.h"voidmain(){chara[50],b[50];inti;gets(a);puts(a);for(i=0;i<50;i++){if(a[i]>=>&&a[i]<=,Z')b[i]='Z'if(a[i]>=,a' z')b[i]=,z'+'a-a[i];)puts(b);}【習題5-25]編寫一個程序,將兩個字符串si和s2比較。若sl>s2,輸出正數(shù)1;若si等于s2,輸出0;若sl〈s2,輸出負數(shù)T。(要求:不能使用strcmp函數(shù))程序如下:/*c5_25.c*/^include<stdio.h>voidmain()(inti,t;charsi[]="asd0123”;chars2口=”asdl23";for(i=0;;i++){t=sl[i]-s2[i];if(t!=0||(sl[i]=0))break;}printf(*code=%d\n*,t);

【習題5-26】輸入下述8個國家或地區(qū)名字的字符串:CHINA、JAPAN>KOREA、INDIA.CANADA、AMERICA、ENGLAND和FRANCE,將這些國家或地區(qū)名按字典順序排序。程序如下:/*c5_26.c*/ttinclude"string.h〃#include"stdio.h"voidmain(){charb[8];staticchara[7][8]={"CHINA","JAPAN","KOREA","INDIA","CANADA”,"ENGLISH","FRANCE"};inti,j,min;for(i=0;i<6;i++){min=i;for(j=i+l;j<7;j++)if(strcmp(a[min],a[j])>0)min=j;strcpy(b,a[i]);strcpy(a[i],a[j]);strcpy(a[j],b);}for(i=0;i<7;i++){puts(a[i]);printf('\n");第6章第6章【習題6-1】更正下面函數(shù)中的錯誤。(1)返回求x和y平方和的函數(shù)。sum_of_sq(x,y){doublex,y;return(x*x+y*y);)程序如下:/*c6_l(l).c*/doublesum_of_sq(doublex,doubley){return(x*x+y*y);}函數(shù)和模塊設(shè)計(2)返回求x和y為直角邊的斜邊的函數(shù)。hypot(doublex,doubley)(h=sqrt(x*x+y*y);return(h);}/*c6_l(2).c*/doublehypot(doublex,doubley)(doubleh;h=sqrt(x*x+y*y);return(h);【習題6-21說明下面函數(shù)的功能。(1)itoa(intn,chars[])(2)inthtod(charhex[]){{inti,dec=0;staticinti=0,j=0;for(i=0;hex[i]!=,\0*;i++)intc;{if(hex[i]>=,0?&&hex[i]<=,9')if(n!=0)dec=dec*16+hex[i]->0>;{if(hex[i]>=,A*&&hex[i]<=,F')j++;dec=dec*16+hex[i]A'+10;c=n%10+'0";if(hex[i]>=,af&&hex[i]<=,f')itoa(n/10,s);dec=dec*16+hex[i]->a>+10;s[i++]=c;})return(dec);else}((3)voidstod(intn)if(j==O)s[j++]='O';{inti;s[j]='\0';if(n<0){putchar(*-,);n=-n;}i=j=0;if((i=n/10)!=0)stod(i);)putchar(n%10+,0*);)}功能:⑴(略)(2)(略)(3)(略)【習題6-3】編寫已知三角形三邊求面積的函數(shù),對于給定的3個量(正值),按兩邊之和大于第三邊的規(guī)定,判別其能否構(gòu)成三角形,若能構(gòu)成三角形,輸出對應(yīng)的三角形面積。要求主函數(shù)輸入10組三角形三邊,輸出其構(gòu)成三角形的情況。程序如下:/*c6_3.c*/ttinclude<stdio.h>#include<math.h>doubles(doublea,doubleb,doublec){doubles,ss;if(a+b<c|a+c<b||b+c<a)(printf("ErrorData");return-1;)s=(a+b+c)/2;ss=sqrt(s*(s-a)*(s*b)*(s-c));printf("S=%lf”,ss);returnss;voidmainO(inti;doublea,b,c;for(i=0;i<10;i++){scanf(*%lf%lf%ir,&a,&b,&c);s(a,b,c);))【習題6-4】分別編寫求圓面積和圓周長的

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論