2022年C語言考試題庫及答案_第1頁
2022年C語言考試題庫及答案_第2頁
2022年C語言考試題庫及答案_第3頁
2022年C語言考試題庫及答案_第4頁
2022年C語言考試題庫及答案_第5頁
已閱讀5頁,還剩37頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、2022年C語言考試題庫及答案姓名 成績 溫馨提示:同學們,經過培訓學習,你一定積累了很多知識,現在請認真、仔細地完成這張試題吧。加油!一單項選擇題1. 在C語言中,以 D 作為字符串結束標志A)n B) C) 0 D)0 2.下列數據中屬于“字符串常量”的是(A )。A.“a” B.ABC C.abc0 D.a若干個字符構成字符串在C語言中,用單引號標識字符;用雙引號標識字符串選項B,C,分別用和標識字符串選項D,標識字符。3、以下說法中正確的是( C )。 A、C語言程序總是從第一個定義的函數開始執行 B、在C語言程序中,要調用的函數必須在main( )函數中定義 C、C語言程序總是從ma

2、in( )函數開始執行 D、C語言程序中的main( )函數必須放在程序的開始部分4.下列關于C語言的說法錯誤的是( B ) 。A) C程序的工作過程是編輯、編譯、連接、運行 B) C語言不區分大小寫。C) C程序的三種基本結構是順序、選擇、循環 D) C程序從main函數開始執行5.下列正確的標識符是(C)。A.-a1 B.ai C.a2_i D.int t6下列C語言用戶標識符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union7下列四組選項中,正確的C語言標識符是( C )。A) %x B) a+b C) a123 D) 1238、下列四組字符串中都可以用

3、作C語言程序中的標識符的是( A )。 A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My-book line# His.age 9.C語言中的簡單數據類型包括(D )。 A、整型、實型、邏輯型 B、整型、實型、邏輯型、字符型 C、整型、字符型、邏輯型 D、整型、實型、字符型10.在C語言程序中,表達式5%2的結果是 C 。 A)2.5 B)2 C)1 D)311如果int a=3,b=4;則條件表達式ab? a:b的值是_A_。A) 3 B) 4 C) 0 D) 112若int x=2

4、,y=3,z=4 則表達式xage D) (*p).age33.設有如下定義:struck sk int a;float b;data;int *p;若要使P指向data中的a域,正確的賦值語句是 C A) p=&a;B) p=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 語句i

5、nt *p;說明了 C 。A)p是指向一維數組的指針 B)p是指向函數的指針,該函數返回一int型數據C)p是指向int型數據的指針 / 指針的定義教材P223D)p是函數名,該函數返回一指向int型數據的指針36下列不正確的定義是(A )。int *p=&i,i; B.int *p,i;Cint i,*p=&i; D.int i,*p;37. 若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是: (D )A)p=q B)*p=*q C)n=*q D)p=n38有語句:int a10,;則 B 是對指針變量p的正確定義和初始化。A)int p=*a; B)int *p=a;

6、 C)int p=&a; D)int *p=&a;39.若有說明語句“int a5,*p=a;”,則對數組元素的正確引用是( C )。A.ap B.pa C.*(p+2) D.p+240. 有如下程序int a10=1,2,3,4,5,6,7,8,9,10,*P=a;則數值為9的表達式是 B A) *P+9 B) *(P+8) C) *P+=9 D) P+8讀程序基本輸入輸出及流程控制1.#include main() int a=1,b=3,c=5;if (c=a+b) printf(yesn);else printf(non);運行結果為:no詳見教材p89 選擇結構詳見教材p91關系符號

7、詳見附錄D p378符號的優先級=表示判斷符號兩邊的值是否相等;=表示將符號右邊的值賦給左邊的變量本題考點是選擇結構3種基本形式的第二種選擇結構三種一般形式中的“語句”皆為復合語句,復合語句要用 括起來,只有當復合語句中只包括一條語句時可以省略 ,此題即如此,因此兩個printf操作沒有加 若c=a+b成立,則執行printf(yesn);否則(即c=a+b不成立),執行printf(non);+的優先級高于=,因此先算a+b,值為4, 表達式5=4不成立,因此執行printf(non);即輸出字符串no2. #include main() int a=12, b= -34, c=56, mi

