C語言習習題:順序、選擇、循環_第1頁
C語言習習題:順序、選擇、循環_第2頁
C語言習習題:順序、選擇、循環_第3頁
C語言習習題:順序、選擇、循環_第4頁
C語言習習題:順序、選擇、循環_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

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

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

4、7個空格。答案: 732732 732 /*表示空格*/ 7323.已知char a=103;則語句printf(“%3d”,a);執行后的輸出結果為(表示空格)。A)67B)cC)67D)103分析:103是一個轉義字符,表示一個八進制數所代表的字符,轉換為十進制為67。printf(“%3d”,a);把103轉換為十進制數輸出,結果占3列。但67占2列,小于要求的3列,所以左補空格,即67。答案:C。4.下列程序運行后結果是 。#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格式符,用來輸出實數,以小數形式輸出,小數點后輸出6位。所以printf(“%fn”,a);輸出結果為。%是指,要輸出的數占m列,同時小數點保留n位(四舍五入),如果輸出的數大于m,則原樣輸出,同時小數點保留n位(四舍五入)。如果小于m,則左補空格,同時小數點保留n位(四舍五入)。printf(“%4.2fn”,a);輸出結果為。printf(“%3.1fn”,a);輸出結果為。e格式符,以規范化指數的形式輸出,所以printf(“%en”,a);+0

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

7、:printf函數的執行順序是由右到左,輸出順序是由左向右。答案:C。 7.下列程序運行時,若從鍵盤輸入:123<回車>45678<回車>后結果是 。#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函數;”地址表列”是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址。其scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4)的作用是:按照c1,c2,c3,c4在內存的地址將c1,c2,c3,c4的值存進去。由于”%c”表示按字符形式輸入數據,所以”回車符”作為一個字符,輸入有效。getchar( )函數的作用從終端輸入一個字符。putchar( )函數的作用是向終端輸出一個字符。所以c1=1、c2=2、c3=3、c4=回車,c5=4、c6=5。答案:1245。8.設有定義int a;float b;

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

10、D) a=1 b=2 c=3分析:scanf中如果在字符控制串中除了格式說明符以外還有其他字符,則在輸入數據時應輸入與這些相同的字符。答案:B。10.設有int x,y;scanf(“%d%*d%d”,&x,&y);從鍵盤輸入數據102030<回車>后,y的值是 。分析:%*d表示跳過。所以y的值是30。答案:30。2.3.3 習題一、選擇題1.設a、b、c為整型變量,若從鍵盤給a、b、c輸入數據,則正確的輸入語句是。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.下列程序執行后輸出的結果是。#include<>void main()int x=d;printf(“%c”,A+(x-a+1); A) GB) HC) ED) J3.設整型變量a,b的值均為8。printf(“%d,%d”,(a+,+b),b-);的輸出值是。A)8,8B)8,7C)9,9D)8,94.若有以下程序段,執行后輸出的結果是。int m=100,n=0100;printf(“%d,%on”,m,n);A) 100,100B

12、) 100,0100C) 100,4D) 100,045.有以下程序,其輸出結果是。#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.有以下程序,其輸出結果是。 #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.下列程序輸出的結果是 。#include <> void main() int x=7,y=5; printf(“y=%dn”, x%y); 2.下列程序輸出的結果是 。#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.下列程序輸出的結果是: 。#include <> void main() int k=11;printf(“k=%d,k

14、8=%o,k16=%xn”,k,k,k);4.下列程序輸出結果是:。#include <>#define BL “ main() printf(“%2sn”,BL); printf(“%15sn”,BL);printf(“%n”,BL);printf(“%n”,BL);5.若想通過以下輸入語句使a=,b=4,c=3,則輸入數據形式應該是。int b,c;float a;scanf(“%f,%d,c=%d”,&a,&b,&c);6.當輸入為56789 012345a72時,執行下列程序段后,變量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,計算y/3*x-2的值。2.輸入一個華氏溫度,要求輸出攝氏溫度(結果保留2位)。公式為c=5/9*(f-32)。3.從鍵盤輸入一個小寫字母,用大寫形式輸出該字母。4.把16進制數12a以10進制形式輸出。5.輸入兩個整數,將其值交換。2.3.4 本節易錯知識點本節闡述了printf()、scanf()、putchar()和getchar()的具體用法。對于scanf()的用法應注意以下幾點:1) 如果在字符控制串中除了格式說明符以

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

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

