最新C語言程序設(shè)計教程練習題解析資料_第1頁
最新C語言程序設(shè)計教程練習題解析資料_第2頁
最新C語言程序設(shè)計教程練習題解析資料_第3頁
最新C語言程序設(shè)計教程練習題解析資料_第4頁
最新C語言程序設(shè)計教程練習題解析資料_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精品文檔單選題1、關(guān)于 C 語言中的函數(shù),下列描述正確的是()A. 函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套B函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套C函數(shù)的定義和函數(shù)的嵌套均不可以嵌套D函數(shù)的定義和函數(shù)的調(diào)用均不可以嵌套答案:B解析:函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套2、定義一個函數(shù):exce(v1, v2), (v3,v4,v5),v6); 在該函數(shù)調(diào)用時,實參的個數(shù)為()個A.3B.4C.5D.6答案:A解析:(v1, v2),(v3,v4,v5)和v6 一共三個實參3、關(guān)于C語言中print()函數(shù)與scanf()函數(shù),下列描述中正確的是()A. printf() 函數(shù)可以

2、向任何地方輸出數(shù)據(jù)B. printf() 只向控制臺輸出數(shù)據(jù)C. sca nf()只能輸入英文字母和數(shù)字D. sca nf()函數(shù)可以識別輸入的空格答案: B解析: printf() 是向控制臺輸出的函數(shù)4、在C語言中,內(nèi)部函數(shù)需要添加的關(guān)鍵字是()A. externB. staticC. thisD. auto答案: B解析:在定義內(nèi)部函數(shù)時,需要在函數(shù)的返回值類型前面添加static關(guān)鍵字(又稱為靜態(tài)函數(shù))。5、當調(diào)用時,會調(diào)用內(nèi)部函數(shù)A. 當調(diào)用時,會調(diào)用內(nèi)部函數(shù)B. 當調(diào)用時,會調(diào)用外部函數(shù)C. 當調(diào)用時,會調(diào)用兩次,先調(diào)用內(nèi)部函數(shù)再調(diào)用外部函數(shù)D都不調(diào)用,會報錯答案: A解析:當內(nèi)部

3、函數(shù)與外部函數(shù)重名時,會優(yōu)先調(diào)用內(nèi)部函數(shù)6、 在C語言中,聲明外部函數(shù)需要添加的關(guān)鍵字是()A. externB. staticC. thisD. auto答案: A 解析:聲明外部函數(shù)的方式是在函數(shù)的返回值類型前面添加 extern 關(guān)鍵字7、關(guān)于C語言中的局部變量,下列描述中錯誤的是()A局部變量就是在函數(shù)內(nèi)部聲明的變量B. 局部變量只在函數(shù)內(nèi)部有效C局部變量只有當它所在的函數(shù)被調(diào)用時才會被使用D. 局部變量一旦被調(diào)用,其生存周期持續(xù)到程序結(jié)束答案: D解析:當函數(shù)調(diào)用結(jié)束時局部變量就會失去作用&關(guān)于C語言中的全局變量,下列描述中正確的是()A全局變量的作用域一定比局部變量的作用域

4、范圍大B靜態(tài)類別變量的生存周期貫穿于整個程序的運行期間C函數(shù)的形參都屬于全局變量D.未在定義語句中賦初值的auto變量和static變量的初值都是隨機值答案:B解析:選項 1 不對:如果程序中只有一個主函數(shù),則在整個程序運行中,局部變量都在起 作用;選項3不對:除了 C+的引用類型參數(shù),所有函數(shù)的形參都是局部變量;選項 4 不對: static 變量定義時就存儲地全局區(qū),初始化為0;9、 當全局變量與局部變量重名時,那么在調(diào)用時()A局部變量會被屏蔽B全局變量會被屏蔽C都不會調(diào)用,系統(tǒng)會報錯D會調(diào)用兩次,先調(diào)用局部變量,再調(diào)用全局變量答案: B解析:當局部變量與全局變量重名時,全局變量會被屏蔽

