C語(yǔ)言程序設(shè)計(jì)教程練習(xí)題解析_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)教程練習(xí)題解析_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)教程練習(xí)題解析_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)教程練習(xí)題解析_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)教程練習(xí)題解析_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單選題

1、關(guān)于C語(yǔ)言中的函數(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?、定義一個(gè)函數(shù):exce((vl,v2),(v3,v4,v5),v6);在該函數(shù)調(diào)用時(shí),實(shí)參的個(gè)數(shù)為()

個(gè)

A.3

B.4

C.5

D.6

答案:A

解析:(vl,v2),(v3,v4,v5)和v6一共三個(gè)實(shí)參

3、關(guān)于C語(yǔ)言中print。函數(shù)與scanf()函數(shù),下列描述中正確的是()

A.printfO函數(shù)可以向任何地方輸出數(shù)據(jù)

B.printf()只向控制臺(tái)輸出數(shù)據(jù)

C.scanf()只能輸入英文字母和數(shù)字

D.scanf()函數(shù)可以識(shí)別輸入的空格

答案:B

解析:printf()是向控制臺(tái)輸出的函數(shù)

4、在C語(yǔ)言中,內(nèi)部函數(shù)需要添加的關(guān)鍵字是()

A.extern

B.static

C.this

D.auto

答案:B

解析:在定義內(nèi)部函數(shù)時(shí),需要在函數(shù)的返回值類型前面添加static關(guān)鍵字(乂稱為靜

態(tài)函數(shù))。

5、當(dāng)調(diào)用時(shí),會(huì)調(diào)用內(nèi)部函數(shù)

A.當(dāng)調(diào)用時(shí),會(huì)調(diào)用內(nèi)部函數(shù)

B.當(dāng)調(diào)用時(shí),會(huì)調(diào)用外部函數(shù)

C.當(dāng)調(diào)用時(shí),會(huì)調(diào)用兩次,先調(diào)用內(nèi)部函數(shù)再調(diào)用外部函數(shù)

D.都不調(diào)用,會(huì)報(bào)錯(cuò)

答案:A

解析:當(dāng)內(nèi)部函數(shù)與外部函數(shù)重名時(shí),會(huì)優(yōu)先調(diào)用內(nèi)部函數(shù)

6、在C語(yǔ)言中,聲明外部函數(shù)需要添加的關(guān)鍵字是()

A.extern

B.static

C.this

D.auto

答案:A

解析:聲明外部函數(shù)的方式是在函數(shù)的返回值類型前面添加extern關(guān)鍵字

7、關(guān)于C語(yǔ)言中的局部變量,下列描述中錯(cuò)誤的是()

A.局部變量就是在函數(shù)內(nèi)部聲明的變量

B.局部變量只在函數(shù)內(nèi)部有效

B.全局變量會(huì)被屏蔽

C.都不會(huì)調(diào)用,系統(tǒng)會(huì)報(bào)錯(cuò)

D.會(huì)調(diào)用兩次,先調(diào)用局部變量,再調(diào)用全局變量

答案:B

解析:當(dāng)局部變量與全局變量重名時(shí),全局變量會(huì)被屏蔽。

10、在C語(yǔ)言中,關(guān)于變量的作用域,下列描述中錯(cuò)誤的是()

A.局部變量只在整個(gè)函數(shù)的運(yùn)行周期中有效

B.全局變量的作用域?yàn)檎麄€(gè)程序的運(yùn)行周期

C.當(dāng)全局變量與局部變量重名時(shí),局部變量會(huì)屏蔽掉全局變量

D.全局變量會(huì)覆蓋掉所有與它重名的局部變量

答案:D

解析:當(dāng)全局變量與局部變量重名時(shí),全局變量會(huì)被屏蔽掉

11、在C語(yǔ)言中,如果在一個(gè)函數(shù)的復(fù)合語(yǔ)句中定義了一個(gè)變量,則該變量()

A.只在該復(fù)合語(yǔ)句中有效,在該復(fù)合語(yǔ)句外無(wú)效

B.在該函數(shù)中任何位置都有效

C.在本程序的原文件范圍內(nèi)均有效

D.此定義方法錯(cuò)誤,其變量為非法變量

答案:D

解析:?1、2與3錯(cuò):函數(shù)復(fù)合語(yǔ)句中定義的變量在該復(fù)合語(yǔ)句中引用;但如果函數(shù)含有

該變量,則在函數(shù)中可以引用該變量

4對(duì):在C++中在復(fù)合語(yǔ)句中定義變量為合法,但在C語(yǔ)言中是非法的

12、C語(yǔ)言程序的基本單位是()。

A.程序行

B.語(yǔ)句

C.函數(shù)

D.字符

答案:C

解析:函數(shù)是C語(yǔ)言程序的基本單位