8、n=0;min=a; if(minb) min=b; if(minc) min=c;printf(min=%d, min);運行結果為: min=-34詳見教材p89 選擇結構本題考點是選擇結構3種基本形式的第一種一共包含了兩個選擇結構(兩個if語句)定義變量,并賦值 此時a=12, b= -34, c=56, min=0將a中值拷貝,賦給min,覆蓋了min中的0,此時min中的值被更新為12。若minb成立,則執行min=b;若minc成立,則執行min=c;輸出min中的值12大于-34,第一個if語句的表達式成立,因此執行min=b; 執行后min中的值被更新為-34.-34小于56,

9、第二個if語句的表達式不成立,因此不執行min=c;最后輸出min中的值,為-34.3.#include main() int x=2,y= -1,z=5; if(xy)if(y0) z=0;else z=z+1; printf(“%dn”,z); 運行結果為:5遇到選擇結構,首先要明確條件表達式成立時執行哪些操作。本題中,第一個if語句,其后的復合語句沒有大括號 ,說明復合語句中只包含一條語句,進而省略了 。內層的if.else.是選擇結構的第二種基本形式,在結構上視為一條語句。因此內層的if.else.作為第一個if語句的復合語句。若表達式xy成立,則繼續判斷 若y=0),執行z=z+1;

10、輸出z2-1,表達式xy不成立,因此不執行內層的ifelse.進而z中的值沒有被改變。輸出z中的值為54. #include main() float a,b,c,t;a=3;b=7;c=1;if(ab) t=a;a=b;b=t;if(ac) t=a;a=c;c=t;if(bc) 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語句后的 都不可省略,因為每個 中都包含了多條語句若表達式ab成立,則執行t=a;a=b;b=t;若表達式ac

11、成立,則執行t=a;a=c;c=t;若表達式bc成立,則執行t=b;b=c;c=t;輸出a,b,c中的值,要求輸出的每個數據寬度為5個空格,小數部分保留2位,數據右對齊3小于7,因此表達式ab不成立,因此不執行t=a;a=b;b=t;3大于1,因此表達式ac成立,則執行t=a;a=b;b=t;。第一句,將a中的3拷貝,粘貼到t中;第二句,將c中的1拷貝,粘貼到a中,覆蓋掉先前的3;第三句。將t中的3拷貝到c中,覆蓋掉c中先前的1. 執行完復合語句后實現了a,c元素的值的互換,a為1,c為3,t為3,。7大于c中的3,因此bc成立,執行則執行t=b;b=c;c=t;,過程同上,執行后b為3,c為

12、7,t為7此時輸出a,b,c中的值為1.00, 2.00, 7.005#include main ( ) float c=3.0 , d=4.0;if ( cd ) c=5.0;else if ( c=d ) c=6.0;else c=7.0; printf ( “%.1fn”,c ) ;運行結果為:7.0此題為if.else.語句的嵌套,第二if.else.作為第一個if.else.語句else部分的復合語句。若表達式cd成立,則執行c=5.0;否則(表達式cd不成立)若表達式c=d成立,則執行c=6.0;否則,執行c=7.0;輸出c中的值3.0小于4.0,因此表達式cd不成立,執行第二個i

13、felse。3.0不等于4.0,因此表達式c=d不成立,執行c=7.0,將7.0賦給c, 覆蓋掉c中的3.0,此時c中的值為7.0輸出此時的c中的值6.#include main()int m;scanf(%d, &m);if (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);若鍵

14、入9,則運行結果為: -9 is a negative odd7. #include main() int num=0;while(num=2) num+;printf(%dn,num);運行結果為:123詳見教材p115循環結構當循環條件num=2成立的時候,執行循環體 num+;printf(%dn,num);中的語句。循環初值num為0;循環條件num=2成立第1次循環:執行num+;即將num中的值加1,執行后num為1;執行printf(%dn,num);在屏幕上輸出num中的值,即輸出1,之后換行此時num中的值為1,循環條件num=2成立第2此循環:執行num+;即將num中的值

15、加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 main( ) int sum=10,n=1;while(n3) sum=sum-n; n+; printf(“%d,%d”,n,sum); 運行結果為:3,7當循環條件n3成立的時候,執行循環體sum=sum-n; n+; 中