5、。10、 在C語言中,關(guān)于變量的作用域,下列描述中錯誤的是()A. 局部變量只在整個函數(shù)的運行周期中有效B. 全局變量的作用域為整個程序的運行周期C當全局變量與局部變量重名時,局部變量會屏蔽掉全局變量D全局變量會覆蓋掉所有與它重名的局部變量答案: D解析:當全局變量與局部變量重名時,全局變量會被屏蔽掉11、在C語言中,如果在一個函數(shù)的復(fù)合語句中定義了一個變量,則該變量()A. 只在該復(fù)合語句中有效,在該復(fù)合語句外無效B. 在該函數(shù)中任何位置都有效C在本程序的原文件范圍內(nèi)均有效D.此定義方法錯誤,其變量為非法變量答案: D解析: 1、 2 與 3 錯:函數(shù)復(fù)合語句中定義的變量在該復(fù)合語句中引用;

6、但如果函數(shù)含有該 變量,則在函數(shù)中可以引用該變量4對:在C+沖在復(fù)合語句中定義變量為合法,但在C語言中是非法的12、C 語言程序的基本單位是( )。A.程序行B語句C函數(shù)D字符答案:C解析:函數(shù)是 C語言程序的基本單位13、C語言中決定函數(shù)返回值的類型的是()。A. return 語句中的表達式類型B調(diào)用函數(shù)的主調(diào)函數(shù)類型C調(diào)用函數(shù)時臨時D定義函數(shù)時所指定的函數(shù)類型答案: D解析:函數(shù)的返回值取決于定義函數(shù)時指定的返回值類型14、 若有函數(shù)調(diào)用語句:fun(a+b, (x,y), fun(n+k,d,(a,b); 在此函數(shù)調(diào)用語句中實參的個數(shù)是( )。A. 3B. 4C. 5D. 6答案: A

7、解析:a+b返回一個值,(x,y)返回一個值,fun(n+k,d,(a,b)返回一個值。15、x、y、z被定義為int型變量,若從鍵盤給x、y、z輸入數(shù)據(jù),正確的輸入語句是()。A. input x,y,z;B. scanf("%d%d%d",&x,&y,&z);C. scanf("%d%d%d",x,y,z);D. read("%d%d%d",&x,&y,&z);答案: B解析:讀取鍵盤輸入的數(shù)據(jù)要用scanf()函數(shù),scanf()中的參數(shù)要傳入變量的地址16、 若變量已正確說明為

8、float類型,要通過語句 scanf("%f %f %f",&a,&b,&c);給a賦予10.0, b賦予22.0,c賦予33.0,不正確的輸入形式是()。A. 10 22 33B. 10.0,22.0,33.0C. 10.0 22.0 33.0D. 10; 22; 33答案: B解析:用scanf()讀取從鍵盤輸入的數(shù)據(jù)時,中間不能加逗號,要用空格隔開17、 若有定義: int x,y; char a,b,c; 并有以下輸入數(shù)據(jù)(此處 u 代表空格) : 1u2uAuBuC , 那么能給x賦整數(shù)1,給y賦整數(shù)2,給a賦字符A,給b賦字符B,給c賦

9、字符C的正確程 序段是( )。A. scanf("x=%d y=%d",&x,&y);a=getchar();b=getchar();c=getchar();B. scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();C. scanf("%d%d%c%c%c,&x,&y,&a,&b,&c);D. scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&

10、;a,&b,&b,&c,&c);答案: D解析:空格也會作為一個字符賦給字符變量。18、對嵌套子程序調(diào)用說法正確的是()。A外層子程序可以調(diào)用所有的內(nèi)層子程序B內(nèi)層子程序只可以調(diào)用包含本身的外層子程序,不可以隔層調(diào)用C. 外分程序必須能完全套住內(nèi)分程序D. 以上說法均不正確答案:C19、C語言中函數(shù)能否嵌套調(diào)用和遞歸調(diào)用?()A. 二者均不可B. 前者可,后者不可C. 前者不可,后者可D. 二者均可答案: D解析:兩者調(diào)用都可以20、C語言規(guī)定,程序中各函數(shù)之間()。A. 既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用B. 不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用C. 允許

11、直接遞歸調(diào)用不允許間接遞歸調(diào)用D. 不允許直接遞歸調(diào)用允許間接遞歸調(diào)用答案: A解析:各程序間既可以直接調(diào)用也可以間接調(diào)用。21 、有如下程序:long fib(int n)if (n>2)return fib(n-1)+fib(n-2);else return 2;void main()printf("%dn",fib(3); 該程序的輸出結(jié)果是( )。A. 2B. 4C. 6D. 8答案: B解析:向fib()函數(shù)傳入3時,返回fib(1)+fib(2)的值;向fib()函數(shù)傳入1和2時,都返回2, 所以fib(3)返回2+2=4。22、以下程序的輸出結(jié)果是()。

12、long fun(int n)long s;if (n=1 | n=2) s=2;else s=n-fun(n-1);return s;void main()printf("%ldn", fun(3);A. 1B. 2C. 3D. 4 答案: A解析:fun()函數(shù)傳入3時,返回3-fun(2) ;un()函數(shù)傳入2時,返回2。所以fun(3)返回3-2=1。23、在C語言中,函數(shù)的隱含存儲類別是()。A. autoB. staticC. externD. 無存儲類別答案: C解析:為簡化編程,C語言中允許在定義外部函數(shù)時省略關(guān)鍵字extern。24、 以下敘述中不正確的是

13、()。A. 在不同的函數(shù)中可以使用相同名字的變量B. 函數(shù)中的形式參數(shù)是局部變量C. 在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效D. 在一個函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效答案:D 解析:函數(shù)內(nèi)的復(fù)合語句中定義的變量僅僅在該復(fù)合語句中有效。25、 以下程序運行后,輸出結(jié)果是()。int func(int a, int b)static int m=0,i=2;i+=m+1; m=i+a+b;return m;void main()int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("

14、;%dn",p);A. 8,15B. 8,16C. 8,17D. 8,8答案: C解析:函數(shù)體內(nèi)的靜態(tài)局部變量不隨函數(shù)的調(diào)用結(jié)束而銷毀,而是一直存在。26、以下程序的輸出結(jié)果是()。int d=1;int fun(int p)static int d=5;d+=p;printf("%d ",d);return d;void main()int a=3;printf("%d n",fun(a+fun(d);A. 6 9 9B. 6 6 9C. 6 15 15D. 6 6 15答案: C解析:首先調(diào)用fun(d),將全局變量d=1帶入,此時fun(

15、)函數(shù)內(nèi)的靜態(tài)局部變量 d的值是 1, d+=p 后 d 的值是 6,輸出 d 的值,返回 d 的值;然后調(diào)用fun(a+6),將局部變量a=3帶入,此時fun()函數(shù)內(nèi)的靜態(tài)局部變量d的值是6,d+=p 后 d 賦值 15,輸出 d 的值,返回 d 的值。27、在C語言中,若需一變量只在本文件中所有函數(shù)使用,則該變量的存儲類別是()。A. externB. registerC. autoD. static答案: D解析: static 修飾全局變量時,表示該變量僅在本文件中可使用。28、 下列程序的輸出結(jié)果是()。int b=2;int func(int *a)b += *a;return

16、b;void main()int a=2, res=2;res += func(&a); printf("%dn",res);A. 4B. 6C. 8D. 10答案: B解析:func()函數(shù)中,對全局變量b自增a的值,func()函數(shù)返回4; res+=4, res賦值為6。29、請讀程序: void main() int a=1,b=2,c=3;+a;c+=+b;int b=4,c;c=b*3;a+=c;printf("first:%d,%d,%dn",a,b,c);a+=c;printf("Second:%d,%d,%dn&quo

17、t;,a,b,c); printf("third:%d,%d,%dn",a,b,c);該程序的輸出是( )A. first: 12,4,12 Second: 26,4,12 third: 4,3,6B. first: 14,4,12 Second: 26,12,12 third: 26,3,4C. first: 14,4,12 Second: 26,4,12 third: 26,3,6D. first: 14,4,12 Second: 26,6,12 third: 26,4,6答案: C解析:程序運行到第6行時,a=2, b=3,c=6;程序運行到第10行時,a=14,局部

18、變量b=4, c=12;程序運行到第13行時,a=26,局部變量b=4, c=12;程序運行到第15行時, a=26, b=3, c=6。30、以下程序運行后,輸出結(jié)果是( )。int d=1;int fun(int p)int d=5;d+=p+;printf("%d",d);int main()int a=3;fun(a);d+=a+;printf("%dn",d);A. 84B. 99C. 95D. 44答案: A解析: fun() 函數(shù)調(diào)用時代入局部變量 a 的值, fun() 函數(shù)體內(nèi)局部變量 d 自增 3,輸出 d 的 值,即8, fun()

19、函數(shù)返回8,此時全局變量d的值不變。d+=a+后,全局變量d自增 3,此時全局變量 d 的值是 4,輸出全局變量 d 的值。31、以下程序的輸出結(jié)果是()。int a, b;void fun()a=100; b=200;void main()int a=5, b=7;fun();printf("%d%d n",a,b);A.100200B.57C. 200100D. 75答案: B解析:fun()函數(shù)改變的是全局變量的值,printf()函數(shù)輸出的是局部變量的值,fun()函數(shù)不會改變局部變量 a、b 的值。多選題1、在調(diào)用外部函數(shù)時,下列描述中正確的是()(多選)A.只要

20、有函數(shù)名,就能調(diào)用外部函數(shù)B調(diào)用外部函數(shù)要包含外部函數(shù)所在的頭文件C. 外部函數(shù)與調(diào)用者定義在同一個源文件下D在聲明外部函數(shù)時,外部函數(shù)與原函數(shù)定義的返回值類型、函數(shù)名稱和參數(shù)列表必須一致答案: B, D解析:外部函數(shù)調(diào)用時要包含其所在的頭文件,當調(diào)用者聲明了外部函數(shù)的原型,也可以 不用包含頭文件判斷題1、局部變量就是在函數(shù)內(nèi)部聲明的變量。答案: true 解析:局部變量就是在函數(shù)內(nèi)部聲明的變量。2、局部變量只有當它所在的函數(shù)被調(diào)用時才會被使用,而當函數(shù)調(diào)用結(jié)束時局部變量就會 失去作用。答案: true 解析:局部變量只有當它所在的函數(shù)被調(diào)用時才會被使用,而當函數(shù)調(diào)用結(jié)束時局部變量 就會失去作

21、用。3、局部變量就是在函數(shù)內(nèi)部聲明的變量,它只在本函數(shù)內(nèi)有效。答案: true 解析:局部變量就是在函數(shù)內(nèi)部聲明的變量,它只在本函數(shù)內(nèi)有效,也就是說,只能在本 函數(shù)內(nèi)使用它。4、局部變量只有當它所在的函數(shù)被調(diào)用時才會被使用,當函數(shù)調(diào)用結(jié)束時局部變量還會一 直存在。答案: false 解析:局部變量只有當它所在的函數(shù)被調(diào)用時才會被使用,而當函數(shù)調(diào)用結(jié)束時局部變量 就會失去作用。簡答題1、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。void func(int a, int b)printf(" %d",a + b);void

22、 main()func(3,2); printf("n");答案: 5解析: fun() 是一個實現(xiàn)兩個數(shù)相加的函數(shù),在主函數(shù)中調(diào)用并傳入值,得到兩個數(shù)的和2、請閱讀下面的程序,在空白處填寫正確的代碼,將函數(shù)的結(jié)果返回給調(diào)用者。 int func(int a, int b)int sum = 0;sum = a + b;;void main()int sum = 0;= func(3,2);printf(" 兩個數(shù)相加的結(jié)果為 %d",sum);答案: return sum;sum ;解析: return sum;return 將函數(shù)結(jié)果返回sum ;

23、主函數(shù)中 sum 接收函數(shù)返回的值3、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。void main()int num = 100;printf(“ %d, %o,n” ,num,num,num);答案: 100 144 64解析: printf() 函數(shù)將十進制數(shù) 100 分別以十進制,八進制,十六進制形式輸出。4、請閱讀下面的程序,當用戶從鍵盤輸入hello world 時,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果能,請寫出運行結(jié)果。void main()char str256;scanf( “ %s” ,str);p

24、rintf(“n%”s,str);答案: hello解析:輸入hello world時,中間的空格對scanf()函數(shù)來說是終止符,后面的內(nèi)容無法讀取。5、請閱讀下面的程序,在空白處填寫正確的代碼,實現(xiàn)下列功能。 用戶從鍵盤輸入兩個整型數(shù)據(jù),將兩個數(shù)據(jù)相加輸出。void main()int a,b;Jprintf(“n%”d ,);答案: scanf( “%d%”d ,&a,&b);a + b;解析:鍵盤輸入數(shù)據(jù),用scanf()函數(shù);輸入兩個數(shù)據(jù)的和 a + b;6、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。int fu

25、nc2(int a, int b)int c;c = a * b % 3;return c;int func1(int a, int b)int c; a += a; b += b;c = func2(a, b); return c * c;void main()int x = 11, y = 19;printf("the final result is:%dn", func1(x, y);答案: 4解析:x = 11,y = 19傳入func1()函數(shù),在func1()函數(shù)中經(jīng)過運算變?yōu)?2 , 38,然后傳入給func2()函數(shù),返回運算結(jié)果2, func1()函數(shù)收到

26、返回值2以后再經(jīng)過運算返回給主調(diào) 用函數(shù)結(jié)果為 4。7、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。void func2(int a, int b)a = a + 10;b = a + 10;void func(int a, int b)a = func2();b = func2();void main()int x = 1, y = 10; func1(x,y);n” ,x, y);答案: x = 1, y = 10;解析:將實參傳遞給形參,只是復(fù)制了一份給 x,y 的值,參數(shù)在被調(diào)用函數(shù)內(nèi)部改變,不 影響其在調(diào)用函數(shù)中的值。8、請閱讀下

27、面的程序,在空白處填寫正確的代碼,實現(xiàn)下列功能。 用戶從鍵盤輸入四個數(shù),比較得出四個數(shù)中的最大值并輸出。int max2(int a, int b)if (a > b)return a;elsereturn b;int max4(int a, int b, int c, int d)int res;res = max2(a, b);res =;res = max2(res, d);void main()int a, b, c, d, max;printf(" 請輸入四個整數(shù): ");Jmax = max4(a, b, c, d); printf("max=%

28、d n", max);答案: max2(res,c);return res;scanf( “ %d%d%d%”d ,&a,&b,&c,&d);解析:在max4()函數(shù)中,res = max2(a,b)返回的是a,b中的最大值,這個最大值再與c進行比較,所以res = max2(res,c),返回的較大的值再與d作比較,再將比較得出的較大的值返回給主調(diào)用函數(shù),這個較大的值就是四個數(shù)中的最大值。9、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。int add(int n)if (n = 1)return

29、1;elsereturn n + add(n - 1);void main()int n = 5;int sum = add(5);printf( “結(jié)果為 :%dn ” ,sum);答案: 15解析: add() 函數(shù)進行遞歸調(diào)用,傳入的參數(shù)5,會一直遞減相加直到遞減至 1。10、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。void fun(int n)if (n>0)printf("%dt", n);fun(-n);void main()int a = 5;fun(a);答案: 5 4 3 2 1解析: fun

30、() 函數(shù)遞歸調(diào)用,每打印一次就自減再調(diào)用一次自己。11、請閱讀下面的程序,在空白處填寫正確的代碼,實現(xiàn)下列功能。用遞歸方法求出 n! 。int fac(int n)int t;if( )return 1;elset = ;return t;void main()int m, y;printf("Enter m : n");scanf("%d", &m);if (m<0)printf("Input data Error!n"); else y = fac(m); printf("n%d!= %d n"

31、, m, y);答案: (n = 1) | (n = 0)n*fac(n - 1)解析:實現(xiàn) n 的階乘,當 n =0 或者 n=1 時,階乘沒有意義,當 n>1 時,實現(xiàn)階乘,則為 n*fun(n-1);12、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。int x = 5;static void cude()x = x*x*x;void main()cude();printf("x = %dn", x);答案: 125解析:全局變量 X,當調(diào)用cude()內(nèi)部函數(shù)時,并沒有傳入?yún)?shù),沒有復(fù)制,所以X值的變化直接改

32、變了 x 本身的值13、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。first.c 文件int func(int a, int b)return a + b;second.c 文件static int func(int a, int b)return a -b;void main()int X = 5, y = 2;printf(“n%”d,func(5, 2);答案: 3解析:當內(nèi)部函數(shù)與外部函數(shù)重名時,會優(yōu)先調(diào)用內(nèi)部函數(shù)14、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。first.c

33、 源文件int func(int a, int b)return a + b;second.c 源文件extern int func(int a, int b);void main()int x = 5, y = 2;printf( “n%”d ,func(5, 2);答案: 7解析:在 second.c 中聲明了 int func(int a, int b); 函數(shù)原型,可以調(diào)用 first.c 中的函數(shù)。15、請閱讀下面的程序,在空白處填寫正確的代碼,實現(xiàn)下列功能。有一個外部函數(shù), 用戶輸入一個數(shù)字, 可以實現(xiàn)奇偶數(shù)的判斷。 實現(xiàn)在主函數(shù)中調(diào)用這個外 部函數(shù)。first.c 源文件void

34、 func(int num)if(num %2 = 0)printf( “這是一個偶數(shù) !n ” );second.c 源文件Jvoid main()int num;scanf( “ %d” ,&num);func(num);答案: extern void func(int num); 解析:調(diào)用外部函數(shù),可以包含函數(shù)所在的頭文件,也可以在本文件中聲明函數(shù)原型。16、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。void show()int x = 0;void main()printf("x 的值為: %dn",

35、 x);答案:不能運行解析:變量x為函數(shù)show()的局部變量,只在 show()函數(shù)范圍內(nèi)有效,在main()中無法調(diào)用。17、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。int show()int x = 0; return x;void main()int x = 10;show();printf("x 的值為: %dn", x);答案: x 的值為: 10解析:main()函數(shù)中的x是局部變量,不受 show()函數(shù)調(diào)用的影響。18、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能

36、,請寫出運行結(jié)果。int x = 10;void main()int x = 100;printf(“ %d” ,x);答案: 100 解析:當全局變量與局部變量重名時,全局變量會被屏蔽掉。19、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)果。int x = 2;void func(int x)x;void main()func(x);printf("%dn", x);答案: 2 解析:全局變量作為實參傳遞給函數(shù),在函數(shù)中的運算并不改變其原來的值。20、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;

37、如果 能,請寫出運行結(jié)果。int x=10;void show()int x=20;printf("show() 函數(shù)中 x 的值為: %dn",x);void main()int x=30;printf("main() 函數(shù)中 x 的值為: %dn",x);show();答案: main() 函數(shù)中 x 的值為: 30show() 函數(shù)中 x 的值為: 20 解析:局部變量只在它所在的函數(shù)內(nèi)部有效,且當全局變量與局部變量重名時,局部變量 會屏蔽掉全局變量21、請閱讀下面的程序,分析程序是否能編繹通過并正確運行,如果不能,說明原因;如果 能,請寫出運行結(jié)

38、果。int a, b;void func()a = 100;b = 200;void main()int a = 5, b = 7;func();printf("a = %d, b = %dn", a, b);答案: a = 5, b = 7解析:全局變量與局部變量重名時,局部變量會屏蔽掉全局變量22、請閱讀下面的程序, 在空白處填寫正確的代碼, 該程序的功能是: 用函數(shù)求 x 的絕對值。 void main()int x,y;scanf("%d",&x);printf("y=%dn",y);int abs(int a)int

39、 b;if (a>=0) b=a;else答案: y=abs(x); b=-a; return b;解析:abs()函數(shù)是求絕對值的函數(shù)。23、以下 check 函數(shù)的功能是對 value 中的值進行四舍五入計算,若計算后的值與 ponse 的 值相等,則顯示“ WELL DONE”!,否則顯示計算后的值。請?zhí)羁?。void check(int ponse, float value)int val;val = ;print(" 計算后的值: %d", val);if ()printf("n WELL DONE!n");elseprintf("

40、;nSorry the correct answer is %dn",val);答案: (int)(value*10 + 5)/10)val = ponse解析:第一個填空處利用 float 型轉(zhuǎn) int 型的規(guī)則實現(xiàn)四舍五入的計算;第二個填空處判斷 是否計算后的值與 ponse 的值相等。24、請閱讀下面的程序, 在空白處填寫正確的代碼, 該程序的功能是: 求整數(shù) num1 和 num2 的最大公約數(shù),并返回該值。int gongyue(int num1, int num2)int temp;while ()temp = num1 % num2;num1 = num2;num2 =

41、 temp;return ;答案: num2!=0 num1解析:循環(huán)條件是 num2 !=0,因為被模數(shù)不能為 0; num1 在對 num2 取模的過程中一直在 改變,最后返回 num1 的值。x 的輸入,求25、請閱讀下面的程序,在空白處填寫正確的代碼,該程序的功能是:根據(jù)對1到x的累加和。int fun(int n)int i,c;c=0;for (i=1;i<=n;i+) c=c+i;void main()int x;scanf("%d", );printf("%dn",fun(x);答案: return c;&x解析:函數(shù)fun

42、()中求總和,c是總和變量,最后返回c;從鍵盤輸入X,則要對scanf()函數(shù)傳入變量x的地址。26、請閱讀下面的程序,在空白處填寫正確的代碼,該程序的功能是:先輸入數(shù)組a中,再輸入x,然后在a數(shù)組中查找與x值相同的元素的所在位置。 void main()int a11,x,i;printf("Enter 10 integers:n");for (i=1; ;i+)scanf("%d",a+i);printf("Enter x:");*a=x;i=10;while (x!=*(a+i)if (i>0) printf("

43、%5d's position is:%4dn",x,i);else printf("%d Not been found!n",x);答案: i<=10scanf("%d",&x);break;27、請閱讀下面的程序,在空白處填寫正確的代碼,該程序的功能是:輸入 數(shù)組x中,然后計算各元素的和,并將和存入S中。void main()int x10,i,s;10 個數(shù)據(jù)到10 個整數(shù)存入for (i=0;i<10;i+)s=0;for (i=1; i<10; i+)printf("%d",s);答

44、案: scanf("%d",&xi); s+=i;解析:第一個空格從鍵盤輸入元素的值;第二個空格將元素存入變量 s 中;28、請閱讀下面的程序, 在空白處填寫正確的代碼,該程序的功能是:讀入一個兩位的正整 數(shù),按字符型形式輸出。void main()int n;scanf();printf();答案: "%d",&n "%c",n29、請閱讀下面的程序, 分析代碼是否能夠編譯通過, 如果能編譯通過, 請列出運行的結(jié)果, 否則請說明編譯失敗的原因。#include<stdio.h>int sum(int a)

45、int c=0;static int b=3;c+=1;b+=2;return a+b+c;void main()int i;int a=2;for (i=0; i<5; i+)printf("%d,", sum(a);答案: 8,10,12,14,16,解析:sum()函數(shù)體中的靜態(tài)局部變量b會一直存在,其值不隨函數(shù)調(diào)用結(jié)束而銷毀。30、編寫一個函數(shù),判斷一個數(shù)是奇數(shù)還是偶數(shù),并在主函數(shù)中調(diào)用。答案: #include <stdio.h>void func(int num)if(num %2 = 0)printf( “該數(shù)是偶數(shù)” );elseprint

46、f( “該數(shù)是奇數(shù)” );int main()int num;scanf( “ %d” ,&num);func(num);return 0;解析: func() 函數(shù)對傳入進來的參數(shù)num 進行奇偶判斷;主函數(shù)中調(diào)用 func() 函數(shù),傳入?yún)?shù)得到判斷結(jié)果。31、編寫一個函數(shù),實現(xiàn)1-100 的相加和,并在主函數(shù)中調(diào)用。答案: #include <stdio.h>int func()int num, sum = 1;for(num = 1; num <= 100; num+) sum += num;return sum;int main()int sum = 0;s

47、um = func();printf( “ sum = %d ” ,sum);return 0;解析:func()函數(shù)實現(xiàn)1-100的相加和,并將結(jié)果返回給調(diào)用者。主函數(shù)中的sum接收調(diào)用func函數(shù)的返回值,并將其打印32、請編寫一個程序,用戶從鍵盤輸入英文字母,如果是大寫,將其轉(zhuǎn)換成小寫輸出;如果 是小寫,將其轉(zhuǎn)換成大寫輸出。提示:英文字母在計算機中以ASCII碼表形式存在。答案: #include <stdio.h>int main()char ch;printf(" 請輸入英文字母: n");scanf("%c", &ch);

48、if (ch >= 'A' && ch <= 'Z') printf("%cn", ch + 32);else if (ch >= 'a' && ch <= 'z')printf("%cn", ch - 32);return 0;解析:英文字母對應(yīng)的 ASCII碼值,大寫比對應(yīng)小寫小 3233、 請編寫一個程序,用戶輸入一個十進制整數(shù),分別輸出其十進制、八進制、十六進制 對應(yīng)的數(shù)值。答案: #include <stdio.h>

49、;int main()int num;scanf( “ %d” ,&num);printf( “十進制為: %dn 八進制為: %on 十六進制為: %xn” ,num,num,num); return 0;解析:十進制輸入格式符為 d,八進制輸出格式符為 o,十六進制輸出格式符為 x。34、請編寫一個程序,實現(xiàn)兩個數(shù)的求和,并打印出來。答案: #include <stdio.h>void show(int s)printf(" 兩個數(shù)的和為: %d", s);return;void add(int a, int b)int s = a + b;show

50、(s); return;int main()int s = a + b;show(s);return 0;解析:add()函數(shù)實現(xiàn)兩個數(shù)相加,show()函數(shù)將兩個數(shù)相加的結(jié)果打印出來。35、請編寫一個程序, 用戶從鍵盤隨機輸入四個數(shù), 比較這個四個數(shù)得出其中最大值并輸出。 提示:1) 編寫一個兩個數(shù)值比較的函數(shù)2) 編寫一個四個數(shù)值比較的函數(shù),調(diào)用這個函數(shù),在該函數(shù)中調(diào)用兩個數(shù)值比較的函數(shù)答案: #include <stdio.h>int max2(int a, int b)if (a > b) return a;else return b;int max4(int a,

51、int b, int c, int d)int res;res = max2(a, b);res =max2(res,c);res = max2(res, d);return res;int main()int a, b, c, d, max;printf(" 請輸入四個整數(shù): ");scanf( “ %d%d%d%”d ,&a,&b,&c,&d);max = max4(a, b, c, d);printf("max=%d n", max);return 0;m ax2 ()函數(shù)進行兩兩比較,解析:輸入四個數(shù),調(diào)用max4

52、()函數(shù),在max4()函數(shù)中又調(diào)用最后得出最大值,返回給調(diào)用函數(shù)。36、請編寫一個程序,計算s = 2A2! + 3人2!;提示:1) 編寫一個函數(shù)計算平方值2) 編寫一個函數(shù)計算階乘答案: #include <stdio.h>long f1(int p)int k;long r;long f2(int);k = p*p;r = f2(k);return r;long f2(int q)long c = 1;int i;for (i = 1; i <= q; i+) c = c*i;return c;int main()int i;long s = 0;for (i = 2

53、; i <= 3; i+) s = s + f1(i);printf("ns=%ldn", s);return 0;解析:函數(shù)f1()實現(xiàn)了計算數(shù)值的平方,函數(shù)f2()實現(xiàn)了階乘計算,在f1()中調(diào)用f2()實現(xiàn)了計算表達式的值。37、 請編寫一個程序,用遞歸方法實現(xiàn)n!。提示:1 ) 遞歸調(diào)用是函數(shù)自身調(diào)用自身的過程2) 每遞歸調(diào)用一次 n 就要自減一次 答案: #include <stdio.h> int add(int n)if (n = 1)return 1;elsereturn n + add(n - 1);int main()int n ;sc

54、anf(“ %d” ,&n);int sum = add(n);printf( “結(jié)果為 :%dn ” ,sum);return 0;解析:add()函數(shù)實現(xiàn)遞歸,每調(diào)用一次n要減1.38、 請編寫一個程序,求出m 的 n 次方。 提示:編寫遞歸函數(shù)求解。答案: #include <stdio.h>int func(int m, int n)if (n = 1)return m;else return m*func(m, n - 1);int main()int m, n,sum;scanf("%d%d", &m, &n);sum = func(m, n);printf("%dn", sum);return 0;解析:func()實現(xiàn)遞歸調(diào)用,每乘上一個m,再用n-1調(diào)用函數(shù),實現(xiàn)m的n次方。39、 假設(shè)有一對兔子, 從出生后第 3 個月起每個月都生一對兔子, 小兔子長到第三個月后每 個月又生一對兔子,假如兔子都存活,問一年之后(第 13 個月)月兔子總數(shù)為多少對 ? 提示:兔子的規(guī)律為數(shù)列 1, 1 , 2, 3, 5,

溫馨提示

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

評論

0/150

提交評論