13、C語(yǔ)言中決定函數(shù)返回值的類型的是()。

A.return語(yǔ)句中的表達(dá)式類型

B.調(diào)用函數(shù)的主調(diào)函數(shù)類型

C.調(diào)用函數(shù)時(shí)臨時(shí)

D.定義函數(shù)時(shí)所指定的函數(shù)類型

答案:D

解析:函數(shù)的返回值取決于定義函數(shù)時(shí)指定的返回值類型

14、若有函數(shù)調(diào)用語(yǔ)句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函數(shù)調(diào)用語(yǔ)句中實(shí)參

的個(gè)數(shù)是()。

A.3

B.4

C.5

D.6

答案:A

解析:a+b返回一個(gè)值,(x,y)返回一個(gè)值,fun(n+k,d,(a,b))返回一個(gè)值。

15、x、y、z被定義為int型變量,若從鍵盤給x、y、z輸入數(shù)據(jù),正確的輸入語(yǔ)句是()。

A.inputx,y,z;

B.scanfC%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ù)要用scanfO函數(shù),scant()中的參數(shù)要傳入變量的地址

16、若變量已正確說明為float類型,要通過語(yǔ)句scanfC/%f%f%f,z,&a,&b,&c);給a賦

予10.0,b賦予22.0,c賦予33.0,不正確的輸入形式是()。

A.102233

B.10.0,22.0,33.0

C.10.022.033.0

D.10;22;33

答案:B

解析:用scanfO讀取從鍵盤輸入的數(shù)據(jù)時(shí),中間不能加逗號(hào),要用空格隔開

17、若有定義:intx,y;chara,b,c;并有以下輸入數(shù)據(jù)(此處\u代表空格):1\U2\UA\UB\UC,

那么能給x賦整數(shù)1,給y賦整數(shù)2,給a賦字符A,給b賦字符B,給c賦字符C的正確

程序段是()。

A.scanf(〃x=%dy=%d〃,&x,&y);a=getchar();b=getchar0;c=getchar();

B.scanfC%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,&a,&b,&b,&c,&c);

答案:D

解析:空格也會(huì)作為一個(gè)字符賦給字符變量。

18、對(duì)嵌套子程序調(diào)用說法正確的是()。

A.外層子程序可以調(diào)用所有的內(nèi)層子程序

B.內(nèi)層子程序只可以調(diào)用包含本身的外層子程序,不可以隔層調(diào)用

C.外分程序必須能完全套住內(nèi)分程序

D.以上說法均不止確

答案:C

19、C語(yǔ)言中函數(shù)能否嵌套調(diào)用和遞歸調(diào)用?()

A.二者均不可

B.前者可,后者不可

C.前者不可,后者可

D.二者均可

答案:D

解析:兩者調(diào)用都可以

20、C語(yǔ)言規(guī)定,程序中各函數(shù)之間()0

A.既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用

B.不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用

C.允許直接遞歸調(diào)用不允許間接遞歸調(diào)用

D.不允許直接遞歸調(diào)用允許間接遞歸調(diào)用

答案:A

解析:各程序間既可以直接調(diào)用也可以間接調(diào)用。

21?、有如卜程序:

longfib(intn)

(

if(n>2)

returnfib(n-1)+fib(n-2);

else

return2;

}

voidmain()

printf(z,%d\n/z,fib(3));

該程序的輸出結(jié)果是()。

A.2

B.4

C.6

D.8

答案:B

解析:向fib()函數(shù)傳入3時(shí),返回fib(l)+fib(2)的值;向fib()函數(shù)傳入1和2時(shí),

都返回2,所以fib⑶返回2+2=4。

22、?以下程序的輸出結(jié)果是()o

longfun(intn)

(

longs;

if(n==l||n==2)

s=2;

else

s=n-fun(n-l);

returns;

)

voidmain()

(

printfC%ld\n",fun(3));

)

A.1

B.2

C.3

D.4

答案:A

解析:fun()函數(shù)傳入3時(shí),返回3-fun(2);fun()函數(shù)傳入2時(shí),返回2。所以fun(3)

返回3-2=1o

23、在C語(yǔ)言中,函數(shù)的隱含存儲(chǔ)類別是()。

A.auto

B.static

C.extern

D.無(wú)存儲(chǔ)類別

答案:C

解析:為簡(jiǎn)化編程,C語(yǔ)言中允許在定義外部函數(shù)時(shí)省略關(guān)鍵字extern。

24、以卜敘述中不止確的是()。

A.在不同的函數(shù)中可以使用相同名字的變量

B.函數(shù)中的形式參數(shù)是局部變量

C.在一個(gè)函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

D.在一個(gè)函數(shù)內(nèi)的復(fù)合語(yǔ)句中定義的變量在本函數(shù)范圍內(nèi)有效