18、用是依次輸入2個整數,計算并輸出這2個整數之差。 #include <> void main() float a,b,c; printf(“input a,b”n”); scanf(“%d,%d”,&a,&b); c=a-b; printf(“c=%dn”,c); 分析程序,若運行時輸入: 100,60 <回車>后預期結果是多少 上機運行該程序,查看程序運行結果是否符合題目要求。如果不符合分析原因并修改程序,直至符合要求為止。2.按下列公式計算并輸出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); /*有兩個錯誤*/printf(“s=%fn”,s); 根據題意修改上述程序,并進行調試,直到正確為止。 在的基礎上,將scanf(“%d,%d”,&a,&b);改為scanf(“%d%d”,&a,&b);后再編譯、鏈接、運行。3.分析下列程序,寫出預期結果,然后輸入調試,查看運行結果與預期結果是否一致并分析其原因。#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.編程并上機調試運行1) 設圓半徑為r=,求圓周長和面積。要求用scanf函數輸入數據,輸出時取小數點后兩位。2) 輸入一個3位十進制整數,分別輸出百位、十位以及個位上的數。3) 從鍵盤輸入一個帶2位的實數,將其整數部分和小數部分分離后輸出。例如:輸入,輸出=321+。4) 用getchar函數讀入兩個字符,然后分別用putchar和printf函數輸出這兩字符。 選擇結構程序設計2.4.1 要點導讀1.關系運算符與關系表達式 關系運算是邏輯運算中比較簡單

21、的一種。它的實質是兩個值之間的”比較運算”,其結果只有兩種:”真”、”假”。因此關系表達式的運算結果也只有兩種:”真”、”假”。C語言提供6種關系運算符:>、<、>=、=和!=。在這里>、<、>=、優先級相同,=和!=優先級相同。前4種的優先級高于后兩者。2.邏輯運算符與邏輯表達式邏輯運算符可以將多個關系表達式或邏輯量連接起來,構成邏輯表達式。C語言里提供了3種邏輯運算符:!、&&、|。不同邏輯運算符進行運算所得的結果如下表: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語言中,關系表達式與邏輯表達式的結果用數據值“1”表示真、“0”表示假。判斷一個表達式時,非“0”即為真、“0”為假。語句的三種基本形式用if語句可以構成選擇結構。它判斷給定的條件是否滿足,以決定執行某個分支程序段。C語言的if語句有三種基本的實現形式:if、if-else和if-else if形式。語句C語言提供了另一種用于多分支選擇的switch語句,其一般形式為: switch (表達式) case 常量表達式1:語句1 case常量表達式2:語句2case常量

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

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

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

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

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

28、運行結果是:。#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匹配規則可知,else與if(y<z)配對,也就是說當x<y成立時,y<z不成立,執行printf(“%d”,+y);y<z成立,則執行printf(“%d”,+z);。因為x=1,y=2,很顯然x<y成立,接著判斷y<z是否成立,很顯然是成立的,那么直接執行printf(“%

29、dn”,+z);然后執行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 (表達式) case常量表達式1:語句1 case常量表達式2:語句2case常量表達式n:語句ndefault: 語句n+1表達式一般應為整型、字符型、枚舉型表達式。A選項中case后是浮點型,應為一個整型、字符型或枚舉型常量表達式;B選項switch(int)x);中多了分號,D選項case c:printf(“*n”);中c是一個變量,應為一個常量表達式。答案:C。10.下列程序執行后結果是。#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語句的意思為:計算表達式的值,并依次與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時,即執行其后的語句。如果表達式與所有的case后的常量表達式均不相同時,則執行default后的語句。break語句用于跳出switch語句。本題a%3值為1,執行case 1:m+;以及后面的語句。b%2值為1,執行default: m+;以及后面的語句。答案:3。2.

32、4.3 習題一、選擇題1.下列程序段運行后結果是。 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.下列程序運行后的結果是。#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.有以下程序,執行后結果是。#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.下列程序運行后的結果是。#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.能正確表述邏輯關系20<x<30或x<-100的C語言表達式是。2.設i

36、nt a=0,b=0,c=0;c=a+&&b+;則a,b,c的值分別是。3.若從鍵盤輸入58,則以下程序輸出結果是。#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.下列程序運行后的結果是 。#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. 當int a=1,b=3,c=5,d=4;時,執行下列一段程序后,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.下列程序運行后的結果是 。#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.要求輸入三個數,輸出其中最大值。2.由鍵盤輸入3個數,若輸入的這3個數可以構成三角形,則計算以這3個數為邊長的三角形周長;如果不能,則輸出提示錯誤信息。3.從鍵盤上輸入一個整數判斷其奇偶以及正負。4.判斷方程ax2+bx+c=0的根的個數。5.從鍵盤輸入表示年份的整數,判斷是否為閏年。判斷閏年的方法是:能被400整除的年是閏年;或者凡是能被4整除但不能被100整除的年是閏年。2.4.4 本節易錯知識點本節闡述了邏輯表達式、if、if-else、if-else和switch語句的具體用法。1.在邏輯表達式運算中應注意,如果在某一步已得到了整個表達式結果,則后面的部分將不再計算。

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

