C語言習(xí)習(xí)題:順序、選擇、循環(huán)_第1頁
C語言習(xí)習(xí)題:順序、選擇、循環(huán)_第2頁
C語言習(xí)習(xí)題:順序、選擇、循環(huán)_第3頁
C語言習(xí)習(xí)題:順序、選擇、循環(huán)_第4頁
C語言習(xí)習(xí)題:順序、選擇、循環(huán)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、順序結(jié)構(gòu)程序設(shè)計(jì)2.3.1 要點(diǎn)導(dǎo)讀() 與scanf()語句。printf() 與scanf()語句是最通用的輸入輸出函數(shù),它們可以在程序設(shè)計(jì)者的控制下以各種格式分別實(shí)現(xiàn)數(shù)據(jù)的輸出和輸入操作。它們位于庫文件中。2.字符數(shù)據(jù)的輸入輸出。最簡單的字符輸入輸出函數(shù)是getchar()和putchar()。兩者分別從鍵盤讀一個(gè)字符或向顯示屏寫一個(gè)字符。2.3.2 經(jīng)典例題分析1.下列程序運(yùn)行后輸出的結(jié)果是 。#include <> void main() int a=0,b=0;a=10;b=20;printf(“a+b=%d”,a+b);分析:printf( )是輸出函數(shù),它的括號(hào)內(nèi)由

2、兩部分組成:1)控制字符串,是用雙引號(hào)括起來的字符串,它包括兩種信息:(1) 格式說明。由”%”和格式字符組成,如:%d、%f、%c等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換成指定的格式輸出。(2) 普通字符。需要原樣輸出的字符。2)”輸出表列”是需要輸出的一些數(shù)據(jù),可以是表達(dá)式。題目中a的值是10,b的值是20,在中,”a+b= “是普通字符,需原樣輸出。輸出表列是一個(gè)表達(dá)式,它的結(jié)果以整型輸出。答案:a+b=30。2.下列程序運(yùn)行后輸出的結(jié)果是 。#include <>void main() int a=732;printf(“%dn”,a);printf(“%2dn”,a);printf

3、(“%10dn”,a);printf(“%-10dn”,a);分析:d格式符,用來輸出十進(jìn)制整數(shù)。其中%d,按整型數(shù)據(jù)的實(shí)際長度輸出。%md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。printf(“%dn”,a);把a(bǔ)的值按原樣輸出:732。printf(“%2dn”,a);結(jié)果占2列,但732占3列大于2列,所以按實(shí)際位數(shù)輸出:732。printf(%10dn”,a);結(jié)果占10列,但732占3列小于10列,所以左端補(bǔ)7個(gè)空格。printf(“%-10dn”,a); 結(jié)果占10列,“-”表示把數(shù)值放到左端,732占3列小于10列,所以右端補(bǔ)

4、7個(gè)空格。答案: 732732 732 /*表示空格*/ 7323.已知char a=103;則語句printf(“%3d”,a);執(zhí)行后的輸出結(jié)果為(表示空格)。A)67B)cC)67D)103分析:103是一個(gè)轉(zhuǎn)義字符,表示一個(gè)八進(jìn)制數(shù)所代表的字符,轉(zhuǎn)換為十進(jìn)制為67。printf(“%3d”,a);把103轉(zhuǎn)換為十進(jìn)制數(shù)輸出,結(jié)果占3列。但67占2列,小于要求的3列,所以左補(bǔ)空格,即67。答案:C。4.下列程序運(yùn)行后結(jié)果是 。#include <>#define a void main() printf(“%fn”,a);printf(“%en”,a);printf(“%4.

5、2fn”,a);printf(“%3.1fn”,a);printf(“%10.3fn”,a);printf(“%-10.3fn”,a);分析:f格式符,用來輸出實(shí)數(shù),以小數(shù)形式輸出,小數(shù)點(diǎn)后輸出6位。所以printf(“%fn”,a);輸出結(jié)果為。%是指,要輸出的數(shù)占m列,同時(shí)小數(shù)點(diǎn)保留n位(四舍五入),如果輸出的數(shù)大于m,則原樣輸出,同時(shí)小數(shù)點(diǎn)保留n位(四舍五入)。如果小于m,則左補(bǔ)空格,同時(shí)小數(shù)點(diǎn)保留n位(四舍五入)。printf(“%4.2fn”,a);輸出結(jié)果為。printf(“%3.1fn”,a);輸出結(jié)果為。e格式符,以規(guī)范化指數(shù)的形式輸出,所以printf(“%en”,a);+0