16、的語句。循環初值sum為10,n為1;循環條件n3成立第1次循環:執行sum=sum-n=10-1=9;執行n+,即將n中的值加1,執行后n為2;此時n中的值為2,sum中的值為9,循環條件n3成立,繼續執行循環第2次循環:執行sum=sum-n=9-2=7;執行n+,即將n中的值加1,執行后n為3;輸出此時n,sum中的值,即為3,7。需要注意,在printf(“%d,%d”,n,sum); 中要求輸出的數據彼此間用逗號間隔,因此結果的兩個數據間一定要有逗號9.#include main() int num,c; scanf(%d,&num); do c=num%10; printf(%d

17、,c); while(num/=10)0); num=0printf(n); 從鍵盤輸入23,則運行結果為:3 2詳見教材p117循環結構;p60復合的賦值運算符do while(表達式);先無條件執行循環體,再判斷循環條件。注意while(表達式)后有分號定義整型變量num,c;為num賦一個整型值;執行c=num%10; printf(%d,c); 直到循環條件(num/=10)0不成立;輸出換行已知為num賦值23第1次執行循環體執行c=num%10=23%10=3;執行printf(%d,c);輸出3判斷循環條件 num/=10等價于num=num/10; 因此num=23/10=2,

18、 2大于0,因此循環條件(num/=10)0成立,繼續執行循環體。執行完第1次循環時,num為2,c為3第2次執行循環體執行c=2%10=2;執行printf(%d,c);再輸出2判斷循環條件num=2/10=0,0等于0,因此循環條件(num/=10)0不成立。結束循環10#include 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不成立

19、;已知為n賦值1,s為0,a為5第1次執行循環體執行s+=1;等價于s=s+1=0+1執行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

20、(); 如果從鍵盤輸入abcde?fgh(回車)運行結果為:abcde12#include 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#CD$時,運行結果為:ABABCDCD13. #include main() int x, y =0;for(x=1;x=10) break; y=y+x; printf(“%d %d”,y,x);運行結果為:10 5詳見教材p120 for語句詳見教材p126128 break,continu

21、e語句for(表達式1;表達式2;表達式3)(1) 先求解表達式1 (2) 求解表達式2,若其值為真,執行循環體,然后執行 (3). 若為假,則結束循環,轉到(5)(3) 求解表達式3 (4) 轉回上面 (2)繼續執行(5) 循環結束,執行for語句下面的一個語句 break,跳出循環體;continue,結束本次循環(第i次循環),繼續執行下一次循環(第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

22、+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成立,進入第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

23、+x; y=6+4=10轉向表達式3,執行x+, x=x+1=4+1=5。循環條件x=10成立,進入第5次循環第5次循環執行if語句。10等于10,if語句的條件表達式成立,執行break,跳出循環。從break跳出至for語句的下一條語句。執行printf(“%d %d”,y,x);輸出當前的y與x.結果為10 514.#include main( ) char ch; ch=getchar( ); switch(ch) case A : printf(“%c”,A); case B : printf(“%c”,B); break; default: printf(“%sn”,”other”

24、); 當從鍵盤輸入字母A時,運行結果為:AB詳見教材p103,switch語句switch(表達式) case 常量1 :語句1 case 常量2 :語句2 case 常量n :語句n default : 語句n+1 其中表達式,常量1,常量n都為整型或字符型case相當于給出執行程序的入口和起始位置,若找到匹配的常量,則從此處開始往下執行程序,不再匹配常量,直至遇到break或switch結束本題過程:首先從鍵盤接收一個字符A并將其放在變量ch中。執行switch語句。Switch后面的條件表達式為ch,因此表達式的值即為字符A. 用字符A依次與下面的 case中的常量匹配。與第1個case

25、后的常量匹配,則從其后的語句開始往下執行程序(在執行過程中不再進行匹配。)因此先執行printf(“%c”,A),屏幕上輸出A;再往下繼續執行printf(“%c”,B),屏幕上輸出B;再繼續執行break, 此時跳出switch語句。15. #include 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 , b);若鍵盤輸入5,運行結果為:10本題過程:首先用scanf函數為變量a賦值為5。執行switch語句。switch后