答案:D

解析:函數(shù)內(nèi)的復(fù)合語(yǔ)句中定義的變量?jī)H僅在該復(fù)合語(yǔ)句中有效。

25?、以下程序運(yùn)行后,輸出結(jié)果是()。

intfunc(inta,intb)

staticintm=0,i=2;

i+=m+l;

m=i+a+b;

returnm;

)

voidmain()

(

intk=4,m=l,p;

p=func(k,in);

printf(〃%d,〃,p);

p=func(k,m);

printf("貌\n",p);

}

A.8,15

B.8,16

C.8,17

D.8,8

答案:C

解析:函數(shù)體內(nèi)的靜態(tài)局部變量不隨函數(shù)的調(diào)用結(jié)束而銷毀,而是一直存在。

26?、以下程序的輸出結(jié)果是()。

intd=l;

intfun(intp)

(

staticintd=5;

d+二p;

printf(z,%d〃,d);

returnd;

)

voidmain()

(

inta=3;

printf(/z%d\n,z,fun(a+fun(d)));

}

A.699

B.669

C.61515

D.6615

答案:C

解析:?首先調(diào)用fun(d),將全局變量d=l帶入,此時(shí)fun()函數(shù)內(nèi)的靜態(tài)局部變量d的

值是1,d+=pBd的值是6,輸出d的值,返回d的值;

然后調(diào)用fun(a+6),將局部變量a=3帶入,此時(shí)fun()函數(shù)內(nèi)的靜態(tài)局部變量d的值是6,

d+=p后d賦值15,輸出d的值,返回d的值。

27、在C語(yǔ)言中,若需一變量只在本文件中所有函數(shù)使用,則該變量的存儲(chǔ)類別是()。

A.extern

B.register

C.auto

D.static

答案:D

解析:ssiic修飾全局變量時(shí),表示該變量?jī)H在本文件中可使用。

28?、下列程序的輸出結(jié)果是()o

intb=2;

intfunc(int*a)

(

b+=*a;

returnb;

)

voidmain()

(

inta=2,res=2;

res十二func(&a);

printf(〃%d\n”,res);

}

A.4

B.6

C.8

D.10

答案:B

解析:func()函數(shù)中,對(duì)全局變量b自增a的值,func()函數(shù)返回4;res+=4,res賦值

為6。

29?、請(qǐng)讀程序:

voidmain()