6、3。答案: +03 /*(表示空格)*/5.下列程序運(yùn)行后結(jié)果是 。#include <>void main() char x=0x227f; printf(“%dn”,x);A) 22B) 127C) 255 D)8831分析:變量x被定義成字符型,字符型占1個(gè)字節(jié),而x被賦值為一個(gè)4位16進(jìn)制的值22ff,占16位。所以227f高8位被舍去,x的值為7fH。執(zhí)行printf(“%dn”,x);即把x以有符號(hào)的十進(jìn)制整數(shù)輸出。答案:B。6.設(shè)int b=0;下列語句的輸出結(jié)果是 。printf(“%d,%d”,+b,b-);A) 1,1B) 1,0C) 0,0D) 0,-1 分析

7、:printf函數(shù)的執(zhí)行順序是由右到左,輸出順序是由左向右。答案:C。 7.下列程序運(yùn)行時(shí),若從鍵盤輸入:123<回車>45678<回車>后結(jié)果是 。#include <> void main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4); c5=getchar( );c6=getchar( );putchar(c1);putchar(c2);printf(“%c%cn”,c5,c6);分析:scanf(格式控制,地址表列)的功能是:從鍵盤讀取輸入的信息

8、。其中”格式控制”的含義同printf函數(shù);”地址表列”是由若干個(gè)地址組成的表列,可以是變量的地址,或字符串的首地址。其scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4)的作用是:按照c1,c2,c3,c4在內(nèi)存的地址將c1,c2,c3,c4的值存進(jìn)去。由于”%c”表示按字符形式輸入數(shù)據(jù),所以”回車符”作為一個(gè)字符,輸入有效。getchar( )函數(shù)的作用從終端輸入一個(gè)字符。putchar( )函數(shù)的作用是向終端輸出一個(gè)字符。所以c1=1、c2=2、c3=3、c4=回車,c5=4、c6=5。答案:1245。8.設(shè)有定義int a;float b;

9、執(zhí)行scanf(“%2d%f”,&a,&b);語句時(shí),若從鍵盤輸入876 <回車>,a和b的值分別是 。分析:scanf()可以指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù)。%2d說明了a占兩列,即為87,剩下的數(shù)字應(yīng)該賦給b,但是6和5之間有一個(gè)空格,為輸入終止符,所以被舍棄,即b的值為6。答案:87 6。9.已知a,b,c為int類型,執(zhí)行scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);后,若要使得a為1,b為2,c為3,則以下選項(xiàng)中正確的輸入形式是( )。A) 1,2,3B) a=1,b=2,c=3C) 1 2 3

10、D) a=1 b=2 c=3分析:scanf中如果在字符控制串中除了格式說明符以外還有其他字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些相同的字符。答案:B。10.設(shè)有int x,y;scanf(“%d%*d%d”,&x,&y);從鍵盤輸入數(shù)據(jù)102030<回車>后,y的值是 。分析:%*d表示跳過。所以y的值是30。答案:30。2.3.3 習(xí)題一、選擇題1.設(shè)a、b、c為整型變量,若從鍵盤給a、b、c輸入數(shù)據(jù),則正確的輸入語句是。A)scanf(“%f%f%f”,&a,&b,&c) ; B) scanf(“%d%d%d”,&a,&b,&a

11、mp;c);C) scanf(“%d%d%d”,a,b,c); D) scanf(“%d%d%d”,&a;&b;&c);2.下列程序執(zhí)行后輸出的結(jié)果是。#include<>void main()int x=d;printf(“%c”,A+(x-a+1); A) GB) HC) ED) J3.設(shè)整型變量a,b的值均為8。printf(“%d,%d”,(a+,+b),b-);的輸出值是。A)8,8B)8,7C)9,9D)8,94.若有以下程序段,執(zhí)行后輸出的結(jié)果是。int m=100,n=0100;printf(“%d,%on”,m,n);A) 100,100B

12、) 100,0100C) 100,4D) 100,045.有以下程序,其輸出結(jié)果是。#include <>void main() float x=1; int y;x+;y=x+1;printf(“x=%d,y=%f”,x,y);A) x=2,y=3B) x=2,y=3.0C) x=,y=3D) x=0,y=6.有以下程序,其輸出結(jié)果是。 #include <> void main() int a; char c=10; float f=;double x;a=f/=c*=(x=;printf(“%d,%d,%3.1f,%3.1f”,a,c,f,x);A) 1,65,1

13、,B) 1,65,6.5C) 1,65,D) 2,65,二、填空題1.下列程序輸出的結(jié)果是 。#include <> void main() int x=7,y=5; printf(“y=%dn”, x%y); 2.下列程序輸出的結(jié)果是 。#include <>void main() float d,f; long k; int i; i=f=k=d=20/3; printf(“%3d%3ld%5.2f%5.2fn”,i,k,f,d);3.下列程序輸出的結(jié)果是: 。#include <> void main() int k=11;printf(“k=%d,k