40、ault子句可以省略不用。2.4.5 實驗指導實驗名稱 選擇結構程序設計一、實驗目的1.學會正確使用關系運算符和關系表達式;2.學會正確使用邏輯運算符和邏輯表達式以及關系表達式等;3.熟練掌握if語句和switch語句;4.熟悉選擇結構程序中的語句執行過程,掌握選擇結構程序設計的方法。二、實驗內容與要求1.編寫程序,判斷從鍵盤上輸入的一個字符,并按下列要求輸出。1) 若該字符是數字,輸出字符串”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”);完善上述源程序,對源程序進行編譯、連接,運行程序,并寫出結果。序號輸入數據預期結果運行結果132G3#2. 編程并上機調試運行1)給出一個不多于4位的正整數,求它是幾位數2)給出一個百分制成績,要求輸出成績等級A、B、C、D、E。90分及以上為A, 8089為B,7079為C,6069為D,60以下為E。用switch語句來實現。3)輸入4個整數,要求按從大到小順序輸出。4) 輸入3個整數,將最大數與最小數交換。5) 輸入一個字符,如果是數字字符,把它

42、轉換成相對應的數字并輸出;如果不是,則以帶符號的十進制整數形式輸出。 循環結構程序設計2.5.1 要點導讀語句while語句一般形式為:while(表達式) 語句。它的執行過程為:計算表達式的值,當值為真,執行循環體語句。其特點是:先判斷,后執行。2. do-while語句do-while語句一般形式為:do 循環體語句 while(表達式);它的執行過程:先執行循環體一次,再判斷表達式的值,若為真則繼續循環,否則終止循環。語句for語句是C語言所提供的功能更強,使用更廣泛的一種循環語句。for語句的一般形式是:for(表達式1;表達式2;表達式3) 其中表達式1一般是賦值表達式,用來給循環變

43、量賦初值。表達式2一般為關系表達式或邏輯表達式,表示循環條件,當表達式2為真時,則繼續循環,否則循環結束。表達式3一般是賦值語句或自增(自減)語句,用來修改循環變量的值,表示循環變量的變化方式。4.轉移語句程序中的語句通常總是按順序方向或按語句功能定義的方向執行的。如果需要改變程序的正常流向,可以使用轉移語句。在C語言中提供了4種轉移語句:break,continue,return,goto5.循環嵌套一個循環語句的循環體內包含另一個完整的循環語句,稱為循環的嵌套。循環的嵌套可以組成多重嵌套。2.5.2 經典例題分析1.下列程序段中,while循環執行的次數是。int k=0;while(k=

44、1) -k;A)無限次B)不能執行C)一次也不執行D)執行1次分析:while語句一般形式為while(表達式) 語句,執行過程為:計算表達式的值,當值為真(非0)時,執行循環體語句。其特點是先判斷,后執行。本題k初始值為0,當進入循環的判斷表達式后k的值為1,為真。因為判斷表達式是一個賦值表達式,每次循環執行完之后,k的值總是被賦值為1,判斷表達式一直為真,所以執行無限次。答案:A。2.下列兩個程序輸入11后結果分別是。#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(表達式) 語句。計算表達式的值,當值為真時,執行循環體語句。do 循環體語句 while(表達式);先執行循環體一次,在判斷表達式的值,若為真則繼續循環,否則終止循環。答案:0,11。(表達式1;表達式3)可理解為。A) for(表達式1;0;表達式3)B) for(表達式1;1

46、;表達式3)C) for(表達式1;表達式1;表達式3)D) for(表達式1;表達式3;表達式3)分析:for語句的一般形式是for(表達式1;表達式2;表達式3)。其中表達式2一般為關系表達式或邏輯表達式,表示循環條件,當表達式2為真時,則繼續循環,否則循環結束。題目中表達式2為空,也就是說本循環沒有設立條件,那么循環為無限循環,所以表達式2一直為真(非0)。答案為B。4.下列程序的運行結果是。#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語句執行過程是 先求表達式1。求解表達式2,若為真,則執行for語句的內嵌語句,然后執行第3步。若為假,則結束循環,轉到第5步。求解表達式3。轉回上面第2步。循環結束。當k為1,switch( )語句執行完畢后c為2;當k為2,switch( )語句執行完畢后c為3,當k為3時,循環結束,執行printf(“%dn”,c);語句。答案:3。5.執行以下程序后,輸出#的個數是。#include <> void main() int i,j;for(i=1;i<5;i+)for(j=2;j&

48、lt;=i;j+) putchar(#); 分析:一個循環語句的循環體內包含一個完整的循環語句,稱為循環嵌套。循環的嵌套可以組成多重嵌套。各種循環語句之間可以相互嵌套。本題是一個二重循環,執行過程為:把1賦給i,判斷i是否小于5,如果小于,則執行第二個for語句循環,直到第二個for語句的循環結束,返回上一層執行i的自加,判斷是否小于5,如果條件成立,則繼續執行第二個for循環。直到第一個循環的i等于5時,整個循環結束。所以輸出6個# 。答案:6。6.以下程序運行后的輸出結果是。 #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) 程序進入死循環分析:break語句用在switch語句或循環語句中,其作用是跳出switch語句或跳出本層循環,轉去執行后面的程序。continue語句只能用在循環體中,其作用是結束本次循環,即不再執行循環體中continue語句之后的語句,轉入下一次循環。答案:D。2.5.3 習

溫馨提示

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

評論

0/150

提交評論