C語言練習地的題目帶詳解答案詳解_第1頁
C語言練習地的題目帶詳解答案詳解_第2頁
C語言練習地的題目帶詳解答案詳解_第3頁
C語言練習地的題目帶詳解答案詳解_第4頁
C語言練習地的題目帶詳解答案詳解_第5頁
免費預覽已結束,剩余45頁可下載查看

下載本文檔

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

文檔簡介

1、實用標準文檔目錄1、 選擇題22、 讀程序11根本輸入輸出及流程限制11數組24函數34指針39結構體443、 程序填空464、 編程題50精彩文案實用標準文檔一、 選擇題1. ( A )是構成C語言程序的根本單位.A、函數 B、過程 C 、子程序 D、子例程2. C語言程序從C 開始執行.A)程序中第一條可執行語句B)程序中第一個函數C)程序中的main函數D)包含文件中的第一個函數3、以下說法中正確的選項是(C ).A、C語言程序總是從第一個定義的函數開始執行B、在C語言程序中,要調用的函數必須在 main()函數中定義C、C語言程序總是從main()函數開始執行D、C語言程序中的main

2、()函數必須放在程序的開始局部4 .以下關于C語言的說法錯誤的選項是(B ).A) C程序的工作過程是編輯、編譯、連接、運行B) C語言不區分大小寫.C) C程序的三種根本結構是順序、選擇、循環D) C程序從main函數開始執行5 .以下正確的標識符是(C ).A.-a1 B.aiC.a2_i D.int t58題為相同類型題考點:標識符的命名規那么(1)只能由字母、數字、下劃線構成(2)數字不能作為標識符的開頭(3)關鍵字不能作為標識符選項A中的“-,選項B中“廠與“不滿足(1);選項D中的int為關鍵字,不滿足(3)6 .以下C語言用戶標識符中合法的是(B ).A)3ax B)x C)ca

3、se D)-e2 E)union選項A中的標識符以數字開頭不滿足(2);選項C, E均為為關鍵字,不滿足(3);選項D中 的“-不滿足(1);7 .以下四組選項中,正確的 C語言標識符是(C ).A) %x B ) a+bC) a123D ) 123精彩文案實用標準文檔選項A中的“ % ,選項B中“+不滿足(1);選項D中的標識符以數字開頭不滿足(2)8、以下四組字符串中都可以用作 C語言程序中的標識符的是(A )0A、print _3d db8 aBc B 、Iam one_half start$it 3paiC、str_1 Cpp pow while D 、Pxq My->book

4、line# His.age選項B中的“," $ ,選項D中“>“,“ #“,".,“-“不滿足(1);選項C中的while為關鍵 字,不滿足(3)9 .C語言中的簡單數據類型包括(D ).A、整型、實型、邏輯型 B 、整型、實型、邏輯型、字符型C、整型、字符型、邏輯型 D、整型、實型、字符型10 .在C語言程序中,表達式5%2的結果是C .A)2.5B)2C)1D)3詳見教材P5253.%為求余運算符,該運算符只能對整型數據進行運算.且符號與被模數相同.5%2=15% (-2)=1; (-5) %2=-1; (-5) % (-2) =-1 ;/為求商運算符,該運算符能

5、夠對整型、字符、浮點等類型的數據進行運算,5/2=211 .如果int a=3,b=4 ;那么條件表達式"a<b? a:b"的值是 A .A) 3 B) 4 C) 0 D) 1詳見教材P97.表達式1?表達式2:表達式3先計算表達式1,假設表達式1成立,那么選擇計算表達式2,并表達式2的值作為整個大表達式的值;假設表達式1不成立,那么選擇計算表達式3,并將表達式3的值作為整個大表達式的值此題中的a<b相當于表達式1, a相當于表達式2, b相當于表達式3.a為3, b為4.a<b表達式1成立,因此計算表達式 2,并將表達式2的值即a中的值,并作為整個表達式

6、的值, 因此整個表達式的值為 312 .假設 int x=2,y=3,z=4那么表達式 x<z?y:z 的結果是(B ).A)4B)3 C)2 D)0 E)113 . C語言中,關系表達式和邏輯表達式的值是( B ) oA) 0B) 0 或 1 C) 1 D)T'或F'14 .下面(D )表達式的值為4.A) 11/3B) 11.0/3C) (float)11/3D) (int)(11.0/3+0.5)1416題為同一類型詳見教材P5456.精彩文案實用標準文檔(1)相同數據類型的元素進行數學運算(+、-、*、/)得到結果還保持原數據類型.(2)不同數據類型的元素進行數學