14、8=%o,k16=%xn”,k,k,k);4.下列程序輸出結(jié)果是:。#include <>#define BL “ main() printf(“%2sn”,BL); printf(“%15sn”,BL);printf(“%n”,BL);printf(“%n”,BL);5.若想通過以下輸入語句使a=,b=4,c=3,則輸入數(shù)據(jù)形式應(yīng)該是。int b,c;float a;scanf(“%f,%d,c=%d”,&a,&b,&c);6.當(dāng)輸入為56789 012345a72時(shí),執(zhí)行下列程序段后,變量i、j、x、y、c的值各是什么int i,j;float x,y;

15、char c;scanf(“%2d%f%f%c%d”,&i,&x,&y,&c,&j);三、編程題1.已知x=,y=7,z=2,計(jì)算y/3*x-2的值。2.輸入一個(gè)華氏溫度,要求輸出攝氏溫度(結(jié)果保留2位)。公式為c=5/9*(f-32)。3.從鍵盤輸入一個(gè)小寫字母,用大寫形式輸出該字母。4.把16進(jìn)制數(shù)12a以10進(jìn)制形式輸出。5.輸入兩個(gè)整數(shù),將其值交換。2.3.4 本節(jié)易錯(cuò)知識(shí)點(diǎn)本節(jié)闡述了printf()、scanf()、putchar()和getchar()的具體用法。對于scanf()的用法應(yīng)注意以下幾點(diǎn):1) 如果在字符控制串中除了格式說明符以

16、外還有其它字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。例如:scaf(“%d,%d”,&a,&b);輸入時(shí)用如下形式:5,6 此處5后面是逗號(hào),它與scanf()函數(shù)字符控制串中的逗號(hào)對應(yīng)。輸入時(shí)只能輸入逗號(hào),不可用”空格”替代。2)用%c格式輸入字符時(shí),空格、回車及轉(zhuǎn)義字符均作為有效字符輸入。例如: scanf(“%c%c%c”,&a,&b,&c);若要使變量a,b,c的值分別為A、B、C,就只能輸入ABC<回車>。當(dāng)使用多個(gè)scanf()函數(shù)連續(xù)給多個(gè)字符型變量賦值時(shí),注意輸入的方法。例如: scanf(“%c”,&c1);

17、scanf(“%c”,&c2);如果要使得c1的值為a,c2的值為b,則正確輸入方法為:ab<回車>,而不是a<回車>b<回車>。3) 遇到滿足最大字段寬度或非法輸入時(shí)認(rèn)為結(jié)束,如:”%2d”,只取兩位數(shù)。如:scanf(“%d%c%f”,&a,&b,&c);若輸入:1234a則a的值1234,b的值a,c的值56。2.3.5 實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)名稱 順序結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.掌握數(shù)據(jù)的輸入輸出的方法,能正確使用有關(guān)格式轉(zhuǎn)換符;2.熟悉順序結(jié)構(gòu)程序中語句的執(zhí)行過程;3.掌握順序結(jié)構(gòu)程序的設(shè)計(jì)方法二、實(shí)驗(yàn)內(nèi)容與要求1.下列程序作

18、用是依次輸入2個(gè)整數(shù),計(jì)算并輸出這2個(gè)整數(shù)之差。 #include <> void main() float a,b,c; printf(“input a,b”n”); scanf(“%d,%d”,&a,&b); c=a-b; printf(“c=%dn”,c); 分析程序,若運(yùn)行時(shí)輸入: 100,60 <回車>后預(yù)期結(jié)果是多少 上機(jī)運(yùn)行該程序,查看程序運(yùn)行結(jié)果是否符合題目要求。如果不符合分析原因并修改程序,直至符合要求為止。2.按下列公式計(jì)算并輸出s的值,s=3/(a+b)2。有下列程序:#include <> void main() in

19、t a,b; float s; scanf(“%d,%d”,&a,&b); s=3 /(a+b)*(a+b); /*有兩個(gè)錯(cuò)誤*/printf(“s=%fn”,s); 根據(jù)題意修改上述程序,并進(jìn)行調(diào)試,直到正確為止。 在的基礎(chǔ)上,將scanf(“%d,%d”,&a,&b);改為scanf(“%d%d”,&a,&b);后再編譯、鏈接、運(yùn)行。3.分析下列程序,寫出預(yù)期結(jié)果,然后輸入調(diào)試,查看運(yùn)行結(jié)果與預(yù)期結(jié)果是否一致并分析其原因。#include ""void main() int a=-1;unsigned b=65534; p