(

inta=l,b=2,c=3;

++a;

c+=++b;

(

intb=4,c;

c=b*3;

a+二c;

printf("first%d\n〃,a,b,c);

a+=c;

printf("Seconded,%d,%d\n〃,a,b,c);

printf("third:%d,%d,%d\n〃,a,b,c);

}

該程序的輸出是()

A.first:12,4,12Secord:26,4,12third:4,3,6

B.first:14,4,12Second:26,12,12third:26,3,4

C.first:14,4,12Second:26,4,12third:26,3,6

D.first:14,4,12Second:26,6,12third:26,4,6

答案:C

解析:程序運(yùn)行到第6行時(shí),a=2,b二3,c二6;程序運(yùn)行到第10行時(shí),a=14,局部變量

b=4,.12;程序運(yùn)行到第13行時(shí),a=26,局部變量b=4,c=12;程序運(yùn)行到第15

行時(shí),a=26,b=3,c=6o

30?、以下程序運(yùn)行后,輸出結(jié)果是()。

intd=l;

intfun(intp)

intd=5;

d+=p++;

printf(飛d〃,d);

)

intmain()

(

inta=3;

fun(a);

d+=a++;

printfd);

)

A.84

B.99

C.95

D.44

答案:A

解析:fun()函數(shù)調(diào)用時(shí)代入局部變量a的值,fun()函數(shù)體內(nèi)局部變量d自增3,輸Hld

的值,即8,fun()函數(shù)返回8,此時(shí)全局變量d的值不變。d+=a++后,全局變量d

自增3,此時(shí)全局變量d的值是4,輸出全局變量d的值。

31?、以下程序的輸出結(jié)果是()。

inta,b;

voidfun()

(

a=100;b=200;

)

voidmain()

(

inta=5,b=7;

fun();

printf(*%d%d\n”,a,b);

)

A.100200

B.57

C.200100

D.75

答案:B

解析:fun()函數(shù)改變的是全局變量的值,printf()函數(shù)輸出的是局部變量的值,fun()

函數(shù)不會(huì)改變局部變量a、b的值。

多選題

1、在調(diào)用外部函數(shù)時(shí),下列描述中正確的是()(多選)

A.只要有函數(shù)名,就能調(diào)用外部函數(shù)

B.調(diào)用外部函數(shù)要包含外部函數(shù)所在的頭文件

C.外部函數(shù)與調(diào)用者定義在同一個(gè)源文件下

D.在聲明外部函數(shù)時(shí),外部函數(shù)與原函數(shù)定義的返回值類型、函數(shù)名稱和參數(shù)列表必須

一致

答案:B,D

解析:外部函數(shù)調(diào)用時(shí)要包含其所在的頭文件,當(dāng)調(diào)用者聲明了外部函數(shù)的原型,也可以

不用包含頭文件

判斷題

1、局部變量就是在函數(shù)內(nèi)部聲明的變量。

答案:true

解析:局部變量就是在函數(shù)內(nèi)部聲明的變量。

2、局部變量只有當(dāng)它所在的函數(shù)被調(diào)用時(shí)才會(huì)被使用,而當(dāng)函數(shù)調(diào)用結(jié)束時(shí)局部變量就會(huì)

失去作用。

答案:true

解析:局部變量只有當(dāng)它所在的函數(shù)被調(diào)用時(shí)才會(huì)被使用,而當(dāng)函數(shù)調(diào)用結(jié)束時(shí)局部變量

就會(huì)失去作用。

3、局部變量就是在函數(shù)內(nèi)部聲明的變量,它只在本函數(shù)內(nèi)有效。

答案:true

解析:局部變量就是在函數(shù)內(nèi)部聲明的變量,它只在本函數(shù)內(nèi)有效,也就是說,只能在本

函數(shù)內(nèi)使用它。

4、局部變量只有當(dāng)它所在的函數(shù)被調(diào)用時(shí)才會(huì)被使用,當(dāng)函數(shù)調(diào)用結(jié)束時(shí)局部變量還會(huì)一

直存在。

答案:false

解析:局部變量只有當(dāng)它所在的函數(shù)被調(diào)用時(shí)才會(huì)被使用,而當(dāng)函數(shù)調(diào)用結(jié)束時(shí)局部變量

就會(huì)失去作用。

簡(jiǎn)答題

1、?請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

voidfunc(inta,intb)

(

printf(〃%d,z,a+b);

)

voidmain()

(

func(3,2);

printf(〃\rT);

)

答案:5

解析:fun()是一個(gè)實(shí)現(xiàn)兩個(gè)數(shù)相加的函數(shù),在主函數(shù)中調(diào)用并傳入值,得到兩個(gè)數(shù)的和

2?、請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,將函數(shù)的結(jié)果返回給調(diào)用者。

intfunc(inta,intb)

intsum=0;

sum=a+b;

)

voidmain()

(

intsum=0;

=func(3,2);

printf(〃兩個(gè)數(shù)相加的結(jié)果為%d〃,sum);

}

答案:?returnsum;

sum;

解析:?returnsum;return將函數(shù)結(jié)果返回

sum;主函數(shù)中sum接收函數(shù)返回的值

3、?請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

voidmain()

intnum=100;

printf(u%d,%o,%x\n,J,num,num,num);

}

答案:10014464

解析:printfO函數(shù)將十進(jìn)制數(shù)100分別以十進(jìn)制,八進(jìn)制,十六進(jìn)制形式輸出。

4?、請(qǐng)閱讀卜面的程序,當(dāng)用戶從鍵盤輸入helloworld時(shí),分析程序是否能編繹通過并

正確運(yùn)行,如果不能,說明原因;如果能,請(qǐng)寫出運(yùn)行結(jié)果。

voidmain()

(

charstr[256];

scanf("%s",str);

printf(u%s\nv,str);

}

答案:hello

解析:輸入helloworld時(shí),中間的空格對(duì)scanf()函數(shù)來(lái)說是終止符,后面的內(nèi)容無(wú)法

讀取。

5?、請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,實(shí)現(xiàn)下列功能。

用戶從鍵盤輸入兩個(gè)整型數(shù)據(jù),將兩個(gè)數(shù)據(jù)相加輸出。

voidmain()

(

inta,b;

t

printf("%d\n”,);

)

答案:?scanf(<<%d%d>,,&a,&b);

a+b;

解析:?鍵盤輸入數(shù)據(jù),用scanf()函數(shù);

輸入兩個(gè)數(shù)據(jù)的和a+b;

6、?請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

intfunc2(inta,intb)

intc;

c=a*b%3;

returnc;

}

intfund(inta,intb)

(

intc;

a+=a;

b+=b;

c=func2(a,b);

returnc*c;

)

voidmain()

(

intx=11,y=19;

printf(z,thefinalresultis:%d\n〃,fund(x,y));

}

答案:4

解析:x=11,y=19傳入funcl()函數(shù),在funcl()函數(shù)中經(jīng)過運(yùn)算變?yōu)?2,38,然后

