




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、習(xí)題解析與答案第1章C語(yǔ)言概述一 簡(jiǎn)答題1概述 C 語(yǔ)言的主要特點(diǎn)。【解答】( 1 )語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。( 2 )數(shù)據(jù)類型豐富,表達(dá)能力強(qiáng)。( 3)運(yùn)算符多樣。C語(yǔ)言中的運(yùn)算符包含的范圍非常廣泛。( 4)具有結(jié)構(gòu)化的控制語(yǔ)句。如if - else語(yǔ)句、while 語(yǔ)句、do while語(yǔ)句、switch 語(yǔ)句、 for 語(yǔ)句。( 5 )允許直接訪問(wèn)物理地址。C 語(yǔ)言中含有的位和指針運(yùn)算,能夠直接對(duì)內(nèi)存地址進(jìn)行訪問(wèn)操作。( 6 )所生成的目標(biāo)代碼質(zhì)量高,可移植性好。2 .構(gòu)成C語(yǔ)言程序的基本單位是什么它由哪幾部分組成【解答】函數(shù)是構(gòu)成C語(yǔ)言程序的基本單位。一個(gè)完整的C程序一般由文件
2、包含、宏定義、函數(shù)說(shuō)明、變量和一個(gè)或若干個(gè)函數(shù)組成。3 . C語(yǔ)言程序的運(yùn)行一般要經(jīng)過(guò)哪幾個(gè)步驟【解答】(1)編輯;(2)編譯;(3)連接,生成EXE文件;(4)執(zhí)行。二運(yùn)行程序?qū)懡Y(jié)果1輸入下面程序并運(yùn)行。main ()int a1 , a2, x;a1=100;a2=50;x=a1-a2;printf x=%d n,x);【解答】運(yùn)行結(jié)果為: x=502輸入下面程序并運(yùn)行。main ()int a1 , a2, x;a1=10;a2=20;x=a1*a2;printf C a1=%d n" , al, a2);printf ('' x=%d n,x);【解答】運(yùn)行結(jié)
3、果為: a1=10,a2=20x=2003輸入下面程序并運(yùn)行。#include <>main() printf(" *n"); printf(" *n"); printf(" *n"); printf(" *n"); printf(" *n");printf(”*n");【解答】運(yùn)行結(jié)果為:*思考:可以修改程序,使之輸出平行四邊形,等腰三角形等圖形。三編程題1.參照本章例題,編寫(xiě)一個(gè)C程序,用于顯示如下信息:*I love C programs!*【分析與提示】要有文件包含
4、語(yǔ)句#include <> 。C語(yǔ)言中沒(méi)有數(shù)據(jù)的輸入、輸出等功能,數(shù)據(jù)的輸入、輸出都是通過(guò)調(diào)用系統(tǒng)提供的庫(kù)函數(shù)scanf 和 printf 等來(lái)實(shí)現(xiàn)的。這些函數(shù)的說(shuō)明都包括在文件中。main是主函數(shù)的名稱。用括起來(lái)的內(nèi)容是函數(shù)體,函數(shù)體由若干條語(yǔ)句組成,這是計(jì)算機(jī)要執(zhí)行的部分,每條語(yǔ)句以分號(hào)“ ; ”結(jié)束。注意顯示的信息有三行,所以要用到換行符“ n”。參考代碼:#include <>main()printf("*n");printf(" I love C programs! n");printf("*n");
5、 第2章數(shù)據(jù)類型及其運(yùn)算一.簡(jiǎn)答題1 C語(yǔ)言中的數(shù)據(jù)類型主要有哪幾類【解答】短整型(short int )r-整型J 整型(int )長(zhǎng)整型(long int )基本類型J字符型(char) 單精度(float)實(shí)型(浮點(diǎn)型)JI雙精度(double)1枚舉類型(enum)y數(shù)組類型構(gòu)造類型t 結(jié)構(gòu)體類型(struct)I共用體類型(union ) 指針類型I 空類型(void )2 字符常量與字符串常量有什么區(qū)別【解答】字符常量用單括號(hào)括起,字符串常量用雙括號(hào)括起;字符常量存儲(chǔ)時(shí)占1個(gè)字節(jié),字符串常量存儲(chǔ)時(shí)除了n個(gè)字符外,還有系統(tǒng)加上的字符串終止符0,所以字符串常量存儲(chǔ)時(shí)占n+1個(gè)字節(jié)。3
6、C語(yǔ)言中的常量包括哪幾類各自是如何構(gòu)成的【解答】C語(yǔ)言中的常量是一些其值預(yù)先定的量,并且在程序執(zhí)行過(guò)程中其值不再發(fā)生變化。常量的分類遵循基本數(shù)據(jù)類型分類原則,C語(yǔ)言編譯系統(tǒng)自動(dòng)將其存放在于類型相應(yīng)的內(nèi)存單元中。其類別包含整形常量、浮點(diǎn)常量、字符常量、 字符串常量和枚舉常量。整形常量又分為十進(jìn)制整形常量、八進(jìn)制整形常量、十六進(jìn)制整形常量。浮點(diǎn)常量分成十進(jìn)制形式和指數(shù)形式。C語(yǔ)言中的,字符常量是用單括號(hào)括起來(lái)的一個(gè)字符或是字符序列,而字符串常量是用一對(duì)雙括號(hào)括起來(lái) 的零個(gè)或者多個(gè)字符組成的序列。4 簡(jiǎn)述指針、變量的指針、變量的值、指針變量與指針變量的值的含義是什么【解答】C語(yǔ)言中將地址又稱為“指針
7、”0 一個(gè)變量所分配的內(nèi)存空間首字節(jié)地址,稱為該變量的指針 ( 地址 ), 變量的值就被放入所分配的地址單元中。地址一旦被分配,就不會(huì)再改變,所以,指針是一個(gè)常量。既然是常量就可以把它賦給一個(gè)變量。用來(lái)存放指針的變量,被稱為指針變量。一個(gè)指針變量的值是變量的地址,一個(gè)指針變量可以被賦予不同的指針值。5 下面哪些是不合法的常量說(shuō)明不合法的理由。123, , 0892,M,n, 0xabc , ,” Morning ”, 【解答】非法常量有:0892含有非八進(jìn)制數(shù)字8 和 9非法指數(shù)形式浮點(diǎn)常量:規(guī)定 e 后面的指數(shù)必須為整數(shù)。6下面對(duì)變量定義的語(yǔ)句哪些不正確為什么請(qǐng)改正。( 1) char c1
8、,int a2;(2) INT a,b; FLOAT x,y; ( 3) a,b:char;( 4) char if;(5) int a,b(6) Int a:b:c;( 7) int a,x; float x,y;【解答】1) 1) char c1,int a2;錯(cuò)誤。定義不同類型的變量時(shí),應(yīng)用分號(hào)彼此分開(kāi)。改正為: char c1; int a2;2) INT a,b; FLOAT x,y;錯(cuò)誤。C語(yǔ)言中表示類型名的關(guān)鍵字必須小寫(xiě)改正為: int a,b; float x,y;( 3) a,b:char;錯(cuò)誤。C語(yǔ)言中變量定義格式為:類型名變量名;改正為: char a,b;( 4) ch
9、ar if;錯(cuò)誤。變量名不能與C語(yǔ)言的關(guān)鍵字重名。改正為: char f1;( 5) int a,b錯(cuò)誤。變量定義以語(yǔ)句形式出現(xiàn),應(yīng)以分號(hào)結(jié)尾。改正為: int a,b;( 6) Int a:b:c;錯(cuò)誤。類型名不能有大寫(xiě)字母,相同類型名之間用逗號(hào)分隔。改正為: int a,b,c;( 7) int a,x; float x,y;錯(cuò)誤。在同一程序位置上,同一變量名不能重復(fù)定義充當(dāng)兩個(gè)不同的變量。改正為: int a,x; float x1,y;7 下述字符串常量的長(zhǎng)度是多少在內(nèi)存中存儲(chǔ)時(shí)各自占用的單元數(shù)又是多少( 1) “Hello! ”(2)“ABC”(3)“765+123=”【解答】( 1
10、)“ Hello! ” 字符串長(zhǎng)度為 6 ,占用內(nèi)存字節(jié)數(shù)為 7 。2)“ ABC字符串長(zhǎng)度為9,占用內(nèi)存字節(jié)數(shù)為10。因?yàn)槠渲懈髯灾徽家粋€(gè)字符的位置(3) “765+123='該字符串不是合法的,因?yàn)?65表示的值太大,超出合法的ASCII字符集的范圍。二.運(yùn)行程序?qū)懡Y(jié)果1 .以下程序的執(zhí)行結(jié)果是。main()int i,j ;i=15 ;printf( "d,%d , i+,i-);【解答】14,152 .以下程序的執(zhí)行結(jié)果是 。main()int a=20,b=10,c,*p1,*p2;p1=&a;p2=&b;c=(-*p1)/(*p2)+6;print
11、f("a=%d,b=%dn",a,b);printf("*p1=%d,*p2=%dn",*p1,*p2);printf("c=%dn",c);【分析與提示】p1a_a-J_20P2 b' 【解答】a=20,lb=1010*p1=20,*p2=10c=43 .以下程序的執(zhí)行結(jié)果是 。#include <> main() char a= ' G' ,b= ' o' ,c= ' o' ,d= ' d'a=a+32;b=b-6;c=c+3;d=d+8;prin
12、tf("%c%c%c%cn",a,b,c,d);【分析與提示】 從ASCII代碼表可以看出,字符"G'、"o”、"o”、"d”的ASCII代碼值為 71、111、101,因此,G +32、' o' -6、' o' +3、' d' +8 的值分別是103、105、114、108,它們所對(duì)應(yīng)的字符分別是“ g”、"i ”、"r”、“l(fā) ”。常用結(jié)論:(1)在C語(yǔ)言中,字符數(shù)據(jù)可以按其 ASCII代碼值參加整數(shù)運(yùn)算。由于英文字母在ASCII代碼表中是按順序排列的,所
13、以在計(jì)算o' +3代表的字母時(shí),可從字符'o'其順序向后取3個(gè)字母,該字母是“ r”。(2)從ASCII代碼表可以看出“小寫(xiě)字母”-“對(duì)應(yīng)大寫(xiě)字母”的結(jié)果是 32,因此可推算出如下等式:大寫(xiě)字母的ASCII值+32=對(duì)應(yīng)小寫(xiě)字母的 ASCII值;小寫(xiě)字母的ASCII值-32=對(duì)應(yīng)大寫(xiě)字母的 ASCII值。【解答】girl4 .以下程序的執(zhí)行結(jié)果是 。#include <> main() int x;x=-3+4*5-6;printf("x1=%dn",x);x=3+4%5-6;printf("x2=%dn",x);x=
14、-3*4%-6;printf("x3=%dn",x);【分析與提示】x1=11 (4*5是20, -3+20是17, 17-6等于11)x2=1(4%5等于 4, 3+4 等于 7, 7-6 等于 1)x3=0(-3*4 等于-12, -12%-6 等于 0)【解答】x1=11x2=1 x3=05 .以下程序的執(zhí)行結(jié)果是 。#include <> main()printf("%dn",NULL);printf("%d,%cn”,49,49);printf("%d,%c,%on”,48+10,48+10,48+10);【分析
15、與提示】0 (NULL的 ASCII 碼值是 0)49, 1 (數(shù)字1的ASCII碼值是49)58,:,72(48+10等于58,正好是“:”的ASCII碼值,八進(jìn)制表示是 72)【解答】049,158,:,72三、改錯(cuò)題1 請(qǐng)修改下列程序,使其能夠通過(guò)編譯。#include <>Void Main()int a=6;b=8;int c;c=a*b;printf( %d ,c);【答案】錯(cuò)誤的地方有3 處: ( 1)第 2 行關(guān)鍵字應(yīng)該小寫(xiě); ( 2 )定義 b 時(shí)前面應(yīng)該用逗號(hào); ( 3)打印語(yǔ)句的格式應(yīng)該用雙引號(hào)括起來(lái)。正確的程序如下:#include <>void
16、 main()int a=6,b=8;int c;c=a*b;printf("%d",c);2 請(qǐng)修改下列程序,使其能夠正確運(yùn)行。#include <>void main();float f=;char c= ” c”;printf(“ %d n” ,int(f%3);printf(“ %c” ,c);【答案】錯(cuò)誤的地方有3處: (1)第 2 行 main(); 不應(yīng)該有分號(hào); (2)定義char c= ” c”;時(shí),字符常量應(yīng)該用單引號(hào); ( 3)打印語(yǔ)句printf( “ %d n” ,int(f%3);的格式有錯(cuò), 應(yīng)該在 f 前的 int 用括號(hào)括起來(lái),
17、 因?yàn)閷?shí)型數(shù)據(jù)不能執(zhí)行取余運(yùn)算。正確的程序如下:#include <>void main()float f=;char c='c'printf("%dn",(int)f %3);printf("%c",c);第 3 章 順序結(jié)構(gòu)程序設(shè)計(jì)一.簡(jiǎn)答題1 .程序有哪三種基本結(jié)構(gòu)【解答】程序的三種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。2 . C語(yǔ)言的語(yǔ)句有哪幾類表達(dá)式語(yǔ)句與表達(dá)式有什么不同【解答】C語(yǔ)句可分為以下五類:表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、控制語(yǔ)句、復(fù)合語(yǔ)句和空語(yǔ)句。其中表達(dá)式語(yǔ)句與表達(dá)式的區(qū)別在于表達(dá)式語(yǔ)句是表達(dá)式加上“;”
18、組成。二、填空題1. .符號(hào)'&'是 運(yùn)算符,&a是指。2. C語(yǔ)言 中的 空語(yǔ)句就是。3. Scanf函數(shù)中的“格式字符”后面應(yīng)該是,而不應(yīng)該是04. 若想輸出字符%”則應(yīng)該在“格式字符”的字符串中用 表示。5. int x=7; 執(zhí)行 x+=x- =x+x; 后 x 的值是。6. int a=10,b=20;a+=b;b=a-b;a- =b; 的功能是。答案:1.地址、變量a的內(nèi)存地址。2 . 一個(gè)分號(hào)。3 .變量地址,變量名。4 . 連續(xù)2個(gè)沿。5 . -146 .交換 變量a,b的值,打印出a=20,b=10o三.運(yùn)行程序?qū)懡Y(jié)果1 .以下程序的執(zhí)行結(jié)果是
19、 。#include <>main()double d=;int x,y;x=;y=(x+/;printf("%dn",d*y);【解答】02 .以下程序的執(zhí)行結(jié)果是 。main()double d;float f;long l;int i;i=f=l=d=20/3;printf("%d %ld %f %fn",i,l,f,d);【解答】6 63 .以下程序的執(zhí)行結(jié)果是 。main()int k=17;printf("%d,%o,%xn”,k,k,k);【解答】17, 21, 114 .以下程序的執(zhí)行結(jié)果是 。#include &l
20、t;> main()char a,b,c,d;a='A',b='B',c='C',d='D'printf("%1cn",a);printf("%2cn",b);printf("%3cn",c);printf("%4cn",d);【分析與提示】可以用 c格式輸出的,也可以用 d格式輸出,所以與 md近似,m指出了要輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m,則左端補(bǔ)空格,若數(shù)據(jù)位數(shù)大于m,則按實(shí)際位數(shù)輸出。【解答】AD5 .以下程序的執(zhí)行結(jié)果是 。#incl
21、ude <> main()char c1,c2;scanf("%c%c",&c1,&c2);printf("c1=%c,c2=%c,c3=%d,c4=%d",c1+,-c2,c1,c2);【解答】運(yùn)行輸入:AB電車>運(yùn)行結(jié)果為:c1=A,c2=A,c3=65,c4=666 .以下程序的執(zhí)行結(jié)果是。#include <> main()char c1,c2;scanf("%c,%c",&c1,&c2);+c1;-c2;printf("c1=%c,c2=%cn"
22、;,c1,c2);【分析與提示】例如當(dāng)輸入86<回車>,B,C的ASCII碼值為66, 67,執(zhí)行+ci;-c2;后,c1為66+1變成67即C,c2為67-1變成66即B?!窘獯稹窟\(yùn)行輸入:86<回車,運(yùn)行結(jié)果為:c1=C,c2=B7 .以下程序的執(zhí)行結(jié)果是 。main()char ch='a'int a=98;double y=;printf("(1)a=%d,a=%c,ch=%d,ch=%cn",a,a,ch,ch);printf("(2)b=%un",b);printf("(3)c=%ldn"
23、,c);printf("(4)x=%f,y=%fn",x,y);printf("(5)x=%e,y=%en",x,y);printf("(6)y=%n",y);【解答】(1)a=98,a=b,ch=97,ch=a(2)b=1000(4)x=, y=x=+00,y=+00(6)y=8 .以下程序的執(zhí)行結(jié)果是 。#include<> main() int a,b;float x;scanf("%d,%d",&a,&b);x=a/b;printf("nx=%fn",x);【
24、解答】運(yùn)行輸入:2,2<回車 >,運(yùn)行結(jié)果為:9 .當(dāng)輸入12345, a時(shí),給出程序的運(yùn)行結(jié)果,執(zhí)行結(jié)果是 。#include<> main() int a;char c;scanf("%3d,%c",&a,&c);printf("n%d,%dn",a,c);【分析與提示】 md, m指出了要輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m,則左端補(bǔ)空格,若數(shù)據(jù)位數(shù)大于m,則按實(shí)際位數(shù)輸出。a的ASCII碼值是97?!窘獯稹?2345,9710 .分析下面程序,在鍵盤上輸入數(shù)據(jù) 才能使得變量 a=10, b=20,c1 =,A
25、, c2=,a,, x=, y=,z=。程序如下 :#include<>main()int a,b;float x,y,z;char c1,c2;scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);printf("a=%d,b=%d,c1=%c,c2=%c,x=%f,y=%f,z=%f",a,b,c1,c2,x,y,z);【分析與提示】按%5 d 格式輸入 a 與 b 的值時(shí),要先鍵入三個(gè)空格,然后再鍵入 10 與 20。 %*f 是
26、用來(lái)禁止賦值的。在輸入時(shí),對(duì)應(yīng) %*f 位置可以隨意輸入一個(gè)數(shù)(我們輸入,該數(shù)不會(huì)賦值給任何變量的) ?!窘獯稹窟\(yùn)行輸入:-10一一,< 回車,11 一 個(gè) 程 序 中 , 使 用 了 多 個(gè) scanf 函 數(shù) 輸 入 數(shù) 據(jù) , 用a=3,b=7,x=,y=,c1= A ,c2= a 輸入到每個(gè)變量,應(yīng)該如何輸入數(shù)據(jù)main()int a,b;float x,y;char c1,c2;scanf("a=%d,b=%d",&a,&b);scanf(" x= %f,y=%e",&x,&y);scanf("
27、c1= %cc2=%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn",a,b, x,y,c1,c2);【分析與提示】 在使用多個(gè)scanf 函數(shù)輸入數(shù)據(jù)時(shí), 第一個(gè)輸入行末尾輸入的回車被第二個(gè)scanf 函數(shù)吸收,因此在第二、三個(gè)scanf 函數(shù)的雙引號(hào)后放置一個(gè)空格以抵消上行輸入的回車鍵。若沒(méi)有一個(gè)空格,則按上面輸入的數(shù)據(jù)會(huì)出錯(cuò)。【解答】運(yùn)行輸入: a=3, b=4< 回車 >X=8, y=< 回車 >01=人02=2回車>運(yùn)行結(jié)果: a=3,b=7,x=,y
28、=,c1=A,c2=a四編程題1由鍵盤輸入1 個(gè)字母,輸出其ASCII 碼值?!痉治雠c提示】將一個(gè)字符常數(shù)賦給一個(gè)字符變量,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的 ASCII 代碼放到內(nèi)存單元中,因此,字符型數(shù)據(jù)也可以像整型數(shù)據(jù)那樣使用,可以用來(lái)表示一些特定范圍內(nèi)的整數(shù)。所以 int型與char型變量的值可以互換,分別用討口不同格式輸出就行了。但是注意這種轉(zhuǎn)換是有條件的。因?yàn)椋?char 變量在內(nèi)存占一個(gè)字節(jié),而int整型變量占 2 個(gè)字節(jié)。當(dāng) int 型高位字節(jié)是0 時(shí), char 與 int 可以互換;若不是0,則不可以互換。例如,用暗式輸出時(shí),取低位字節(jié),高位字節(jié)被舍棄。參考
29、代碼:#include ""main()char ch;ch=getchar();printf("%c,%d",ch,ch);【解答】運(yùn)行輸入: B < 回車 >運(yùn)行結(jié)果: B, 662從鍵盤上輸入一個(gè)大寫(xiě)字母,把它轉(zhuǎn)換成小寫(xiě)字母,然后顯示出來(lái)。【分析與提示】大寫(xiě)字母轉(zhuǎn)換小寫(xiě)時(shí)ASCII 碼值+32,相反的,小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母時(shí)ASCII 碼值 -32 。參考代碼:#include <>main()char x1,x2;printf("x1=n");scanf("%c",&x1)
30、;x2=x1+32;printf("%c,%cn",x1,x2);【解答】運(yùn)行輸入: A < 回車>運(yùn)行結(jié)果: A, a3從鍵盤上輸入兩個(gè)實(shí)型數(shù),求兩數(shù)的和、差、積,輸出結(jié)果時(shí)要求小數(shù)部分占兩位?!咎崾尽拷Y(jié)果要求保留 2 位小數(shù),所以輸出的結(jié)果格式為 %.2fmain()float x,y,a,b,c;printf("please input x,y:");scanf("%f,%f",&x,&y);a=x+y;b=x-y;c=x*y;printf("x=%f,y=%fn",x,y);pr
31、intf("x+y=%.2fnx-y=%.2fnx*y=%.2fn",a,b,c);【解答】運(yùn)行輸入: please input x,y:1020<回車 >運(yùn)行結(jié)果: x=,y=x+y=x-y=x*y=4編寫(xiě)一個(gè)程序,求出給定半徑r 的圓以及內(nèi)正n 邊形的面積,并且輸出計(jì)算結(jié)果。 r 和 n 的值由用戶輸入。由數(shù)學(xué)知識(shí)得到:2半徑為 r 圓的面積 s r2 , 半徑為 r 圓的內(nèi)2接正n邊形的面積A nr sin /2,其中 2 /n處理步驟:提示信息,接收參數(shù)值;計(jì)算圓的面積;計(jì)算正 n 邊形的面積;輸出結(jié)果。參考代碼:#include <>#in
32、clude <>#define PImain()int n;float r,s,area;printf("Please input the radius and the N.:n");scanf("%f%d",&r,&n);s=PI*r*r;area=(n*r*r*sin(2*PI/n)/;printf("S=%.2ftA=%.2fn",s,area);return(0);運(yùn)行結(jié)果如下:Please inout the radius and the N.;15S= A=5 已知華氏溫度與攝氏溫度之間的轉(zhuǎn)換公
33、式是: c 5/9 (F 32) , 編寫(xiě)一個(gè)程序,將用戶輸入的華氏溫度轉(zhuǎn)換成攝氏溫度,并予以輸出?!痉治雠c提示】首先要定義輸入輸出溫度為浮點(diǎn)型,且5/9 兩數(shù)相除結(jié)果為整數(shù), 5/9 的值為 0, 故不能寫(xiě)成5/9 , 而應(yīng)寫(xiě)成 *(f-32) 。 結(jié)果要求保留 2 位小數(shù),所以輸出的結(jié)果格式為%。參考代碼:#include <>main()int f;float c;printf("nplease input the F:");scanf("%d",&f);c=9*(f-32); /* 不能寫(xiě)成 5/9 ,兩數(shù)相除結(jié)果為整數(shù), 5
34、/9 的值為 0*/ printf("the is : %.2f",c);return(0);【解答】運(yùn)行結(jié)果如下:please input the F: 75< 回車 >the ,erature is:6由鍵盤輸入5 個(gè)學(xué)生的計(jì)算機(jī)成績(jī),計(jì)算他們的平均分并保留 2 位小數(shù)?!痉治雠c提示】方法與上題類似,同樣是保留兩位有效數(shù)字%。參考代碼:main()int a,b,c,d,e;float total,aver;printf("Plese input 5 students scores :n");scanf("%d,%d,%d,%d
35、,%d",&a,&b,&c,&d,&e);total=a+b+c+d+e;aver=total/;printf("Average : %n",aver);【解答】運(yùn)行輸入: 80,93,75,68,87 < 回車 >運(yùn)行結(jié)果: Average :7 編寫(xiě)將輸入的英里轉(zhuǎn)換為公里,每英里等于5380 英尺,每英尺等于 12英寸,每英寸等于2. 54 厘米,每公里等于 100 000 厘米。main()double mile,k;printf( “ enter mile: ” );scanf( “%lf ” ,&
36、;mile);k=mile*5380*12*100000;printf( “ %lf mile is %lf kilometern” ,mile,k);【解答】運(yùn)行:enter mile:2 /mile is kilometer第4章選擇結(jié)構(gòu)程序設(shè)計(jì)習(xí)題一.填空題1 .已知 a=3, b=4, c=5。則邏輯表達(dá)式a+b>c&&b= =c的值為 ,!(a>b)&&c|1 的值為, !(a+b)+c-1&&b+c/2 的值為?!痉治雠c提示】本題考查運(yùn)算符的優(yōu)先級(jí)別?!窘獯稹? ; 1 ; 1二、運(yùn)行程序?qū)懡Y(jié)果2 .下列程序運(yùn)行的運(yùn)行結(jié)果
37、為 。#include <>main ()int a=3 , b=8, c=9, d=2, e=4;int min;min=(a<b) a:b;min=(min<c)min:c;min=(min<d)min:d;min=(min<e)min:e;printf("Min is%dn" , min);【分析與提示】本題程序的功能為:找出 a,b,c,d,e中最小的值并輸出?!窘獯稹縈in is 23 .若輸入3,4<回車,,下列程序運(yùn)行的運(yùn)行結(jié)果為 ;若輸入4,3<回 車,,下列程序運(yùn)行的運(yùn)行結(jié)果為 。#include<&g
38、t;main ()int a , b, c;printf ("Input a , b:");scanf("%d, %d", &a, &b);if (a>=b)c=a*b; printf("%d*%d=%dn", a, b, c) ; elsec=a/b; printf("%d/%d=%dn", a, b, c) ; 【分析與提示】本題程序的功能為:從鍵盤輸入變量a,b,計(jì)算c的值(若a>=b,貝U c=a*b ,若 a<b 貝U c=a/b ),并輸出 a, b, c 的值。【解答
39、】3/4=0 ; 4*3=124 .下列程序運(yùn)行的運(yùn)行結(jié)果為 。#include <>main ()int x=1 , y=0, a=0, b=0;switch (x)case 1:y)switch case 0: a+; break;case 1: b+; break;case 2: a+; b+; break;printf( "a=%d, b=%dn" , a, b) ;【分析與提示】本題中 case 1: 后面是一個(gè)switch 語(yǔ)句,執(zhí)行完該語(yǔ)句后,直接執(zhí)行 case 2: 后面的語(yǔ)句?!窘獯稹縜=2, b=1三編程題1輸入一個(gè)字母,若為小寫(xiě),則把它變成
40、大寫(xiě)輸出?!痉治雠c提示】小寫(xiě)字母的 ASCII 碼值與其對(duì)應(yīng)的大寫(xiě)字母的 ASCII 碼值相 差 32。參考代碼:main( )char c;printf(" 請(qǐng)輸入一個(gè)字母n") ;scanf("%c", &c);if(c>= a &&c<= z )c=c-32;printf("%cn",c) ;2 企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn) (I) 低于或等于10 萬(wàn)元時(shí),獎(jiǎng)金可提 10%;利潤(rùn)高于10 萬(wàn)元,低于20 萬(wàn)元時(shí),低于10 萬(wàn)元的部分按10%提成,高于 10萬(wàn)元的部分,可可提成%; 20 萬(wàn)
41、到 40 萬(wàn)之間時(shí),高于 20 萬(wàn)元的部分,可提成 5%; 40 萬(wàn)到 60 萬(wàn)之間時(shí)高于 40 萬(wàn)元的部分,可提成3%; 60 萬(wàn)到 100 萬(wàn)之間時(shí),高于 60 萬(wàn)元的部分,可提成%,高于100 萬(wàn)元時(shí),超過(guò)100 萬(wàn)元的部分按1%提成,從鍵盤輸入當(dāng)月利潤(rùn) I ,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)【分析與提示】請(qǐng)利用數(shù)軸來(lái)分界,定位。注意定義時(shí)需把獎(jiǎng)金定義成長(zhǎng)整型。參考代碼:main()long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*;bonus2=bon
42、us1+100000*;bonus4=bonus2+200000*;bonus6=bonus4+200000*;bonus10=bonus6+400000*;if(i<=100000)bonus=i*;else if(i<=200000)bonus=bonus1+(i-100000)*;else if(i<=400000)bonus=bonus2+(i-200000)*;else if(i<=600000)bonus=bonus4+(i-400000)*;else if(i<=1000000)bonus=bonus6+(i-600000)*;elsebonus=b
43、onus10+(i-1000000)*;printf("bonus=%d",bonus);3由鍵盤輸入三個(gè)整數(shù)a 、 b 、 c ,用條件運(yùn)算符求出其中最大值和最小值?!痉治雠c提示】首先比較輸入的 a,b 的大小,并把大數(shù)裝入max, 小數(shù)裝入min中,然后再與c比較,若max小于c,則把c賦予max;如果c小于min,則把 c賦予min。因此max內(nèi)總是最大數(shù),而min內(nèi)總是最小數(shù)。最后輸出max和min的 值即可。參考代碼:main( )int a,b,c,max,min;scanfC'%d,%d,%d", &a,&b,&c);
44、max=a>ba:b ;max=max>cmax:c;min=a<ba:b;min=min<cmin:c;printf("最大值為:%d,最小值為:dn",max,min);4.有一函數(shù):x (x<1)y= 2x-1(1<x<10)3x-11(x>10)編一程序,輸入一個(gè)x值,輸出y值?!痉治雠c提示】本題考查if語(yǔ)句的嵌套,應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。從最內(nèi)層開(kāi)始,else總是與它上面最近的(未曾配對(duì)的)if配對(duì)。參考代碼:main()float x,y;printf(" 請(qǐng)輸入x的值n");scan
45、f("%f', &x);if(x<1) y=x;elseif(x>=10) y=3*x-11;else y=2*x-1;printf("x=%,y=%",x,y);5從鍵盤上輸入星期號(hào),并顯示該日期的英文名字。【分析與提示】本實(shí)例知識(shí)點(diǎn): switch 語(yǔ)句。switch 語(yǔ)句的控制流程是:首先計(jì)算表達(dá)式的值,然后依次與每一個(gè)case 中的常量值進(jìn)行比較, 一旦發(fā)現(xiàn)了某個(gè)能夠匹配的值, 就執(zhí)行該 case 后面的語(yǔ)句組,直到遇到 break 語(yǔ)句為止。如果表達(dá)式的值與所有 case 中的常量都不匹配,則執(zhí)行 default 后面的語(yǔ)句組
46、。參考代碼:main( )int xqh;char ywm;printf(" 請(qǐng)輸入星期號(hào)(17): n");scanf("%d",&xqh);switch(xqh) case 1: printf("Monday"); break;case 2: printf("Tuesday"); break;case 3: printf("Wednesday"); break;case 4: printf("Thursday"); break;case 5: printf(&qu
47、ot;Friday"); break;case 6: printf("Saturday"); break;case 7: printf("Sunday"); break;default : printf("error");6某市不同車牌的出租車3 公里的起步價(jià)和計(jì)費(fèi)分別為:夏利7 元/ 公里,3公里以外元 /公里;富康8 元/公里, 3 公里以外元 /公里;桑塔納 9 元, 3 公里以外元 / 公里。編程:從鍵盤輸入乘車的車型及行車公里數(shù),輸出應(yīng)付車資?!痉治雠c提示】可設(shè)三個(gè)變量,分別表示乘車的車型、行車公里數(shù)和應(yīng)付車資,根
48、據(jù)乘車的車型和行車公里數(shù),計(jì)算出應(yīng)付的車資。參考代碼:main( )int cx; /*定義乘車的車型變量cx */float gl, cf; /*定義行車公里數(shù)變量 gl 、應(yīng)付車資變量cf */printf("t1- 夏利 n t2- 富康 n t3- 桑塔納 n");printf("t 請(qǐng)輸入車型( 1-3 ) : ");scanf("%d",&cx);printf("nt 請(qǐng)輸入行車公里數(shù): ");scanf("%f",&gl);switch(cx) case 1: if
49、(gl<=3) cf=;else cf=7+(gl-3)* ;break;case 2: if(gl<=3) cf=;else cf=8+(gl-3)* ;break;case 3: if(gl<=3) cf=;else cf=9+(gl-3)* ;printf(" 應(yīng)付車資為 %.1fn",cf);7 .給一個(gè)不多于5位的正整數(shù),要求:求出它是幾位數(shù):分別打印出每 一位數(shù)字;按逆序打印出各位數(shù)字。如原數(shù)為 12345,則逆序?yàn)?4321?!痉治雠c提示】本題的思路是:設(shè)5 個(gè)變量,分別代表個(gè)位、十位、百位、千位和萬(wàn)位。從個(gè)位起,依次將各個(gè)位取出來(lái),按取出的
50、順序組合成新的數(shù)據(jù),并記錄當(dāng)前取出的數(shù)字的個(gè)數(shù)。參考代碼:#include ""main( )unsigned x,m,n=0,w=0;unsigned ge=0,shi=0,bai=0,qian=0,wan=0;printf(" 請(qǐng)輸入一個(gè)正整數(shù)");scanf("%u",&x);m=x;ge=m%10; m=m/10; w=1; n=ge;if(m)shi=m%10; m=m/10; w=2; n=n*10+shi;if(m)bai=m%10; m=m/10; w=3; n=n*10+bai;if(m)qian=m%10;
51、 m=m/10; w=4; n=n*10+qian;if(m)wan=m; w=5; n=n*10+wan;printf("n%u為u 位數(shù)”,n,w);printf("n正整數(shù)的原序?yàn)椋簎",x);printf("n正整數(shù)的逆序?yàn)椋簎",n);注:當(dāng)該程序輸入一個(gè)較大的5位數(shù)時(shí),輸出結(jié)果就不正確了,思考為什么動(dòng)手試一下怎樣修改該程序。第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)一、填空題1 .下面程序的功能是用“輾轉(zhuǎn)相除法”求兩個(gè)正整數(shù)的最大公約數(shù)。請(qǐng)?zhí)羁?include<>main ()int r , m, n;scanf ("%d%d&q
52、uot; &m &n);if(m<rj) (1);r=m%n;while (r) m=n;n=r; (2);printf ("%dn" , n);【分析與提示】輾轉(zhuǎn)相除法:兩數(shù)相除,若不能整除,則以除數(shù)作為被除數(shù),余數(shù)作為除數(shù),繼續(xù)相除,直到余數(shù)為0時(shí),當(dāng)前除數(shù)就是最大公約數(shù)【解答】(1)r=m;m=n;n=r; (2)r=m%n;二.運(yùn)行程序?qū)懡Y(jié)果1 .下列程序運(yùn)行的運(yùn)行結(jié)果為 。#include <>main ()int y=10;doyy-', while (-y );printf ("%d", y-);【
53、分析與提示】注意y-與y-的運(yùn)算順序。【解答】02 .下列程序運(yùn)行的運(yùn)行結(jié)果為 。main()int x=3,y=6,z=2;while(x+!=(y-=1)z+=1;if(y<x)break;printf( "d,%d,%dn",x,y,z);【解答】4,5,33 .下列程序運(yùn)行的運(yùn)行結(jié)果為 main()int a=1,b=0;for(;a<3;a+)switch(a+)case 1:b-;case 2:b+;case 3:b+=3;break;printf( "d n”,b);【解答】34 .下列程序運(yùn)行的運(yùn)行結(jié)果為 main() int x=10
54、,y=10,i;for(i=0;i<2;y=i+)printf(“ %4d%4” d ,x -,y);【解答】 10 10 9 0三 編程題1. 求 s=1+2+4+8+64 的值。【分析與提示】本題為數(shù)學(xué)項(xiàng)求和問(wèn)題,數(shù)學(xué)項(xiàng)間的關(guān)系為:第n 項(xiàng)的值為第n-1 項(xiàng)的值 2 倍。參考代碼:main( )int i,s=0,t=1;while(t<=64) s=s+t;t=2*t;printf("s=%dn",s);2. 求 s=1+1/2+1/3+ +1/100 的值?!痉治雠c提示】本題為分?jǐn)?shù)數(shù)學(xué)項(xiàng)求和問(wèn)題,要想得到每一項(xiàng)的正確結(jié)果,分式中的分子、分母至少要有一個(gè)為
55、實(shí)型數(shù)據(jù)。參考代碼:main( )int i;float s=0,t;for(i=1;i<=100;i+)t=i;s=s+t;)printf("s=%.2fn",s);3. 求 T=1!+2!+3!+ +10!的值。n項(xiàng)的值為第【分析與提示】本題為數(shù)學(xué)項(xiàng)求和問(wèn)題,數(shù)學(xué)項(xiàng)間的關(guān)系為:第n-1項(xiàng)的n倍。參考代碼:main()long int t=0,tn=1;int i;for(i=1;i<=10;i+)tn=i*tn;t=t+tn;)printf("t=%ld",t);4. 求 s=2/1+3/2+4/3+5/4+22/21 的值?!痉治雠c提示
56、】請(qǐng)抓住分子與分母的變化規(guī)律。參考代碼:main( )int m;float s=0,n=;for(m=1;m<=21;m+) s=s+n/m;n=n+1;printf("s=%.2fn",s);5. 輸入一行字母,分別統(tǒng)計(jì)其中的英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)?!痉治雠c提示】利用 while 語(yǔ)句 , 條件為輸入的字符不為 'n'.參考代碼:#include ""main( )char c;int letters=0,space=0,digit=0,other=0;printf(" 請(qǐng)輸入一行字符:n");
57、while(c=getchar()!= n ) if(c>= a &&c<= z |c>= A &&c<= Z )letters+;else if(c= )space+;else if(c>= 0 &&c<= 9 )digit+;else other+;printf("字母數(shù)=%d空格數(shù)=%d數(shù)字?jǐn)?shù)二%d其它字符數(shù)=%dn",letters,space,digit,other);6. 求 100 以內(nèi)能被 8 整除的數(shù),并求它們的和?!咎崾尽颗袛嘁粋€(gè)數(shù) m能否被n整除的方法是:將 m對(duì)n取余數(shù),若余數(shù)為0,則為整除。參考代碼:main( )int n,s=0;for(n=1;n<=100;n+)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 度生產(chǎn)加工合同
- 牛仔布供需合同
- 再生廢物原料國(guó)外裝運(yùn)前檢驗(yàn)合同全文
- 租賃合同范本:辦公場(chǎng)地篇
- 新版買賣合同模板
- 14《天文學(xué)上的曠世之爭(zhēng)》教學(xué)設(shè)計(jì) 2023-2024學(xué)年統(tǒng)編版高中語(yǔ)文選擇性必修下冊(cè)
- 度醫(yī)院護(hù)士勞動(dòng)合同
- 5《七律·長(zhǎng)征》教學(xué)設(shè)計(jì)-2024-2025學(xué)年六年級(jí)語(yǔ)文上冊(cè)統(tǒng)編版
- 企業(yè)戰(zhàn)略聯(lián)盟合同樣本
- 1《春夏秋冬》教學(xué)設(shè)計(jì)-2024-2025學(xué)年語(yǔ)文一年級(jí)下冊(cè)統(tǒng)編版
- 沈陽(yáng)市地圖課件
- 伯利茲城大藍(lán)洞
- 物權(quán)法習(xí)題集
- 實(shí)訓(xùn)4瀝青路面滲水試驗(yàn)
- 專業(yè)勞務(wù)派遣服務(wù)行業(yè)可行性分析報(bào)告
- 金屬非金屬礦山安全生產(chǎn)法規(guī)
- 《商務(wù)溝通-策略、方法與案例》課件 第五章 網(wǎng)絡(luò)溝通
- 市場(chǎng)調(diào)查 第三版 課件全套 夏學(xué)文 單元1-8 市場(chǎng)調(diào)查認(rèn)知 - 市場(chǎng)調(diào)查報(bào)告的撰寫(xiě)與評(píng)估
- 身心活化健康評(píng)估老年康體指導(dǎo)初級(jí)
- 《公共設(shè)施設(shè)計(jì)》課件
- 2024-2030年中國(guó)琥珀酸二辛酯磺酸鈉產(chǎn)業(yè)未來(lái)發(fā)展趨勢(shì)及投資策略分析報(bào)告
評(píng)論
0/150
提交評(píng)論