7、運算,先要統一數據類型,統一的標準是低精度類型轉換為高精度的數據類型.選項A, 11與3為兩個整數,11/3結果的數據類型也應為整數,因此將 3.666666的小數局部全部 舍掉,僅保存整數,因此11/3=3.選項B, 11.0為實數,3為整數,因此首先要統一數據類型,將整型數據 3轉換為3.0,轉換后數 據類型統一為實型數據,選項 B變為11.0/3.0,結果的數據類型也應為實型數據,因此選項 B 11.0 /3=3.666666選項C,先將整數11強制類型轉換,轉換為實型11.0,因此選項C變為11.0/3 ,其后計算過程、 結果與選項B同選項D,首先計算11.0/3 ,其計算過程、結果與

8、選項B同,得到3.666666 ;再計算 3.666666+0.5=4.166666 ,最后將4.166666強制類型轉換為整型,即將其小數局部全部舍掉,結果 為415 .設整型變量a=2,那么執行以下語句后,浮點型變量 b的值不為0.5的是(B )A.b=1.0/aB.b=(float)(1/a)C.b=1/(float)a D.b=1/(a*1.0)16 .假設 “int n; float f=13.8;,那么執行 “ n=(int)f%3 " 后,n 的值是(A)A.1B.4C.4.333333D.4.6(int)f表示將f中的值強制類型轉換為整型,即將13.8的小數局部舍掉,

9、轉換為13;然后計算13%3結果為1,再將結果賦給變量n,因此n的值為117 .以下對一維數組a的正確說明是: DA) char a (10);B) int a;C)int k =5, ak ;D) char a3='a' , ' b' , ' c' ;詳見教材P143144, 一維數組的定義、初始化類型符數組名常量表達式類型符是指數組中數組元素的類型;數組名要符合標識符命名規那么;常量表達式是指數組的長度(數組中包含元素的個數),其值只能是整數,不可以是變量,而且從 1開始計數.選項A,常量表達式只能放在中括號中選項B,只有在對數組初始化(即賦

10、值)白時候才可以省略數組的長度,B中并未對a進行初始化.選項C,常量表達式不能為變量.18 .以下能對一維數組a進行初始化的語句是:( C )A. int a5=(0,1,2,3,4,) B. int a(5)=C. int a3=0,1,2D. int a5=10*1詳見教材P145, 一維數組的定義、初始化精彩文案實用標準文檔選項B,D,常量表達式只能放在中括號中選項A,數組可以看做是假設干個相同數據類型元素的有序集合,因此以集合的形式對其初始化,使用對其初始化,選項A用了.19 .在C語言中對一維整型數組的正確定義為D 0Aint a10; Bint n=10,an;Cint n;an;

11、D#define N 10int aN;20、:int a10; 那么對a數組元素的正確引用是 D .A、a10 B 、a3.5 C 、a5 D、a0詳見教材P144,數組元素的引用數組名下標引用數組元素時,中的下標為邏輯地址下標,只能為整數,可以為變量,且從 0開始計數 int a10表示定義了一個包含10個整型數據的數組a,數組元素的邏輯地址下標范圍為 09,即a0表示組中第1個元素;a1 表示組中第2個元素;a2 表示組中第3個元素;.;a9 表示組中第10個元素.選項A,超過了數組a的邏輯地址下標范圍;選項B,邏輯地址下標只能為整數選項C,邏輯地址下標只能放在中21 .假設有以下數組說

12、明,那么i=10;aai元素數值是C int a12=1,4,7,10,2,5,8,11,3,6,9,12;A.10B.9C.6D.5先算aai 內層的ai,由于i=10,因此ai即a10.a10對應下面數組中的元素為9.因此aai即為a9a9對應下面數組中的元素為6.因此a9即為622 .假設有說明:int a3=1,2,3,4,5,6,7;那么數組a的第一維的大小為:B A. 2 B. 3 C. 4 D. 無確定值5 7 D 3 6 9二維數組的一維大小,即指二維數組的行數,在此題中,按行對二維數組賦值,因此內層有幾個大 括號,數組就有幾行23 .對二維數組的正確定義是C 詳見教材P149