傳入給func2()函數(shù),返回運(yùn)算結(jié)果2,funcl()函數(shù)收到返回值2以后再經(jīng)過運(yùn)算

返回給主調(diào)用函數(shù)結(jié)果為4。

7?、請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

voidfunc2(inta,intb)

(

a=a+10;

b=a+10;

}

voidfunc(inta,intb)

(

a=func2();

b=func2();

}

voidmainO

intx=1,y=10;

fund(x,y);

printf(z,x=%d,y=%d\n”,x,y);

}

答案:x=1,y=10;

解析:將實(shí)參傳遞給形參,只是復(fù)制了一份給x,y的值,參數(shù)在被調(diào)用函數(shù)內(nèi)部改變,不

影響其在調(diào)用函數(shù)中的值。

8?、請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,實(shí)現(xiàn)下列功能。

用戶從鍵盤輸入四個(gè)數(shù),比較得出四個(gè)數(shù)中的最大值并輸出。

intmax2(inta,intb)

(

if(a>b){

returna;

else

returnb;

)

)

intmax4(inta,intb,intc,intd)

(

intres;

res=max2(a,b);

res=;

res=max2(res,d);

f

}

voidmain()

inta,b,c,d,max;

printf("請(qǐng)輸入四個(gè)整數(shù):");

max=max4(a,b,c,d);

printf(/zmax=%d\n〃,max);

)

答案:?max2(res,c);

returnres;

scanf(<<%d%d%d%d",&a,&b,&c,&d);

解析:在max4()函數(shù)中,res=max2(a,b)返回的是a,b中的最大值,這個(gè)最大值再與c

進(jìn)行比較,所以res=max2(res,c),返回的較大的值再與d作比較,再將比較得

出的較大的值返回給主調(diào)用函數(shù),這個(gè)較大的值就是四個(gè)數(shù)中的最大值。

9?、請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

intadd(intn)

(

if(n==1)

return1;

else

returnn+add(n-1);

)

voidmain()

(

intn=5;

intsum=add(5);

printf(“結(jié)果為:%d\n",sum);

}

答案:15

解析:add()函數(shù)進(jìn)行遞歸調(diào)用,傳入的參數(shù)5,會(huì)一直遞減相加直到遞減至1。

10、?請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

voidfun(intn)

if(n>0)

printf(〃%d\t〃,n);

fun(-n);

}

)

voidmain()

(

inta=5;

fun(a);

)

答案:54321

解析:fun()函數(shù)遞歸調(diào)用,每打印一次就自減再調(diào)用一次自己。

11?、請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,實(shí)現(xiàn)下列功能。

用遞歸方法求出n!。

intfac(intn)

intt;

if()

return1;

else

(

t=;

returnt;

)

}

voidmain()

(

intm,y;

printf(''Enterm:\n");

scanf&m);

if(m<0)

printf(z,InputdataError!\n〃);

else

y=fac(m);

printf(z,\n%d!=%d\n”,m,y);

)

}

答案:?(n==1)||(n==0)

n*fac(n-1)

解析:實(shí)現(xiàn)n的階乘,當(dāng)n=0或者n=l時(shí),階乘沒有意義,當(dāng)n>l時(shí),實(shí)現(xiàn)階乘,則為

n*fun(n-l);

12、?請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

intx=5;

staticvoidcudeO

(

X=x*x*x;

}

voidmainO

cude();

printf(vx=%d\n”,x);

)

答案:125

解析:全局變量x,當(dāng)調(diào)用cude()內(nèi)部函數(shù)時(shí),并沒有傳入?yún)?shù),沒有復(fù)制,所以x值的

變化直接改變了x本身的值

13?、請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

first,c文件

intfunc(inta,intb)

(

returna+b;

)

second,c文件

sLeilicinLfunc(inLa,intb)

returnab;

)

voidmain()

(

intx=5,y=2;

printf("%d\n”,func(5,2));

)

答案:3

解析:當(dāng)內(nèi)部函數(shù)與外部函數(shù)重名時(shí),會(huì)優(yōu)先調(diào)用內(nèi)部函數(shù)

14?、請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

first,c源文件

intfunc(inta,intb)

returna+b;

}

second,c源文件

externintfunc(inta,intb);

voidmain()

(

intx=5,y=2;

printf("%d\n”,func(5,2));

)

答案:7

解析:在second,c中聲明了intfunc(inta,intb);函數(shù)原型,可以調(diào)用first,c中

的函數(shù)。

15?、請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,實(shí)現(xiàn)下列功能。

有一個(gè)外部函數(shù),用戶輸入一個(gè)數(shù)字,可以實(shí)現(xiàn)奇偶數(shù)的判斷。實(shí)現(xiàn)在主函數(shù)中調(diào)用這個(gè)

外部函數(shù)。

first,c源文件

voidfunc(intnum)

if(num%2==0)

printf(“這是一個(gè)偶數(shù)!\n");

)

second,c源文件

9

voidmain()

(

intnum;

scanf(飛d”,&num);

func(num);

)

答案:externvoidfunc(intnum);

解析:調(diào)用外部函數(shù),可以包含函數(shù)所在的頭文件,也可以在本文件中聲明函數(shù)原型。

16、?請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

voidshow()

intx=0;

)