26、面的條件表達式為a,因此表達式的值即為5. 用5依次與下面 case中的常量匹配。沒有找到匹配的常量,因此兩個case后的語句都不執行。執行default后面的語句b=10;將10賦給變量b。輸出變量b,結果為1016. #include main()_ char grade=C; switch(grade) case A: printf(“90-100n”); case B: printf(“80-90n”);case C: printf(“70-80n”);case D: printf(“60-70n”); break;case E: printf(“60n”); default : pr

27、intf(“error!n”); 運行結果為:70-8060-70本題過程:首先從鍵盤接收一個字符C并將其放在變量grade中。執行switch語句。switch后面的條件表達式為grade,因此表達式的值即為字符C. 用字符C依次與下面的 case中的常量匹配。與第3個case后的常量匹配,則從其后的語句開始往下執行程序(在執行過程中不再進行匹配。)因此先執行printf(“70-80n”);,屏幕上輸出70-80,并換行;再往下繼續執行printf(“60-70n”),屏幕上輸出60-70,并換行;再繼續執行break, 此時跳出switch語句。17.#include main() in

28、t y=9; for(;y0;y- -)if(y%3=0) printf(%d”,- -y); 運行結果為:852詳見教材p53,自增自減符號此題 表達式1被省略,表達式2(循環條件)為y0,表達式3為y-初值y為9,循環條件(即表達式2)y0成立,進入循環體第1次循環執行if語句。9%3=0,if語句的條件表達式成立,執行printf(%d”,- -y),即y先自減1變為8,然后在輸出,因此屏幕上輸出8轉向表達式3,執行y-, y=y-1=8-1=7。循環條件y0成立,進入第2次循環第2次循環執行if語句。7%3不為0,if語句的條件表達式不成立,不執行printf(%d”,- -y)轉向表

29、達式3,執行y-, y=y-1=7-1=6。循環條件y0成立,進入第3次循環第3次循環執行if語句。6%3=0,if語句的條件表達式成立,執行printf(%d”,- -y),即y先自減1變為5,然后在輸出,因此屏幕上輸出5轉向表達式3,執行y-, y=y-1=5-1=4。循環條件y0成立,進入第4次循環第4次循環執行if語句。4%3不為0,if語句的條件表達式不成立,不執行printf(%d”,- -y)轉向表達式3,執行y-, y=4-1=3。循環條件y0成立,進入第5次循環第5次循環執行if語句。3%3=0,if語句的條件表達式成立,執行printf(%d”,- -y),即y先自減1變為

30、2,然后在輸出,因此屏幕上輸出2轉向表達式3,執行y-, y=y-1=2-1=1。循環條件y0成立,進入第5次循環第6次循環執行if語句。1%3不為0,if語句的條件表達式不成立,不執行printf(%d”,- -y)轉向表達式3,執行y-, y=1-1=0。循環條件y0不成立,循環結束。18. #include main() int i,sum=0; i=1;do sum=sum+i; i+; while(i=10);printf(“%d”,sum);運行結果為: 5519.#include #define N 4main() int i; int x1=1,x2=2;printf(n);f