20、rintf("%d,%o,%x,%un",a,a,a,a); printf("b=%d",b) ;4.編程并上機(jī)調(diào)試運(yùn)行1) 設(shè)圓半徑為r=,求圓周長和面積。要求用scanf函數(shù)輸入數(shù)據(jù),輸出時(shí)取小數(shù)點(diǎn)后兩位。2) 輸入一個(gè)3位十進(jìn)制整數(shù),分別輸出百位、十位以及個(gè)位上的數(shù)。3) 從鍵盤輸入一個(gè)帶2位的實(shí)數(shù),將其整數(shù)部分和小數(shù)部分分離后輸出。例如:輸入,輸出=321+。4) 用getchar函數(shù)讀入兩個(gè)字符,然后分別用putchar和printf函數(shù)輸出這兩字符。 選擇結(jié)構(gòu)程序設(shè)計(jì)2.4.1 要點(diǎn)導(dǎo)讀1.關(guān)系運(yùn)算符與關(guān)系表達(dá)式 關(guān)系運(yùn)算是邏輯運(yùn)算中比較簡單

21、的一種。它的實(shí)質(zhì)是兩個(gè)值之間的”比較運(yùn)算”,其結(jié)果只有兩種:”真”、”假”。因此關(guān)系表達(dá)式的運(yùn)算結(jié)果也只有兩種:”真”、”假”。C語言提供6種關(guān)系運(yùn)算符:>、<、>=、=和!=。在這里>、<、>=、優(yōu)先級(jí)相同,=和!=優(yōu)先級(jí)相同。前4種的優(yōu)先級(jí)高于后兩者。2.邏輯運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算符可以將多個(gè)關(guān)系表達(dá)式或邏輯量連接起來,構(gòu)成邏輯表達(dá)式。C語言里提供了3種邏輯運(yùn)算符:!、&&、|。不同邏輯運(yùn)算符進(jìn)行運(yùn)算所得的結(jié)果如下表:ab!a!ba&&ba|b真(非0)真(非0)假(0)假(0)真(1)真(1)真(非0)假(0)假(0

22、)真(1)假(0)真(1)假(0)真(非0)真(1)假(0)假(0)真(1)假(0)假(0)真(1)真(1)假(0)假(0)在C語言中,關(guān)系表達(dá)式與邏輯表達(dá)式的結(jié)果用數(shù)據(jù)值“1”表示真、“0”表示假。判斷一個(gè)表達(dá)式時(shí),非“0”即為真、“0”為假。語句的三種基本形式用if語句可以構(gòu)成選擇結(jié)構(gòu)。它判斷給定的條件是否滿足,以決定執(zhí)行某個(gè)分支程序段。C語言的if語句有三種基本的實(shí)現(xiàn)形式:if、if-else和if-else if形式。語句C語言提供了另一種用于多分支選擇的switch語句,其一般形式為: switch (表達(dá)式) case 常量表達(dá)式1:語句1 case常量表達(dá)式2:語句2case常量

23、表達(dá)式n:語句ndefault: 語句n+1 其表達(dá)式應(yīng)為整型、字符型、枚舉型表達(dá)式。它的語意是:計(jì)算表達(dá)式的值,并依次與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語句。如果表達(dá)式與所有的case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語句。2.4.2 經(jīng)典例題分析1.若有int i;則執(zhí)行語句i=4>3>2;后,i的值為。分析:這是一個(gè)關(guān)系表達(dá)式,在這個(gè)表達(dá)式中有>和=,可知>的優(yōu)先級(jí)高于=,且>的結(jié)合性是,所以,先判斷4>3,顯然是為真的,即表達(dá)式的值為1。再判斷1是否大于2,顯然不成立為假,即為0,然后把0

24、賦給i,所以i的值為0。答案:0。2.若變量c為char類型,下列選項(xiàng)中能正確判斷出c為數(shù)字字符的表達(dá)式是。A )0<=c<=9 B) c>=0&&c<=9 C) c>=0&&c<=9 D) c>=0&c<=9分析:在C語言中要表達(dá)a>b>c應(yīng)該這樣寫a>b&&b>c,因?yàn)閏為數(shù)字字符,應(yīng)在09之間,所以應(yīng)為:c>=0&&c<=9。答案:D。3.已知int x=1,y=2,z=3;則邏輯表達(dá)式x<y|+z運(yùn)算后,z的值是。分析:C語言