13、152,二維數組的定義、初始化精彩文案實用標準文檔類型符 數組名常量表達式常量表達式二維數組可以看做是矩陣類型符是指數組中數組元素的類型; 數組名要符合標識符命名規那么;第一個常量表達式是指數組的 行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變量,而且從 1 開始計數.一維數組初始化時可以省略數組長度二維數組初始化時可以省略行數,但不能省略列數選項A,B,都省略了列數選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的口中A.int a =1,2,3,4,5.6; B.int a2 =1,2,3,4,5.6);C.int a 3=1,2,3,4,5,

14、6;D.int a2,3=1,2,3,4,5,6;24 .int a34;那么對數組元素引用正確的選項是CA)a24 B)a1,3C)a20D)a(2)(1)詳見教材P150,數組元素的引用數組名下標下標引用數組元素時,中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數第一個下標表示行邏輯地址下標,第二個下標表示列邏輯地址下標.此題圖示詳見P149圖6.7因此a的行邏輯地址范圍02; a的列邏輯地址范圍03;選項A,列邏輯地址下標超過范圍選項B,D,的引用形式不正確.25 .C語言中函數返回值的類型是由A 決定的.A)函數定義時指定的類型B) return 語句中的表達式類型C)調

15、用該函數時的實參的數據類型D)形參的數據類型26 .在C語言中,函數的數據類型是指(A )A函數返回值的數據類型B.函數形參的數據類型C調用該函數時的實參的數據類型D.任意指定的數據類型27 .在函數調用時,以下說法正確的選項是( B )A.函數調用后必須帶回返回值B.實際參數和形式參數可以同名C.函數間的數據傳遞不可以使用全局變量D.主調函數和被調函數總是在同一個文件里28 .在C語言中,表示靜態存儲類別的關鍵字是:(C )精彩文案實用標準文檔A) auto B) registerC) static D) extern29 .未指定存儲類別的變量,其隱含的存儲類別為( A )0A)auto

16、B)static C)extern D)register30 .假設有以下說明語句:struct student int num;char name;float score;stu;那么下面的表達不正確的選項是:(D)A. struct是結構體類型的關鍵字B. struct student是用戶定義的結構體類型C. num, score 都是結構體成員名D. stu是用戶定義的結構體類型名31 .假設有以下說明語句:struct date int year;int month;int day;brithday;那么下面的表達不正確的選項是C .A) struct是聲明結構體類型時用的關鍵字B)

17、 struct date是用戶定義的結構體類型名C) brithday 是用戶定義的結構體類型名D) year,day 都是結構體成員名32 .以下對結構變量stul中成員age的非法引用是Bstruct student int age ;int num ;stu1,*p ;p=&stu1;A) stu1.age B) student.age C) p->age D) (*p).age33 .設有如下定義:struck sk int a;精彩文案實用標準文檔float b;data;int *p;假設要使P指向data中的a域,正確的賦值語句是CA) p=&a; B) p

18、=data.a; C) p=&data.a ; D)*p=data.a;34 .設有以下說明語句:typedef struct stu int a;float b; stutype;那么下面表達中錯誤的選項是(D ).A、struct是結構類型的關鍵字B、struct stu是用戶定義的結構類型C、a和b都是結構成員名D> stutype是用戶定義的結構體變量名35 . 語句int *p;說明了 C .A)p是指向一維數組的指針B)p是指向函數的指針,該函數返回一 int型數據C)p是指向int型數據的指針 指針的定義教材P223D)p是函數名,該函數返回一指向int型數據的指針

19、36 .以下不正確的定義是(A ).A. int *p=&i,i;B.int *p,i;C. int i,*p=&i;D.int i,*p;選項A先定義一個整型指針變量p,然后將變量i的地址賦給p.然而此時還未定義變量i因此 編譯器無法獲得變量i的地址.(A與C比照,選項C先定義變量i,那么在內存中為i分配空間,因 此i在內存空間的地址就可以確定了;然后再定義 p,此時可以為p賦i的地址,C正確)37 .假設有說明:int n=2,*p=&n,*q=p,那么以下非法的賦值語句是:(D )A) p=q B ) *p=*q C ) n=*q D ) p=np,q同為整型指針

20、變量,二者里面僅能存放整型變量的地址.選項A, q中為地址,因此可將此地址賦給 p選項B, *p表示p所指向對象n的內容,即一個整數;*q表示q所指向對象的內容,由于在定義 q 時為其初始化,將p中n的地址給q,因此p中存放n的地址,*q表示q所指向對象n的內容.因 此*p=*q相當于n=n;選項C, n=*q 等價于n=n;選項D, p中只能存放地址,不能將n中的整數值賦給p38 .有語句:int a10,; 那么 B 是對指針變量p的正確定義和初始化.精彩文案實用標準文檔A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;選項A,