31、or(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 58 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%2不為0,if語句的條件表達式不成立,不執行printf(n);執行x1=x1+x2=1+2=3;此時x1中的值已變為3執行x2=

32、x2+x1=2+3=5。轉向表達式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。循環條件i=4成立,進入第3次循環第3次循環執行printf(%4d%4d,x1,x2);因此屏幕上輸出8 13執行if語句。3%2不為0,if語句的條件表達式不成立,不執行printf(n);執行x1=x1+x2=8+13=

33、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,執行i+, i為5。循環條件i=4不成立,結束循環20#include main( ) int x, y; for(x=30, y=0; x=10, y10; x-, y+) x/=2

34、, y+=2; printf(“x=%d,y=%dn”,x,y);運行結果為:x=0,y=1221. #include #define N 4main( ) int i,j; for(i=1;i=N;i+) for(j=1;ji;j+) printf( ); printf(*); printf(n);運行結果為:* * *詳見教材P41符號常量用宏處理指令定義符號常量N為4,在編譯過程中,遇到N即視為整數4。外層for循環,表達式1為i=1,表達式2(循環條件)為i=N,表達式3為 i+內層for循環,表達式1為j=1,表達式2(循環條件)為ji, 表達式3為j+首先計算外層循環的表達式1,i

35、為1,使得循環條件i=4成立,進入外層for循環體外層for循環第1次 此時i為1內層循環j=1,使得循環條件ji不成立,因此不執行內層循環體(不輸出空格)執行printf(*);執行printf(n);換行至此外層循環體執行完,計算外層循環的表達式3,i+,此時i為2. 使得循環條件i=4成立,再次進入外層for循環體外層for循環第2次 此時i為2內層循環j=1,使得循環條件ji成立第1次執行內層循環體printf( );執行內層循環表達式3,j+為2,ji不成立,跳出內層循環執行printf(*);執行printf(n);換行至此外層循環體執行完,計算外層循環的表達式3,i+,此時i為3

36、. 使得循環條件i=4成立,進入外層for循環體外層for循環第3次 此時i為3內層循環j=1,使得循環條件ji成立第1次執行內層循環體printf( );執行內層循環表達式3,j+為2,ji成立,再次執行內層循環第2次執行內層循環體printf( );執行內層循環表達式3,j+為3,ji不成立,跳出內層循環執行printf(*);執行printf(n);換行至此外層循環體執行完,計算外層循環的表達式3,i+,此時i為4. 使得循環條件i=4成立,進入外層for循環體外層for循環第4次 此時i為4內層循環j=1,使得循環條件ji成立第1次執行內層循環體printf( );執行內層循環表達式3

37、,j+為2,ji成立,再次執行內層循環第2次執行內層循環體printf( );執行內層循環表達式3,j+為3,ji成立,再次執行內層循環第3次執行內層循環體printf( );執行內層循環表達式3,j+為4,ji不成立,跳出內層循環執行printf(*);執行printf(n);換行至此外層循環體執行完,計算外層循環的表達式3,i+,此時i為5. 使得循環條件i=4不成立,跳出外層for循環體數組1.#include main() int i, a10;for(i=9;i=0;i-) ai=10-i;printf(“%d%d%d”,a2,a5,a8);運行結果為:852詳見p143-146.

38、例題6.1一定看懂!首先定義整型變量i,整型數組a, a的長度為10,即a中包含10個整型元素(整型變量)執行for循環語句初值i=9, 使得循環條件i=0成立,執行循環體第1次循環執行ai=10-i 等價于a9=10-9=1計算表達式3,即i-,i為8,使得循環條件i=0成立,繼續執行循環體第2次循環執行ai=10-i 等價于a8=10-8=2計算表達式3,即i-,i為7,使得循環條件i=0成立,繼續執行循環體第3次循環執行ai=10-i 等價于a7=10-7=3計算表達式3,即i-,i為6,使得循環條件i=0成立,繼續執行循環體第4次循環執行ai=10-i 等價于a6=10-6=4計算表達

39、式3,即i-,i為5,使得循環條件i=0成立,繼續執行循環體第5次循環執行ai=10-i 等價于a5=10-5=5計算表達式3,即i-,i為4,使得循環條件i=0成立,繼續執行循環體第6次循環執行ai=10-i 等價于a4=10-4=6計算表達式3,即i-,i為3,使得循環條件i=0成立,繼續執行循環體第7次循環執行ai=10-i 等價于a3=10-3=7計算表達式3,即i-,i為2,使得循環條件i=0成立,繼續執行循環體第8次循環執行ai=10-i 等價于a2=10-2=8計算表達式3,即i-,i為1,使得循環條件i=0成立,繼續執行循環體第9次循環執行ai=10-i 等價于a1=10-1=

40、9計算表達式3,即i-,i為0,使得循環條件i=0成立,繼續執行循環體第10次循環執行ai=10-i 等價于a0=10-0=10計算表達式3,即i-,i為-1,使得循環條件i=0不成立,跳出循環體2. #include main() int i,a6; for (i=0; i=0 ; i-) printf(%3d,ai); 運行結果為:5 4 3 2 1 0首先定義整型變量i,整型數組a, a的長度為6,即a中包含6個整型元素(整型變量)執行第一個for循環語句初值i=0, 使得循環條件i6成立,執行循環體第1次循環執行ai= i 等價于a0=0計算表達式3,即i+,i為1,使得循環條件i6成

41、立,繼續執行循環體第2次循環執行ai= i 等價于a1=1計算表達式3,即i+,i為2,使得循環條件i6成立,繼續執行循環體第3次循環執行ai= i 等價于a2=2計算表達式3,即i+,i為3,使得循環條件i6成立,繼續執行循環體第4次循環執行ai= i 等價于a3=3計算表達式3,即i+,i為4,使得循環條件i6成立,繼續執行循環體第5次循環執行ai= i 等價于a4=4計算表達式3,即i+,i為5,使得循環條件i6成立,繼續執行循環體第6次循環執行ai= i 等價于a5=5計算表達式3,即i+,i為6,使得循環條件i=0成立,執行循環體第1次循環執行printf(%3d,ai); 即輸出a

42、5的值計算表達式3,即i-,i為4,使得循環條件i=0成立,繼續執行循環體第2次循環執行printf(%3d,ai); 即輸出a4的值計算表達式3,即i-,i為3,使得循環條件i=0成立,繼續執行循環體第3次循環執行printf(%3d,ai); 即輸出a3的值計算表達式3,即i-,i為2,使得循環條件i=0成立,繼續執行循環體第4次循環執行printf(%3d,ai); 即輸出a2的值計算表達式3,即i-,i為1,使得循環條件i=0成立,繼續執行循環體第5次循環執行printf(%3d,ai); 即輸出a1的值計算表達式3,即i-,i為0,使得循環條件i=0成立,繼續執行循環體第6次循環執行

43、printf(%3d,ai); 即輸出a0的值計算表達式3,即i-,i為6,使得循環條件i=0不成立,結束循環3. #include main( ) int i,k,a10,p3;k=5;for(i=0;i10;i+)ai=i;for(i=0;i3;i+)pi=ai*(i+1);for(i=0;i3;i+)k+=pi*2;printf(%dn,k);運行結果為:21首先定義整型變量i,k,整型數組a, a的長度為10,整型數組p, p的長度為3k初值為5第一個for循環語句為數組a進行初始化執行完第一個for語句后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7

44、,a8=8,a9=9 (循環過程略)第二個for循環語句為數組p進行初始化初值i=0, 使得循環條件i3成立,執行循環體第1次循環執行pi=ai*(i+1); 即p0=a0*(0+1)=a0=0計算表達式3,即i+,i為1,使得循環條件i3成立,繼續執行循環體第2次循環執行pi=ai*(i+1); 即p1=a1*(1+1)=a2=2計算表達式3,即i+,i為2,使得循環條件i3成立,繼續執行循環體第3次循環執行pi=ai*(i+1); 即p2=a2*(2+1)=a6=6計算表達式3,即i+,i為3,使得循環條件i3不成立,結束循環第三個for循環語句初值i=0, 使得循環條件i3成立,執行循環

45、體第1次循環執行k+=pi*2; 即k=5+p0*2=5+0=5計算表達式3,即i+,i為1,使得循環條件i3成立,繼續執行循環體第2次循環執行k+=pi*2; 即k=5+p1*2=5+2*2=9計算表達式3,即i+,i為2,使得循環條件i3成立,繼續執行循環體第1次循環執行k+=pi*2; 即k=9+p2*2=9+6*2=21計算表達式3,即i+,i為3,使得循環條件i3不成立,結束循環4.#include int m33=1,2,3;int n33=1,2 ,3;main( ) printf(“%d,”, m10+n00); printf(“%dn”,m01+n10);運行結果為:3,0詳

46、見教材P149152,圖6.7看懂!首先定義整型二維數組m,m為3行,3列的二維矩陣,并對其以行的形式初始化m00=1 m01=0 m12=0m10=2 m11=0 m22=0m20=3 m21=0 m22=0定義整型二維數組n,m為3行,3列的二維矩陣n00=1 n01=2 n12=3n10=0 n11=0 n22=0n20=0 n21=0 n22=0因此m10+n00=2+1=3m01+n10=0+0=05.#include main() int i;int x33=1,2,3,4,5,6,7,8,9; for (i=1; i3; i+)printf(%d ,xi3-i); 運行結果為:6

47、 8 首先按存儲順序為數組x初始化x00=1 x01=2 x02=3x10=4 x11=5 x12=6x20=7 x21=8 x22=9初值i=1, 使得循環條件i3成立,執行循環體第1次循環執行printf(%d ,xi3-i),打印出xi3-i,即x12的值計算表達式3,即i+,i為2,使得循環條件i3成立,繼續執行循環體第2次循環執行printf(%d ,xi3-i),打印出xi3-i,即x21的值計算表達式3,即i+,i為3,使得循環條件i3成立,結束循環 6.#include main( ) int n33, i, j;for(i=0;i3;i+ )for(j=0;j3;j+ )ni

48、j=i+j;printf(“%d ”, nij);運行結果為:0 1 21 2 32 3 4循環變量i為0, 循環條件 i3成立,執行循環體外層for第1次循環 相當于輸出第1行內層for循環j初值為0,循環條件j3成立,執行循環體內層for第1次循環執行nij=i+j;即n00=0+0=0;執行printf(“%d ”, nij);執行內層循環表達式3,j+,j為1,j3成立,繼續執行內層循環體內層for第2次循環執行nij=i+j;即n01=0+1=1;執行printf(“%d ”, nij);執行內層循環表達式3,j+,j為2,j3成立,繼續執行內層循環體內層for第3次循環執行nij=

49、i+j;即n02=0+2=2;執行printf(“%d ”, nij);執行內層循環表達式3,j+,j為3,j3不成立,結束內層循環執行printf(“n”);執行外層for語句的表達式3,i+,i為,1, i3成立,繼續執行外層循環體外層for第2次循環 相當于輸出第2行內層for循環j初值為0,循環條件j3成立,執行循環體內層for第1次循環執行nij=i+j;即n10=1+0=1;執行printf(“%d ”, nij);執行內層循環表達式3,j+,j為1,j3成立,繼續執行內層循環體內層for第2次循環執行nij=i+j;即n11=1+1=2;執行printf(“%d ”, nij);

50、執行內層循環表達式3,j+,j為2,j3成立,繼續執行內層循環體內層for第3次循環執行nij=i+j;即n12=1+2=3;執行printf(“%d ”, nij);執行內層循環表達式3,j+,j為3,j3不成立,結束內層循環執行printf(“n”);執行外層for語句的表達式3,i+,i為,1, i3成立,繼續執行外層循環體外層for第2次循環 相當于輸出第3行內層for循環j初值為0,循環條件j3成立,執行循環體內層for第1次循環執行nij=i+j;即n20=2+0=1;執行printf(“%d ”, nij);執行內層循環表達式3,j+,j為1,j3成立,繼續執行內層循環體內層fo

51、r第2次循環執行nij=i+j;即n21=2+1=2;執行printf(“%d ”, nij);執行內層循環表達式3,j+,j為2,j3成立,繼續執行內層循環體內層for第3次循環執行nij=i+j;即n22=2+2=3;執行內層循環表達式3,j+,j為3,j3不成立,結束內層循環執行printf(“n”);執行外層for語句的表達式3,i+,i為,3, i3不成立,結束外層循環7#include main()char diamond5=_,_,*,_,*,_,*,*,_,_,_,*,_,*,_,*,_,_,*;int i,j;for(i=0;i5;i+)for(j=0;j5;j+)print

52、f(“%c”,diamondij);printf(“n”);注:“_”代表一個空格。運行結果為:* * * * *8. #include main( ) int i, f10; f0=f1=1; for(i=2;i10;i+) fi=fi-2+fi-1; for(i=0;i10;i+) if(i%4=0) printf(“n”); printf(“%d ”,fi); 運行結果為:1 1 2 35 8 13 2134 559 #include “stdio.h” func(int b ) int j; for(j=0;j4;j+) bj=j; main( ) int a4, i; func(a)

53、; for(i=0; i4; i+) printf(“%2d”,ai); 運行結果為: 0 1 2 3詳見教材P194定義函數func函數頭:未定義函數的類型,則系統默認為int型。函數func的形參為整型數組名,即只接收整型數組地址。函數體:定義整型變量j循環變量初值(表達式1)j=0, 使得循環條件(表達式2)j4成立,執行循環體第1次循環執行bj=j; 即b0=0;執行循環變量自增(及表達式3) j+,j為1,使得j4成立,繼續執行循環體第2次循環b1=1;j+,j為2,使得j4成立,繼續執行循環體第3次循環b2=2;j+,j為3,使得j4成立,繼續執行循環體第4次循環b3=3;j+,j

54、為4,使得j4不成立,結束循環main函數:定義整型變量i和數組a,其長度為4,func(a);表示調用函數func,并以數組名a作為調用的實參(數組名在C語言中表示數組所在內存空間的首地址,在以數組名作為實參時,形參與實參公用存儲空間,因此對數組b的操作,即對數組a的操作。)10. #include main() float fun(float x); float ave,a3=4.5,2,4; ave=fun(a); printf(“ave=%7.2f”,ave); float fun(float x) int j;float aver=1; for (j=0;j3;j+)aver=xj*

55、aver; return(aver);運行結果為:ave= 36.0011.#include main()int a23=1,2,3,4,5,6;int b32,i,j;for(i=0;i=1;i+)for(j=0;j=2;j+) bji=aij;for(i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); 運行結果為: 1 4 2 5 3 612#include f(int b,int n)int i,r; r=1; for (i=0;i=n;i+) r=r*bi; return (r);main() int x,a=1,2,3,4,5,6,7,8,9;

56、x=f(a,3); printf(“%dn”,x);運行結果為: 24 13.#includestdio.hmain()int j,k; static int x44,y44;for(j=0;j4;j+) for(k=j;k4;k+) xjk=j+k;for(j=0;j4;j+) for(k=j;k4;k+) ykj=xjk;for(j=0;j4;j+) for(k=0;k4;k+) printf(%d,yjk);運行結果為:0,0,0,0,1,2,0,0,2,3,4,0,3,4,5,6函數1.#include int Sub(int a, int b)return (a- b);main()

57、int x, y, result = 0;scanf(%d,%d, &x,&y ); result = Sub(x,y ) ; printf(result = %dn,result);當從鍵盤輸入:6,3運行結果為:result =3 2. #include int min( int x, int y ) int m; if ( x y ) m = x;else m = y; return(m); main() int a=3,b=5,abmin ; abmin = min(a,b); printf(“min is %d”, abmin); 運行結果為:min is 53.#include f

58、unc(int x) x=10; printf(“%d, ”,x); main( ) int x=20; func(x); printf(“%d”, x); 運行結果為:10, 20在main函數中調用函數func,main函數將20作為實參穿給func,并轉向開始執行func.main()對應的內存 func()對應的內存 20 x 20 x func()執行x=10;,其內存中x變為10. 10 x func()執行printf(“%d, ”,x); 即輸出func函數對應內存中x的值,輸出的是10. 至此,func函數執行結束,返回main函數。main函數執行printf(“%d”,

59、x);此時輸出main函數對應內存中的x,即204.#include int m=4;int func(int x,int y) int m=1;return(x*y-m);main()int a=2,b=3;printf(%dn,m);printf(%dn,func(a,b)/m); 運行結果為:41整型變量m在函數外定義,因此m為全局變量,其作用于范圍為其定義位置開始,一直到整個程序結束。因此func與main函數都可以訪問m程序首先執行main函數執行printf(%dn,m); 即輸出m中的值4,并換行。執行printf(%dn,func(a,b)/m);即輸出表達式func(a,b)

60、/m的值,為了計算該表達式,需要調用函數func。此時main將a,b中的2和3值作為實參傳遞給func的x和y程序開始轉向執行func函數,此時func中的x為2,y為3執行int m=1; 此句定義了一個局部變量m并賦值為1 。m的作用域為其所在的復合語句,即func的函數體,因此在func的函數體重,有限訪問局部變量m。執行return(x*y-m); 即return(2*3-1);返回的是整數5.func函數返回至main函數中的被調用處main函數中func(a,b)的值為5,func(a,b)/m=5/4=1,注意,在main函數中訪問的m為全局變量m,此時main函數無法訪問fu

溫馨提示

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

評論

0/150

提交評論