voidmain()

(

printf("x的值為:%d\n",x);

}

答案:不能運(yùn)行

解析:變量x為函數(shù)show:)的局部變量,只在show。函數(shù)范圍內(nèi)有效,在main。中無(wú)法

調(diào)用。

17?、請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

intshow()

{

intx=0;

returnx;

}

voidmain()

(

intx=10;

show();

printf(〃x的值為:%d\n〃,x);

)

答案:x的值為:10

解析:main。函數(shù)中的x是局部變量,不受show。函數(shù)調(diào)用的影響。

18、請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

intx=10;

voidmainO

(

intx=100;

printf(“%d”,x);

}

答案:100

解析:當(dāng)全局變量與局部變量重名時(shí),全局變量會(huì)被屏蔽掉。

19?、請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

intx=2;

voidfunc(intx)

(

X=X*X*X;

)

voidmain()

(

func(x);

printf(zz%d\nz/,x);

)

答案:2

解析:全局變量作為實(shí)參傳遞給函數(shù),在函數(shù)中的運(yùn)算并不改變其原來(lái)的值。

20、?請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因;如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

intx=l0;

voidshow()

(

intx=20;

printf(z/show()函數(shù)中x的值為:%d\n",x);

}

voidmain()

(

intx=30;

printf("main0函數(shù)中x的值為:%d\n〃,x);

show();

)

答案:?main()函數(shù)中x的值為:30

show。函數(shù)中x的值為:20

解析:局部變量只在它所在的函數(shù)內(nèi)部有效,且當(dāng)全局變量與局部變量重名時(shí),局部變量

會(huì)屏蔽掉全局變量

21、?請(qǐng)閱讀下面的程序,分析程序是否能編繹通過并正確運(yùn)行,如果不能,說明原因:如

果能,請(qǐng)寫出運(yùn)行結(jié)果。

inta,b;

voidfunc0

(

a=100;

b=200;

)

voidmain()

(

inta=5,b=7;

func();

printf(/za=%d,b=%d\n,,,a,b);

}

答案:a=5,b=7

解析:全局變量與局部變量重名時(shí),局部變量會(huì)屏蔽掉全局變量

22?、請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,該程序的功能是:用函數(shù)求x的絕對(duì)

值。

voidmain()

(

intx,y;

scanf(〃%d〃,&x);

printf(〃y=%d\n〃,y);

}

intabs(inta)

(

intb;

if(a>=0)

b二a;

else

答案:?y=abs(x);b=-a;returnb;

解析:abs()函數(shù)是求絕對(duì)值的函數(shù)。

23、?以卜check函數(shù)的功能是對(duì)value中的值進(jìn)行四舍五入計(jì)算,若計(jì)算后的值與ponse

的值相等,則顯示“WELLDONE!!”,否則顯示計(jì)算后的值。請(qǐng)?zhí)羁铡?/p>

voidcheck(intponse,floatvalue)

(

intval;

val=;

print(〃計(jì)算后的值:%d”,val);

if()

printfC\nWELLD0NE!!\n〃);

else

printf(〃\nSorrythecorrectansweris%d\n,z,val);

)

答案:?(int)((value*10+5)/10)val==ponse

解析:第一個(gè)填空處利用float型轉(zhuǎn)int型的規(guī)則實(shí)現(xiàn)四舍五入的計(jì)算;第二個(gè)填空處判

斷是否計(jì)算后的值與ponse的值相等。

24、?請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,該程序的功能是:求整數(shù)numl和num2

的最大公約數(shù),并返回該值。

intgongyue(intnuml,intnum2)

{

inttemp;

while()

(

temp=numl%num2;

numl=num2;

num2=temp;

)

return;

}

答案:?num2!=0numl

解析:循環(huán)條件是num2!=0,因?yàn)楸荒?shù)不能為0;nuiil在對(duì)num2取模的過程中一直在改

變,最后返回numl的值。

25?、請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,該程序的功能是:根據(jù)對(duì)x的輸入,

求1到x的累加和。

intfun(intn)

(

inti,c;

c=0;

for(i=l;i<=n;i++)

c=c+i;

}

voidmain()

intx;

scanf(線d〃,);

printf(〃%d\n〃,fun(x));

)

答案:?returnc;&x

解析:函數(shù)fun()中求總和,c是總和變量,最后返回c;