21、 a是數組名,不是指針變量名,因此不可用 *標注數組名a選項C, a是數組名,數組名就是地址,無需再用地址符號.而且在定義指針變量p時,應在變量名前加*,標明p是指針變量選項D, a是數組名,數組名就是地址,無需再用地址符號.39 .假設有說明語句“ int a5,*p=a;",那么對數組元素的正確引用是(C).A.ap B.paC.*(p+2)D.p+2首先定義一個整型數組a, a的長度為5,然后定義一個指針變量p,并同時對p進行初始化,將數組a的地址賦給p.因此此時p中存放的數組a的首地址,即數組中第一個元素 a0的地址.對于數組元素下標的引用(詳見p144), 一般形式 數組名

22、下標其中下標為邏輯地址下標,從0開始計數,方括號中的下標可以是變量,可以是表達式,但結果一定要是整數.選項A, p中存放的是地址,不是整數,不能做數組元素的下標選項B, a是數組名,數組名就是地址,不是整數,不能做數組元素的下標選項C,(重點! !詳見p231234) p+2表示指向同一數組中的下兩個元素的地址,當前 p指 向a0,那么p+2表示a2的地址,因此*(p+2)表示a2的內容40 .有如下程序int a10=1,2,3,4,5,6,7,8,9,10,*P=a;那么數值為9的表達式是 BA) *P+9 B) *(P+8) C) *P+=9 D) P+8(重點! !詳見 p231234

23、)首先定義一個整型數組a, a的長度為5,然后定義一個指針變量 P,并同時對P進行初始化,將數組a的地址賦給P.因此此時P中存放的數組a的首地址,即數組中第一個元素 a0的地址.數組中9對應白是a8,選項B, P+8表示數組中后8個元素的地址,即a8的地址.*(P+8) 那么表示該地址內所存放的內容,即 a8的值.選項A, *P表示P所指向對象的內容,止匕時 P指向a0, *P 即a0的值1. *P+9=1+9=10選項C,*P表示P所指向對象的內容,此時P指向a0, *P即a0的值.因此*P+=9即*P =*P+9, 等價于 a0=a0+9.選項D, P+8表示數組中后8個元素的地址,即a8

24、的地址,而非a8中的值.41 .在C語言中,以 D 作為字符串結束標志A)' n' B) '' C) '0' D) ' 0'42 .以下數據中屬于“字符串常量的是( A )0A. "a"B.ABC C.'abc0' D. 'a'假設干個字符構成字符串在C語言中,用單引號標識字符;用雙引號標識字符串選項B, C,分別用和標識字符串精彩文案實用標準文檔選項D,標識字符.43 .char x="hello", y='h','e',&#

25、39;a','b','e',那么關于兩個數組長度的正確描述是B .A相同 Bx大于y Cx 小于y D以上答案都不對C語言中,字符串后面需要一個結束標志位'0',通常系統會自動添加.對一維數組初始化時可采用字符串的形式例如此題數組x,也可采用字符集合的形式例如此題數組y o在以字符串形式初始化時,數組x不盡要存儲字符串中的字符,還要存儲字符串后的結束 標志位,因此數組x的長度為6;在以字符集合形式初始化時,數組 y,僅存儲集合中的元素,因 此數組y長度為5精彩文案實用標準文檔讀程序根本輸入輸出及流程限制1.#include <std