25、在計(jì)算邏輯表達(dá)式時(shí),如果在某一步已得到了整個(gè)表達(dá)式的結(jié)果,則后面的部分將不再計(jì)算。對于&&表達(dá)式,若已得到一個(gè)操作數(shù)為0,則后面的操作數(shù)不再計(jì)算。對于|表達(dá)式,若已得到一個(gè)操作數(shù)為1,則后面的操作數(shù)不再計(jì)算。本題中,1<2顯然為真即為1,所以+z不需要再運(yùn)算了,z的值沒改變,還是為3。答案:3。4.下列程序運(yùn)行的結(jié)果是:。#include <> void main()char c=d; if(m<c<=z) printf(“YES”); else printf(“NO”);分析:這是if-else形式,格式為:if(表達(dá)式) 語句1 else 語句

26、2其語義是:如果表達(dá)式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2。本題中,表達(dá)式m<c<=z 結(jié)果為真,所以執(zhí)行printf(“YES”);答案:YES。(表達(dá)式)語句,其中”表達(dá)式”。A) 必須是邏輯表達(dá)式 B) 必須是關(guān)系表達(dá)式C) 必須是邏輯表達(dá)式和關(guān)系表達(dá)式 D) 可以是任意合法的表達(dá)式分析:表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式,用于描述選擇結(jié)構(gòu)的條件,但也可以是其它類型的表達(dá)式,只要其合法,在其值非0時(shí)都視為真,所以其它表達(dá)式也可以做if語句的判斷條件。答案:D。6.下列程序運(yùn)行結(jié)果是:。#include <> void main()int a=1; if(a) p

27、rintf(“YES”); else printf(“NO”);分析:if(表達(dá)式)中的”表達(dá)式”可以是任意合法的,其實(shí)質(zhì)是判斷表達(dá)式是真還是假。本題a的值為1,if(a) printf(“YES”); else printf(“NO”);的含義是判斷a是否為真(非0),如果為真則輸出”YES”,否則輸出”NO”。答案:YES。語言對于嵌套的if語句規(guī)定else 總是匹配。A)與最外層的if B)與之前最近的且未配對的ifC)與之前最近的不帶else的if D)與最近的 之前的if分析:在C語言中,為了避免語句造成二義性,規(guī)定,else總是與它前面最近的未配對的if配對。答案:B。8.下列程序

28、運(yùn)行結(jié)果是:。#include <> void main() int x=1,y=2,z=3; if(x<y) if(y<z) printf(“%d”,+z); else printf(“%d”,+y); printf(“%dn”,x+);分析:由if-else匹配規(guī)則可知,else與if(y<z)配對,也就是說當(dāng)x<y成立時(shí),y<z不成立,執(zhí)行printf(“%d”,+y);y<z成立,則執(zhí)行printf(“%d”,+z);。因?yàn)閤=1,y=2,很顯然x<y成立,接著判斷y<z是否成立,很顯然是成立的,那么直接執(zhí)行printf(“%

29、dn”,+z);然后執(zhí)行printf(“%dn”,x+);。答案:41。9.若有定義:float x=;int a=1,b=3,c=2;則正確的switch語句是。A) switch(x) B) switch(int)x); case :printf(“*n”); case 1:printf(“*n”);case :printf(“*n”); case 2:printf(“*n”); C) switch(a+b) D) switch(a+b) case 1:printf(“*n”); case 1:printf(“*n”); case 2+1:printf(“*n”); case c:prin

30、tf(“*n”); 分析:C語言提供了另一種用于多分支選擇的switch語句,其一般形式為: switch (表達(dá)式) case常量表達(dá)式1:語句1 case常量表達(dá)式2:語句2case常量表達(dá)式n:語句ndefault: 語句n+1表達(dá)式一般應(yīng)為整型、字符型、枚舉型表達(dá)式。A選項(xiàng)中case后是浮點(diǎn)型,應(yīng)為一個(gè)整型、字符型或枚舉型常量表達(dá)式;B選項(xiàng)switch(int)x);中多了分號(hào),D選項(xiàng)case c:printf(“*n”);中c是一個(gè)變量,應(yīng)為一個(gè)常量表達(dá)式。答案:C。10.下列程序執(zhí)行后結(jié)果是。#include <> void main() int a=16,b=21,m

31、=0; switch(a%3) case 0: m+; break; case 1: m+; switch(b%2) default: m+; case 0: m+;break;printf(“%d”,m);分析:switch語句的意思為:計(jì)算表達(dá)式的值,并依次與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語句。如果表達(dá)式與所有的case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語句。break語句用于跳出switch語句。本題a%3值為1,執(zhí)行case 1:m+;以及后面的語句。b%2值為1,執(zhí)行default: m+;以及后面的語句。答案:3。2.