從鍵盤輸入x,則要對(duì)scanf()函數(shù)傳入變量x的地址。

26?、請(qǐng)閱讀卜面的程序,在空白處填寫止確的代碼,該程序的功能是:先輸入10個(gè)數(shù)據(jù)

到數(shù)組a中,再輸入x,然后在a數(shù)組中查找與x值相同的元素的所在位置。

voidmain()

(

inta[ll],x,i;

printf(''Enter10integers:Xn^);

for(i=l;;i++)

scanf(〃%d〃,a+i);

printf(z,Enterx:〃);

*a=x;i=10;

while(x!=*(a+i))

if(i>0)

printf("%5d'spositionis:%4d\n”,x,i);

else

printfC%dNotbeenfound!\n',x);

)

答案:?i<=10scanf(飛d〃,&x);break;

27?、請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,該程序的功能是:輸入10個(gè)整數(shù)存

人數(shù)組x中,然后計(jì)算各元素的和,并將和存入S中。

voidmain()

(

intx[10],i,s;

for(i=0;i<10;i++)

s=0;

for(i=l;i<10;i++)

printf(〃/d〃,s);

)

答案:?scanf(,z%d*,&x[i]);s+=i;

解析:第一個(gè)空格從鍵盤輸入兀素的值;

第二個(gè)空格將元素存入變量s中;

28、?請(qǐng)閱讀下面的程序,在空白處填寫正確的代碼,該程序的功能是:讀入一個(gè)兩位的正

整數(shù),按字符型形式輸出。

voidmain()

(

intn;

scanf();

printf();

}

答案:?〃%d〃,&n〃機(jī)〃,n

29、?請(qǐng)閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請(qǐng)列出運(yùn)行的結(jié)

果,否則請(qǐng)說明編譯失敗的原因。

ttinclude<stdio.h>

intsum(inta)

(

intc=0;

staticintb=3;

c+=l;

b+=2;

returna+b+c;

}

voidmainO

(

inti;

inta=2;

for(i=0;i<5;i++)

printf(〃%d,〃,sum(a));

)

答案:8,10,12,14,16,

解析:sum()函數(shù)體中的靜態(tài)局部變量b會(huì)一直存在,其值不隨函數(shù)調(diào)用結(jié)束而銷毀。

30、編寫一個(gè)函數(shù),判斷一個(gè)數(shù)是奇數(shù)還是偶數(shù),并在主函數(shù)中調(diào)用。

答案:?#include<stdio.h>

voidfunc(intnum)

(

if(num%2==0)

printf(“該數(shù)是偶數(shù)”);

else

printf(“該數(shù)是奇數(shù)”);

}

intmain()

intnum;

scanf(“%d”,&num);

func(num);

return0;

}

解析:?func0函數(shù)對(duì)傳入進(jìn)來(lái)的參數(shù)num進(jìn)行奇偶判斷;

主困數(shù)中調(diào)用funcO函數(shù),傳入?yún)?shù)得到判斷結(jié)果。

31、編寫一個(gè)函數(shù),實(shí)現(xiàn)1T00的相加和,并在主函數(shù)中調(diào)用。

答案:?#include<stdio.h>

intfunc()

{

intnum,sum=1;

for(num=1;num<=100;num++)

(

sum+=num;

}

returnsum;

}

intmainO

{

intsum=0;

sum=func0;

printf(**sum=%d”,sum);

return0;

}

解析:?func()函數(shù)實(shí)現(xiàn)卜100的相加和,并將結(jié)果返回給調(diào)用者.

主函數(shù)中的sum接收調(diào)用func函數(shù)的返回值,并將其打印

32、?請(qǐng)編寫一個(gè)程序,用戶從鍵盤輸入英文字母,如果是大寫,將其轉(zhuǎn)換成小寫輸出;如

果是小寫,將其轉(zhuǎn)換成大寫輸出。

提示:英文字母在計(jì)算機(jī)中以ASCII碼表形式存在。

答案:?#include<stdio.h>

intmain()

charch;

printf(〃請(qǐng)輸入英文字母:\n〃);

scanf(〃%c〃,&ch);

if(ch>='A'&&ch<='Z')

printf("%c\n”,ch+32);

elseif(ch>='a'&&ch<='z')

printf(z,%c\n,z,ch-32);

return0;

)

解析:英文字母對(duì)應(yīng)的ASCH碼值,大寫比對(duì)應(yīng)小寫小32

33、請(qǐng)編寫一個(gè)程序,用戶輸入一個(gè)十進(jìn)制整數(shù),分別輸出其十進(jìn)制、八進(jìn)制、十六進(jìn)制

對(duì)應(yīng)的數(shù)值。

答案:?#include<stdio.h>