26、io.h>main() int a=1,b=3,c=5;if (c=a+b)printf("yes'n");elseprintf("non");運行結果為:no詳見教材p89選擇結構詳見教材p91關系符號詳見附錄D p378符號的優先級=表示判斷符號兩邊的值是否相等;=表示將符號右邊的值賦給左邊的變量此題考點是選擇結構3種根本形式的第二種選擇結構三種一般形式中的“語句皆為復合語句,復合語句要用 括起來,只有當復合語句中只包括一條語句時可以省略 ,此題即如此,因此兩個printf操作沒有加 假設 c=a+b 成立,那么執行 printf(&q

27、uot;yes'n");否那么(即c=a+b不成立),執行printf("non");十的優先級高于=,因此先算a+b,值為4,表達式5=4不成立,因此執行printf("non"); 即輸出 字符串no2.#include <stdio.h>main() int a=12, b= -34, c=56, min=0;min=a;if(min>b)min=b;if(min>c)min=c;printf("min=%d", min);精彩文案實用標準文檔)運行結果為:min=-34詳見教材p89選

28、擇結構此題考點是選擇結構3種根本形式的第一種一共包含了兩個選擇結構(兩個if語句)定義變量,并賦值 此時a=12, b= -34, c=56, min=0將a中值拷貝,賦給 min,覆蓋了 min中的0,此時min中的值被更新為12.假設min>b成立,那么執行min=b;假設min>c成立,那么執行min=c;輸出min中的值12大于-34,第一個if語句的表達式成立,因此執行 min=b;執行后min中的值被更新為-34.-34小于56,第二個if語句的表達式不成立,因此不執行min=c;最后輸出min中的值,為-34.3.#include <stdio.h>mai

29、n() int x=2,y= -1,z=5; if(x<y)if(y<0)z=0; elsez=z+1;printf("dn",z);)運行結果為:5遇到選擇結構,首先要明確條件表達式成立時執行哪些操作.此題中,第一個 if語句,其后的復 合語句沒有大括號 ),說明復合語句中只包含一條語句,進而省略了 .內層的if.else 是選擇結構的第二種根本形式,在結構上視為一條語句.因此內層的 if.else作為第一個if語句的復合語句.假設表達式x<y成立,那么繼續判斷假設y<0,那么執行z=0;否那么(即y>=0),執行z=z+1;輸出z2>

30、-1 ,表達式x<y不成立,因此不執行內層的if后.進而z中的值沒有被改變 輸出z中的值為54.#include <stdio.h> main() float a,b,c,t;精彩文案實用標準文檔a=3;b=7;c=1;if(a>b)t=a;a=b;b=t;if(a>c)t=a;a=c;c=t;if(b>c)%為求余運算t=b;b=c;c=t;printf("%5.2f,%5.2f,%5.2f',a,b,c);運行結果為:1.00, 3.00, 7.00詳見教材p72數據的輸出形式此題包含了 3個if語句,每個if語句后的 都不可省略,由于

31、每個 中都包含了多條語句假設表達式a>b成立,那么執行t=a;a=b;b=t;假設表達式a>c成立,那么執行t=a;a=c;c=t;假設表達式b>c成立,那么執行t=b;b=c;c=t;輸出a,b,c中的值,要求輸出的每個數據寬度為 5個空格,小數局部保存2位,數據右對齊 3小于7,因此表達式a>b不成立,因此不執行t=a;a=b;b=t;3大于1,因此表達式a>c成立,那么執行t=a;a=b;b=t;.第一句,將a中的3拷貝,粘貼到t中; 第二句,將c中的1拷貝,粘貼到a中,覆蓋掉先前的3;第三句.將t中的3拷貝到c中,覆蓋 掉c中先前的1.執行完復合語句后實現

32、了 a,c元素的值的互換,a為1, c為3, t為3,.7大于c中的3,因此b>c成立,執行那么執行t=b;b=c;c=t;,過程同上,執行后b為3, c為7, t為7 此時輸出a,b,c中的值為1.00, 2.00, 7.005.#include < stdio .h >main () float c=3.0 , d=4.0;if ( c>d ) c=5.0;elseif ( c=d ) c=6.0;else c=7.0;printf (".1fn " ,c );運行結果為:7.0此題為if.else.語句的嵌套,第二if.else. 作為第一個i

33、f.else. 語句else局部的復合語句.精彩文案實用標準文檔假設表達式c>d成立,那么執行c=5.0;否那么(表達式c>d不成立)假設表達式c=d成立,那么執行c=6.0;否那么,執行c=7.0;輸出c中的值3.0小于4.0 ,因此表達式c>d不成立,執行第二個if - else - o3.0不等于4.0 ,因此表達式c=d不成立,執行c=7.0 ,將7.0賦給c,覆蓋掉c中的3.0 ,止匕時c 中的值為7.0輸出此時的c中的值6.#include <stdio.h>main() int m;scanf("%d", &m);if (

34、m >= 0) if (m%2 = 0) printf("%d is a positive evenn", m);elseprintf("%d is a positive oddn", m);else if (m % 2 = 0) printf("%d is a negative evenn", m);else printf("%d is a negative oddn", m);假設鍵入9,那么運行結果為:-9 is a negative odd7.#include <stdio.h>main(