32、4.3 習(xí)題一、選擇題1.下列程序段運(yùn)行后結(jié)果是。 int a,b,c; a=1;b=2;c=3; if(a>b) c=a;b=c; printf(“a=%d,b=%d,c=%d”,a,b,c);A) a=1,b=3,c=3B) a=1,b=3,c=2C) a=1,b=2,c=3D) a=2,b=1,c=12.下列程序運(yùn)行后的結(jié)果是。#include <>void main() int a=1,b=2,c=3; if(a+=1&&(+b=3&&c+=3) printf(“%d,%d,%dn”,a,b,c);A) 1,2,3B) 2,3,5C)

33、2,2,3D) 2,3,43.與y=(x>01:x<0-1:0)的功能相同的if語句是。A) if(x>0) y=1; B) if(x) else if(x<0) y=-1; if(x>0) y=1; else y=0; else if(x<0) y=-1;C) y=-1; D) y=0; if(x) if(x>=0) if(x>0) y=1; if(x>0) y=-1;else if(x=0) y=0; else y=-1;else y=-1;4.有以下程序,執(zhí)行后結(jié)果是。#include <>void main() int

34、a=5,b=4,c=3,d=2; if(a>b>c) printf(“%dn”,d); else if(c-1)>=d)=1) printf(“%dn”,d+1); else printf(“%dn”,d+2);A) 2 B) 3 C) 4 D) 55.若有定義:float w; int a,b;char c;則合法的switch語句是。 A) switch(b)B) switch(a); case :printf(“*n”); case 1 printf(“*n”);case :printf(“*n”); case 2 printf(“*n”); C) switch(b)D

35、) switch(w) case 1:printf(“*n”); case 1:printf(“*n”); case 1+2:printf(“*n”); case c:printf(“*n”); 6.下列程序運(yùn)行后的結(jié)果是。#include <>void main() int x=1,a=0,b=0; switch(x) case 0:b+;case 1:a+;case 2:a+;b+;printf(“%d,%dn”,a,b);A) 2,1B) 1,1 C) 1,0 D) 2,2二、填空題1.能正確表述邏輯關(guān)系20<x<30或x<-100的C語言表達(dá)式是。2.設(shè)i

36、nt a=0,b=0,c=0;c=a+&&b+;則a,b,c的值分別是。3.若從鍵盤輸入58,則以下程序輸出結(jié)果是。#include <>void main() int a;scanf(“%d”,&a);if(a>50) printf(“%d”,a);if(a<=58) printf(“%d”,a);if(a>=58) printf(“%d”,a);4.下列程序運(yùn)行后的結(jié)果是 。#include<>void main() int x=10,y=20,t=0;if(x=y) t=x;x=y;y=t;printf(“%d,%dn”,

37、x,y);5. 當(dāng)int a=1,b=3,c=5,d=4;時(shí),執(zhí)行下列一段程序后,x的值:。 if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7; 6.下列程序運(yùn)行后的結(jié)果是 。#include <> void main() int x=1,y=0,a=1,b=0; switch(x) case 1:switch(y) case 0:a+; case 1:b+;break; case 2:a+;b+;break; printf(“a=%d,b=%dn”,a,b

38、);三、編程題1.要求輸入三個(gè)數(shù),輸出其中最大值。2.由鍵盤輸入3個(gè)數(shù),若輸入的這3個(gè)數(shù)可以構(gòu)成三角形,則計(jì)算以這3個(gè)數(shù)為邊長的三角形周長;如果不能,則輸出提示錯(cuò)誤信息。3.從鍵盤上輸入一個(gè)整數(shù)判斷其奇偶以及正負(fù)。4.判斷方程ax2+bx+c=0的根的個(gè)數(shù)。5.從鍵盤輸入表示年份的整數(shù),判斷是否為閏年。判斷閏年的方法是:能被400整除的年是閏年;或者凡是能被4整除但不能被100整除的年是閏年。2.4.4 本節(jié)易錯(cuò)知識(shí)點(diǎn)本節(jié)闡述了邏輯表達(dá)式、if、if-else、if-else和switch語句的具體用法。1.在邏輯表達(dá)式運(yùn)算中應(yīng)注意,如果在某一步已得到了整個(gè)表達(dá)式結(jié)果,則后面的部分將不再計(jì)算。