intmain()

intnum;

scanf(“%d”,&num);

printf(“十進(jìn)制為:%d\n八進(jìn)制為:%o\n十六進(jìn)制為:%x\nw,num,num,num);

return0;

}

解析:十進(jìn)制輸入格式符為國(guó)d,八進(jìn)制輸出格式符為加,十六進(jìn)制輸出格式符為歌。

34、請(qǐng)編寫一個(gè)程序,實(shí)現(xiàn)兩個(gè)數(shù)的求和,并打印出來(lái)。

答案:?#include<stdio.h>

voidshow(ints)

(

printf("兩個(gè)數(shù)的和為:%d",s);

return;

}

voidadd(inta,intb)

ints=a+b;

show(s);

return;

)

intmain()

(

ints=a+b;

show(s);

return0;

}

解析:add()函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)相加,show。函數(shù)將兩個(gè)數(shù)相加的結(jié)果打印出來(lái)“

35?、請(qǐng)編寫一個(gè)程序,用戶從鍵盤隨機(jī)輸入四個(gè)數(shù),比較這個(gè)四個(gè)數(shù)得出其中最大值并輸

出。

提不:

1)編寫一個(gè)兩個(gè)數(shù)值比較的函數(shù)

2)編寫一個(gè)四個(gè)數(shù)值比較的函數(shù),調(diào)用這個(gè)函數(shù),在該函數(shù)中調(diào)用兩個(gè)數(shù)值比較的函數(shù)

答案:?#include<stdio.h>

intmax2(inta,intb)

if(a>b)(

returna;

else

returnb;

intmax4(inta,intb,intc,intd)

intres;

res=max2(a,b);

res=max2(res,c);

resmax2(res,d);

returnres;

}

intmainO

{

inta,b,c,d,max;

printf(〃請(qǐng)輸入四個(gè)整數(shù):〃);

scanf(M%d%d%d%d,,,&a,&b,&c,&d);

max=max4(a,b,c,d);

printf(〃max趣d\n”,max);

return0;

}

解析:輸入四個(gè)數(shù),調(diào)用max4()函數(shù),在max4()函數(shù)中乂調(diào)用max2()函數(shù)進(jìn)行兩兩比較,

最后得HI最大值,返回給調(diào)用函數(shù)。

36、?請(qǐng)編寫一個(gè)程序,計(jì)算s=2-2!+3-2!;

提示:

1)編寫一個(gè)函數(shù)計(jì)算平方值

2)編寫一個(gè)函數(shù)計(jì)算階乘

答案:?#include<stdio.h>

longfl(intp){

intk;

longr;

longf2(int);

k=p*p;

r=f2(k);

returnr;

}

longf2(intq){

longc=1;

inti;

for(i=1;i<=q;i++)

c=c*i;

returnc;

}

intmainO

{

inti;

longs=0;

for(i=2;i<=3;i++)

s=s+fl(i);

printf("\ns=%ld\n”,s);

return0;

}

解析:函數(shù)fl()實(shí)現(xiàn)了計(jì)算數(shù)值的平方,函數(shù)f2()實(shí)現(xiàn)了階乘計(jì)算,在fl()中調(diào)用f2()

實(shí)現(xiàn)了計(jì)算表達(dá)式的值。

37、?請(qǐng)編寫一個(gè)程序,用遞歸方法實(shí)現(xiàn)n!。

提示:

1)遞歸調(diào)用是函數(shù)自身調(diào)用自身的過程

2)每遞歸調(diào)用一次n就要自減一次

答案:?#include<stdio.h>

intadd(intn)

{

if(n==1)

return1;

else

returnn+add(n-1);

}

intmain()

{

intn;

scanf(“%d",&n);

intsum=add(n);

printf(“結(jié)果為:%d\n",sum);

return0;

}

解析:add()函數(shù)實(shí)現(xiàn)遞歸,每調(diào)用一次n要減1.

38?、請(qǐng)編寫一個(gè)程序,求出口的n次方。

提示:編寫遞歸函數(shù)求解。

答案:?#include<stdio.h>

intfunc(intm,intn)

{

if(n==1)

returnm;

else

returnm*func(m,n-1);

}

intmain()

(

intm,n,sum;

scanf(〃%d%d〃,&m,&n);

sum=func(m,n);

printf(〃%d\n〃,sum);

return0;

}

解析:func()實(shí)現(xiàn)遞歸調(diào)用,每乘上一個(gè)m,再用nT調(diào)用函數(shù),實(shí)現(xiàn)m的n次方。

39?、假設(shè)有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后

每個(gè)月又生一對(duì)兔子,假如兔子都存活,問一年之后(第13個(gè)月)月兔子總數(shù)為多少對(duì)?

提示:兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,-

答案:?#incl

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論