35、) int num=0 ;while(num<=2) num+ ; printf("%dn",num) ; 運行結果為:123詳見教材p115循環結構當循環條件num<=2成立的時候,執行循環體 num+; printf("%dn",num) ; 中的語句.循環初值num為0;循環條件numv二城立第1次循環:執行num+;即將num中的值加1,執行后num為1;精彩文案實用標準文檔執行printf("%dn",num);在屏幕上輸出num中的值,即輸出1,之后換行此時num中的值為1,循環條件num<=2£

36、;立第2此循環:執行num+;即將num中的值加1,執行后num為2;執行printf("%dn",num);在屏幕上輸出num中的值,即輸出2,之后換行此時num中的值為2,循環條件num<=2立第3此循環:執行num+;即將num中的值加1,執行后num為3;執行printf("%dn",num);在屏幕上輸出num中的值,即輸出3,之后換行此時num中的值為3,循環條件num<=2成立,結束循環.8.#include <stdio.h>main() int sum=10,n=1;while(n<3) sum=sum-n

37、; n+; printf("d,%d ,n,sum);運行結果為:3,7當循環條件n<3成立的時候,執行循環體sum=sum-n; n+; 中的語句.循環初值sum為10,n為1;循環條件n<3成立第1次循環:執行sum=sum-n=10-1=9執行n+,即將n中的值加1,執行后n為2;此時n中的值為2, sum中的值為9,循環條件n<3成立,繼續執行循環第2次循環:執行sum=sum-n=9-2=7執行n+,即將n中的值加1,執行后n為3;輸出此時n,sum中的值,即為3,7.需要注意,在printf("d,%d ,n,sum);中要求輸出的數據彼此間用

38、逗號間隔,因此結果的兩個數據間一定要有逗號9.#include <stdio.h>main() int num,c;scanf("%d",&num);do c=num%10; printf("%d",c); while(num/=10)>0); printf("n");從鍵盤輸入23,那么運行結果為:32精彩文案實用標準文檔詳見教材p117循環結構;p60復合的賦值運算符do while( 表達式);先無條件執行循環體,再判斷循環條件.注意 while (表達式)后有分號 定義整型變量num c;為num賦一

39、個整型值;直到循環條件(num/=10)>0不成立;執行c=num%10; printf("%d",c); 輸出換行 為num賦值23第1次執行循環體執行 c=num%10=23%10=3;執行 printf("%d",c); 輸出 3判斷循環條件 num/=10 等價于 num=num/10;因此 num=23/10=2, 2 大于 0,因此循環條件(num/=10)>0成立,繼續執行循環體.執行完第 1次循環時,num為2, c為3第2次執行循環體執行 c=2%10=2;執行 printf("%d",c); 再輸出 2

40、判斷循環條件num=2/10=0,0等于0,因此循環條件(num/=10)>0不成立.結束循環10#include <stdio.h>main() int s=0,a=5,n;scanf("%d",&n);do s+=1; a=a-2; while(a!=n);printf("%d , %dn",s,a);假設輸入的值1,運行結果為:2,1詳見教材p117循環結構;p60復合的賦值運算符執行 s+=1; a=a-2; 直到循環條件a!=n不成立;為n賦值1,s為0, a為5第1次執行循環體執行s+=1;等價于s=s+1=0+1執

41、行 a=a-2; a=5-2=3判斷循環條件,3不等于1,因此循環條件a!=n成立,繼續執行循環體.執行完第1次循環時,s為1, a為3第2次執行循環體執行 s+=1;等價于 s=s+1=1+1=2執行 a=a-2; a=3-2=1判斷循環條件,1等于1,因此循環條件a!=n不成立,結束循環.精彩文案實用標準文檔執行完第2次循環時,s為2, a為1輸出此時s,a中的值,結果為2,111.#include "stdio.h"main()char c;c=getchar();while(c!='?') putchar(c); c=getchar(); 如果從鍵盤

42、輸入 abcde? fgh (回車)運行結果為:abcde12.#include <stdio.h>main() char c;while(c=getchar()!= ' $') if( 'A' <=c&&c<= 'Z' ) putchar(c);else if('a' <=c&&c<= 'z' ) putchar(c-32); 當輸入為ab*AB%cd#CDt,運行結果為:ABABCDCD13.#include <stdio.h>ma