39、例如:c=b&&+a;如果這里b為0,那么+a將不再執(zhí)行,仍為原值。2.在if語句中,應(yīng)該注意if語句中的表達(dá)式可以為所有的合法的表達(dá)式。例如:int a=1;if(a=0) printf(“Yes”); else printf(“No”); 3.在if語句3種形式中,如果要想在滿足條件是執(zhí)行一組語句,必須使用括起來一個(gè)復(fù)合語句,但在后面不能加分號(hào)。4.在使用switch()語句時(shí)應(yīng)注意:在case后的各個(gè)常量表達(dá)式值都不能相同;case后允許有多個(gè)語句,可以不用 括起來;若每個(gè)分支后,都有break語句,則各case和default子句先后順序可以變動(dòng)而不影響程序結(jié)果;def

40、ault子句可以省略不用。2.4.5 實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)名稱 選擇結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.學(xué)會(huì)正確使用關(guān)系運(yùn)算符和關(guān)系表達(dá)式;2.學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式以及關(guān)系表達(dá)式等;3.熟練掌握if語句和switch語句;4.熟悉選擇結(jié)構(gòu)程序中的語句執(zhí)行過程,掌握選擇結(jié)構(gòu)程序設(shè)計(jì)的方法。二、實(shí)驗(yàn)內(nèi)容與要求1.編寫程序,判斷從鍵盤上輸入的一個(gè)字符,并按下列要求輸出。1) 若該字符是數(shù)字,輸出字符串”0-9”;2) 若該字符是大寫或者小寫字母,輸出字符串”A-z”;3) 若該字符是其他字母,輸出”!,”。#include <> void main() char c; scanf(“%c”

41、,&c); if( ) printf(“0-9n”); else if( ) printf(“A-z”); printf(“!,n”);完善上述源程序,對源程序進(jìn)行編譯、連接,運(yùn)行程序,并寫出結(jié)果。序號(hào)輸入數(shù)據(jù)預(yù)期結(jié)果運(yùn)行結(jié)果132G3#2. 編程并上機(jī)調(diào)試運(yùn)行1)給出一個(gè)不多于4位的正整數(shù),求它是幾位數(shù)2)給出一個(gè)百分制成績,要求輸出成績等級(jí)A、B、C、D、E。90分及以上為A, 8089為B,7079為C,6069為D,60以下為E。用switch語句來實(shí)現(xiàn)。3)輸入4個(gè)整數(shù),要求按從大到小順序輸出。4) 輸入3個(gè)整數(shù),將最大數(shù)與最小數(shù)交換。5) 輸入一個(gè)字符,如果是數(shù)字字符,把它

42、轉(zhuǎn)換成相對應(yīng)的數(shù)字并輸出;如果不是,則以帶符號(hào)的十進(jìn)制整數(shù)形式輸出。 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)2.5.1 要點(diǎn)導(dǎo)讀語句while語句一般形式為:while(表達(dá)式) 語句。它的執(zhí)行過程為:計(jì)算表達(dá)式的值,當(dāng)值為真,執(zhí)行循環(huán)體語句。其特點(diǎn)是:先判斷,后執(zhí)行。2. do-while語句do-while語句一般形式為:do 循環(huán)體語句 while(表達(dá)式);它的執(zhí)行過程:先執(zhí)行循環(huán)體一次,再判斷表達(dá)式的值,若為真則繼續(xù)循環(huán),否則終止循環(huán)。語句for語句是C語言所提供的功能更強(qiáng),使用更廣泛的一種循環(huán)語句。for語句的一般形式是:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 其中表達(dá)式1一般是賦值表達(dá)式,用來給循環(huán)變

43、量賦初值。表達(dá)式2一般為關(guān)系表達(dá)式或邏輯表達(dá)式,表示循環(huán)條件,當(dāng)表達(dá)式2為真時(shí),則繼續(xù)循環(huán),否則循環(huán)結(jié)束。表達(dá)式3一般是賦值語句或自增(自減)語句,用來修改循環(huán)變量的值,表示循環(huán)變量的變化方式。4.轉(zhuǎn)移語句程序中的語句通??偸前错樞蚍较蚧虬凑Z句功能定義的方向執(zhí)行的。如果需要改變程序的正常流向,可以使用轉(zhuǎn)移語句。在C語言中提供了4種轉(zhuǎn)移語句:break,continue,return,goto5.循環(huán)嵌套一個(gè)循環(huán)語句的循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)語句,稱為循環(huán)的嵌套。循環(huán)的嵌套可以組成多重嵌套。2.5.2 經(jīng)典例題分析1.下列程序段中,while循環(huán)執(zhí)行的次數(shù)是。int k=0;while(k=

44、1) -k;A)無限次B)不能執(zhí)行C)一次也不執(zhí)行D)執(zhí)行1次分析:while語句一般形式為while(表達(dá)式) 語句,執(zhí)行過程為:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行循環(huán)體語句。其特點(diǎn)是先判斷,后執(zhí)行。本題k初始值為0,當(dāng)進(jìn)入循環(huán)的判斷表達(dá)式后k的值為1,為真。因?yàn)榕袛啾磉_(dá)式是一個(gè)賦值表達(dá)式,每次循環(huán)執(zhí)行完之后,k的值總是被賦值為1,判斷表達(dá)式一直為真,所以執(zhí)行無限次。答案:A。2.下列兩個(gè)程序輸入11后結(jié)果分別是。#include <> #include <> void main() void main() int sum=0,i; int sum=0,i; s