43、in() int x, y =0;for(x=1;x<=10;x+) if(y>=10)break;y=y+x;printf( "d %d,y,x);運行結果為:10 5詳見教材p120 for語句詳見教材 p126128 break , continue 語句for( 表達式1;表達式2;表達式3)(1)先求解表達式1(2)求解表達式2,假設其值為真,執行循環體,然后執行(3).假設為假,那么結束循環,轉到(5)精彩文案實用標準文檔3求解表達式3 轉回上面2繼續執行5循環結束,執行for語句下面的一個語句 break ,跳出循環體;continue,結束本次循環第i次循

44、環,繼續執行下一次循環第i+1次循 環 此題 表達式1為x=1,表達式2 循環條件為x<=10,表達式3為x+ 初值x為1, y為0,循環條件即表達式2 x<=10成立,進入循環體第1次循環執行if語句.0小于10, if語句的條件表達式不成立,不執行 break;執行 y=y+x; y=0+1=1轉向表達式3,執行x+, x=x+1=1+1=2.循環條件x<=10成立,進入第2次循環第2次循環執行if語句.1小于10, if語句的條件表達式不成立,不執行 break;執行 y=y+x; y=1+2=3轉向表達式3,執行x+, x=x+1=2+1=3.循環條件x<=10

45、成立,進入第3次循環第3次循環執行if語句.3小于10, if語句的條件表達式不成立,不執行 break;執行 y=y+x; y=3+3=6轉向表達式3,執行x+, x=x+1=3+1=4.循環條件x<=10成立,進入第4次循環第4次循環執行if語句.6小于10, if語句的條件表達式不成立,不執行 break;執行 y=y+x; y=6+4=10轉向表達表3,向行x+, x=x+1=4+1=5 .循環條件x<=10成立,進入第5次循環 第5次循環執行if語句.10等于10, if語句的條件表達式成立,執行 break ,跳出循環 從break跳出至for語句的下一條語句.執行 p

46、rintf "d %d,y,x;輸出當前的y與x.結果為10 514.#include<stdio.h> main() char ch;ch=getchar();switch(ch)"C J A );"C , ' B' ); break; case'A' : printf(case ' B' : printf(精彩文案實用標準文檔default: printf("sn" ," other " ); )當從鍵盤輸入字母A時,運行結果為:AB詳見教材p103, swit

47、ch語句switch (表達式) case 常量1 :語句1case 常量2 :語句2!IIIcase 常量n :語句ndefault :語句 n+1其中表達式,常量1,常量n都為整型或字符型case相當于給出執行程序的入口和起始位置,假設找到匹配的常量,那么從此處開始往下執行程序, 不再匹配常量,直至遇到 break或switch結束此題過程:首先從鍵盤接收一個字符'A'并將其放在變量ch中.執行switch語句.Switch后面的條件表達式為ch,因此表達式的值即為字符A'.用字符A' 依次與下面的case中的常量匹配.與第1個case后的常量匹配,那么從其

48、后的語句開始往下執行程序(在執行過程中不再進行匹配.) 因此先執行printf( "C , ' A'),屏幕上輸出A;再往下28續執行printf( "C , ' B'),屏幕 上輸出B;再繼續執行break, 此時跳出switch語句.15.#include <stdio.h>main() int a=1,b=0;scanf("d ,&a);switch(a) case 1: b=1; break ;case 2: b=2 ; break ;default : b=10; printf("%d &qu

49、ot;, b) ;假設鍵盤輸入5,運行結果為:10此題過程:首先用scanf函數為變量a賦值為5.執行switch語句.switch后面的條件表達式為a,因此表達式的值即為5.用5依次與下面case 中的常量匹配.沒有找到匹配的常量,因此兩個 case后的語句都不執行.執行 default后面的語 句b=10;將10賦給變量bo輸出變量b,結果為10精彩文案實用標準文檔16.#include <stdio.h>main()_ char grade= ' C switch(grade)case'A':printf(“90-100n ");case&#

50、39;B':printf(“80-90n );caseC:printf(“70-80n );case'D':printf(“60-70n );break;case'E':printf(“<60n");default : printf(“ error!n ");運行結果為:70-8060-70此題過程:首先從鍵盤接收一個字符'C'并將其放在變量grade中.執行switch語句.switch后面的條件表達式為grade,因此表達式的值即為字符'C .用字符 C'依次與下面的case中的常量匹配.與第

51、3個case后的常量匹配,那么從其后的語句開始往下執行程序在執行過程中不再進行匹配. 因此先執行printf “70-80n ";,屏幕上輸出70-80,并換行;再往下繼續執行printf “60-70n , 屏幕上輸出60-70 ,并換行;再繼續執行break,此時跳出switch語句.17.#include <stdio.h> main() int y=9;for(;y>0;y-) if(y%3=0),-y); printf(%d 運行結果為:852詳見教材p53,自增自減符號此題表達式1被省略,表達式2 循環條件為y>0,表達式3為y-初值y為9,循環條

52、件即表達式2 y>0成立,進入循環體第1次循環執行if語句.9%3=0 if語句的條件表達式成立,執行 printf%d ",-y,即y先自減1精彩文案實用標準文檔變為8,然后在輸出,因此屏幕上輸出 8轉向表達式3,執行y-, y=y-1=8-1=7.循環條件y>0成立,進入第2次循環第2次循環執行if語句.7%3不為0, if語句的條件表達式不成立,不執行 printf%d ",-y轉向表達式3,執行y-, y=y-1=7-1=6.循環條件y>0成立,進入第3次循環第3次循環執行if語句.6%3=0 if語句的條件表達式成立,執行 printf%d &q

53、uot;,-y,即y先自減1變為5,然后在輸出,因此屏幕上輸出 5轉向表達式3,執行y-, y=y-1=5-1=4.循環條件y>0成立,進入第4次循環第4次循環執行if語句.4%3不為0, if語句的條件表達式不成立,不執行 printf%d ",-y轉向表達式3,執行y-, y=4-1=3.循環條件y>0成立,進入第5次循環第5次循環執行if語句.3%3=0 if語句的條件表達式成立,執行 printf%d ",-y,即y先自減1變為2,然后在輸出,因此屏幕上輸出 2轉向表達式3,執行y-, y=y-1=2-1=1.循環條件y>0成立,進入第5次循環第6

54、次循環執行if語句.1%3不為0, if語句的條件表達式不成立,不執行 printf%d ",-y轉向表達式3,執行y-, y=1-1=0.循環條件y>0不成立,循環結束.18.#include <stdio.h>main() int i,sum=0; i=1;do sum=sum+i; i+; while(i<=10); printf("d ,sum);運行結果為:5519.#include <stdio.h>#define N 4 main() int i;int x1=1,x2=2;printf("n");for

55、(i=1;i<=N;i+) printf("%4d%4d",x1,x2);精彩文案實用標準文檔if(i%2=0) printf("n");x1=x1+x2;x2=x2+x1;)運行結果為:1 2 3 5 8 13 21 34此題 首先為整型變量賦初值x1=1,x2=2表達式1為i=1 ,表達式2 (循環條件)為i<=N即i<=4 ,表達式3為i+循環變量初值i為1,循環條件(即表達式2) i<=4成立,進入第1次循環第1次循環執行printf("%4d%4d",x1,x2);因此屏幕上輸出1 2執行if語句.1

56、%2不為0, if語句的條件表達式不成立,不執行 printf("n");執行x1=x1+x2=1+2=3;此時x1中的值已變為3執行 x2=x2+x1=2+3=S轉向表達式3,執行i+, i 為2.循環條件i<=4成立,進入第2次循環第2次循環執行printf("%4d%4d",x1,x2);因此屏幕上輸出3 5執行if語句.2%2=0 if語句的條件表達式成立,執行 printf("n"); 換行執行x1=x1+x2=3+5=8;止匕時x1中的值已變為8執行 x2=x2+x1=5+8=13轉向表達式3,執行i+, i 為3.

57、循環條件i<=4成立,進入第3次循環第3次循環執行printf("%4d%4d",x1,x2);因此屏幕上輸出8 13執行if語句.3%2不為0, if語句的條件表達式不成立,不執行 printf("n");執行x1=x1+x2=8+13=21;止匕時x1中的值已變為21執行 x2=x2+x1=21+13=34轉向表達式3,執行i+, i 為4.循環條件i<=4成立,進入第4次循環第2次循環執行printf("%4d%4d",x1,x2);因此屏幕上輸出21 34執行if語句.4%2=0 if語句的條件表達式成立,執行 printf("n"); 換行執行x1=x1+x2=21+34=55此時x1中的值已變為55執行 x2=x2+x1=34+55=89轉向表達式3,執

溫馨提示

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

評論

0/150

提交評論