45、canf(“%d”,&i); scanf(“%d”,&i); while(i<=10) do sum=sum+i; sum=sum+i; i+; i+; while(i<=10); printf(“sum=%dn”,sum); printf(“sum=%dn”,sum); 分析:while(表達(dá)式) 語句。計(jì)算表達(dá)式的值,當(dāng)值為真時(shí),執(zhí)行循環(huán)體語句。do 循環(huán)體語句 while(表達(dá)式);先執(zhí)行循環(huán)體一次,在判斷表達(dá)式的值,若為真則繼續(xù)循環(huán),否則終止循環(huán)。答案:0,11。(表達(dá)式1;表達(dá)式3)可理解為。A) for(表達(dá)式1;0;表達(dá)式3)B) for(表達(dá)式1;1

46、;表達(dá)式3)C) for(表達(dá)式1;表達(dá)式1;表達(dá)式3)D) for(表達(dá)式1;表達(dá)式3;表達(dá)式3)分析:for語句的一般形式是for(表達(dá)式1;表達(dá)式2;表達(dá)式3)。其中表達(dá)式2一般為關(guān)系表達(dá)式或邏輯表達(dá)式,表示循環(huán)條件,當(dāng)表達(dá)式2為真時(shí),則繼續(xù)循環(huán),否則循環(huán)結(jié)束。題目中表達(dá)式2為空,也就是說本循環(huán)沒有設(shè)立條件,那么循環(huán)為無限循環(huán),所以表達(dá)式2一直為真(非0)。答案為B。4.下列程序的運(yùn)行結(jié)果是。#include <>void main( ) int c=0,k; for(k=1;k<3;k+) switch(k) default: c+=k; case 2: c+;bre

47、ak; case 4:c+=2;break;printf(“%dn”,c); 分析:for語句執(zhí)行過程是 先求表達(dá)式1。求解表達(dá)式2,若為真,則執(zhí)行for語句的內(nèi)嵌語句,然后執(zhí)行第3步。若為假,則結(jié)束循環(huán),轉(zhuǎn)到第5步。求解表達(dá)式3。轉(zhuǎn)回上面第2步。循環(huán)結(jié)束。當(dāng)k為1,switch( )語句執(zhí)行完畢后c為2;當(dāng)k為2,switch( )語句執(zhí)行完畢后c為3,當(dāng)k為3時(shí),循環(huán)結(jié)束,執(zhí)行printf(“%dn”,c);語句。答案:3。5.執(zhí)行以下程序后,輸出#的個(gè)數(shù)是。#include <> void main() int i,j;for(i=1;i<5;i+)for(j=2;j&

48、lt;=i;j+) putchar(#); 分析:一個(gè)循環(huán)語句的循環(huán)體內(nèi)包含一個(gè)完整的循環(huán)語句,稱為循環(huán)嵌套。循環(huán)的嵌套可以組成多重嵌套。各種循環(huán)語句之間可以相互嵌套。本題是一個(gè)二重循環(huán),執(zhí)行過程為:把1賦給i,判斷i是否小于5,如果小于,則執(zhí)行第二個(gè)for語句循環(huán),直到第二個(gè)for語句的循環(huán)結(jié)束,返回上一層執(zhí)行i的自加,判斷是否小于5,如果條件成立,則繼續(xù)執(zhí)行第二個(gè)for循環(huán)。直到第一個(gè)循環(huán)的i等于5時(shí),整個(gè)循環(huán)結(jié)束。所以輸出6個(gè)# 。答案:6。6.以下程序運(yùn)行后的輸出結(jié)果是。 #include <> void main() int i=0,s=0; for(;) if(i=3|i=5) continue; if(i=6) break; i+; s+=i;printf(“%dn”,s); A) 10 B) 13 C) 21 D) 程序進(jìn)入死循環(huán)分析:break語句用在switch語句或循環(huán)語句中,其作用是跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。continue語句只能用在循環(huán)體中,其作用是結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后的語句,轉(zhuǎn)入下一次循環(huán)。答案:D。2.5.3 習(xí)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論