浙江傳媒學(xué)院計算機(jī)C語言期末(共六卷)含答案解析_第1頁
浙江傳媒學(xué)院計算機(jī)C語言期末(共六卷)含答案解析_第2頁
浙江傳媒學(xué)院計算機(jī)C語言期末(共六卷)含答案解析_第3頁
浙江傳媒學(xué)院計算機(jī)C語言期末(共六卷)含答案解析_第4頁
浙江傳媒學(xué)院計算機(jī)C語言期末(共六卷)含答案解析_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機(jī)C語言期末(一)

(總分150分,考試時長120分鈍)

一、單項選擇題(每小題2分,共40分)

1、與二進(jìn)制小數(shù)0.1等值的十六進(jìn)制小數(shù)為o

A、0.1

B、0.2

C、0.4

D、0.8

2、假設(shè)int類型的變量x、y和z,它們的初始值分別為10、20和30,則布爾表

達(dá)式xV10IIy>10&&z<10的值為o

A、false

B、1

C、true

D、無法判斷

3、有如下說明:inta[10]={0,1,2,3,4,5,6,7,8,9};則數(shù)值不為9的

表達(dá)式是.

A、a[10-l]

B、a[8]

C、a[9]-0

D、a[9]-a[0]

4、c語言對嵌套if語句的規(guī)定是:else總是與()。

A、其之前最近的述配對

B、其之前最近的且尚未配對的if配對

C、縮進(jìn)位置相同的if配對

D、第一個if配對

5、下列c語言程序段中關(guān)于while循環(huán)體正確的說法是

inti=l;

while(b)

i++;

if(i>3)break;

}

A、三次循環(huán)

B、四次循環(huán)

C、五次循環(huán)

D、六次循環(huán)

6、若執(zhí)行fopen函數(shù)時發(fā)生錯誤,則函數(shù)的返回值是()。

A、地址值

B、0

C、1

D、EOF

7、若變量已正確說明為float型,要通過語句scanf(〃%f%f%f〃,&a,&b,&c);給

a賦予10,0,b賦予22.0,u賦予33.0,下列不正確的輸入形式是_______。

A、10V回車>22〈回車>33V回車》

B、10.0,22.0,33.0V回車)

C、10.0V回車>22.033.0V回車,

D、1022V回車>33V回車〉

8、有以下程序

main()

(

chars[]="\nl23\\";

printf(z,%d,%d\n”,strlen(s),sizeof(s));

)

執(zhí)行后輸出結(jié)果是O

A、賦初值的字符串有錯

B、6,7

C、5,6

D、6,6

9、在c語言中,數(shù)字029是一個()

A、八進(jìn)制數(shù)

B、十進(jìn)制數(shù)

C、十六進(jìn)制數(shù)

D、非法數(shù)

10、設(shè)char*s二〃\ta\017bc〃;

則指針變量S指向的字符串所占的字節(jié)數(shù)是O

A、9

B、5

C、6

D、7

11、下列對C語言字符數(shù)組的描述中正確的是O

A、任何一個一維數(shù)組的元素在引用時,其下標(biāo)可以是整型、實型或字符型

常量

B、一維數(shù)組的元素實質(zhì)上就是一個變量,代表內(nèi)存中的一個存儲單元

C、如果要引用數(shù)組中的每一個元素,則直接使用該數(shù)組名稱即使

D、以上都不對

12、有以下程序:

intf(intn)

(

if(n-1)return1;

elsereturnf(n-l)+l;

)

main()

(

inti,j=0;

for(i=l;i<3;i+-)j+=f(i);

printf(,,%d\n,\j;;

)

程序運(yùn)行后的輸出結(jié)果是________。

A、4

B、3

C、2

D、1

13、下列運(yùn)算符中,不屬于關(guān)系運(yùn)算符的是o

A、+二

B、!=

C、<=

D、=

14、若有以下的定義:intt[3][2];

能正確表示t數(shù)組元素地址的表達(dá)式是。

A、&t[3][2]

B、t[3]

C、&i[l]

D、t[2]

15、執(zhí)行下列語句后,a和b的值分別為()。

inta,b;

a=l+'a';

b=2+7%-4-'A';

A、-63,-64

B、98,-60

C、1,-60

D、79,78

16、設(shè)n為整型變量,則循環(huán)語句for(n=10;n>0;n-)的循環(huán)次數(shù)為

A、10

B、9

C、11

D、12

17、設(shè)有結(jié)構(gòu)體的定義如下:

structdata

(

charcl;

charc2;

)

f

則sizeof(structdata)的值是。

A、2

B、3

C、4

D、5

18、下述程序的運(yùn)行結(jié)果是o

#include<stdio.h>

voidfun(intx)

(

putchar('O'+(x%10));

fun(x/10);

)

main()

(

printf(''\n'');

fun(1234);

)

A、4321

B、321

C、21

D、1

19、設(shè)charstr[100];inti=5;則引用數(shù)組元素的錯誤形式的是_____

A、str[I+10]

B、*(srr+

C^(str+I-1)

D、*(&(str++)+

20、下面程序的輸出是o

main()

(

structcmplx

(

intx;

inty;

)

cnum[2]={l,3,2,7};

printf(〃%d\n〃,cnum[0].y/cnum[0].x*cnum[l].x);

)

A、0

B、1

C、3

D、6

二、判斷題(每小題2分,共20分)

()1、變量被定義后,它的作用域和壽命就被確定了,并且不可?改變。

()2、c語言中非標(biāo)準(zhǔn)輸入輸出設(shè)備指的是鍵盤和顯示器。

()3、if語句不可以嵌套使用。

()4、while語句和do-while語句的一般形式分別如下,其主要區(qū)別

是:while語句先判斷循環(huán)條件,只有條件滿足才進(jìn)入循環(huán),如果一開始條件就不

滿足,則循環(huán)一次都不執(zhí)行。而do-while語句先執(zhí)行循環(huán)體,后判斷循環(huán)條

件,所以無論循環(huán)條件的值如何,至少會執(zhí)行一次循環(huán)體。

()5、c語言約定''0'計入字符串的長度。

()6、要使用標(biāo)準(zhǔn)輸入、輸出函數(shù),正常情況下應(yīng)該在文件的開頭加上以下內(nèi)

容:

^include<stdio.h>

ttincludc^stdio.h"。

()7、數(shù)組名作為函數(shù)參數(shù),傳送的是地址.

()8、函數(shù)一次可以返回兩個以上的值。

()9、fseck函數(shù)一般用于文本文件。

()10、非靜態(tài)全局變量的作用域可以擴(kuò)展到構(gòu)成該程序的其他源程序文件

中。

三、填空題(每小題4分,共20分)

1、全局的外部變量與函數(shù)體內(nèi)定義的局部變量同名時,在函數(shù)體內(nèi),________變

量起作用。

2、若有定義:inta[3][4]={{1,2},{0},{4,6,8,10}};

則初始化后,的值為________,a[2][1]得到的值為。

3、下列程序段的運(yùn)行結(jié)果是____o

main()

inti=l,s=0;

for(;;)

s=s+i;

i++;

if(i>4)break;

printf(級d\n〃,s);

4、將arr傳參到子函數(shù),接受處()內(nèi)函數(shù)定義該怎么寫?

5、有一輸入函數(shù)scanf(〃姒l〃,k);

則不能使用float變量k得到正確數(shù)值的原因是和o

scanf語句的正確形式應(yīng)該是:o

四、程序分析題(每小題5分,共20分)

1、下面程序的運(yùn)行結(jié)果是o

#include<stdio.h>

main()

inty=2,a=l;

while(y-!=~1)

(

do

(

a+-y;

a++;

)

while(y-);

)

printf(飛d,%d〃,a,y);

)

2、下面函數(shù)func的功能是o

#include<math.h>

longfunc(longnum)

(

longk=l;

num=labs(num);

do

(

k*=num%10;

num/=10;

}

while(num);

returnk;

)

main()

(

longn;

printf(z,\npleaseenteranumber:;

scanf&n);

printf(z,\ntheproductofitsdigitsis%ld./z,func(n));

}

3、已知"floatx=0.5;inty=8;〃,則算術(shù)表達(dá)式"(int)(x+y/5)〃的值是

4、^include<stdio.h>

ttinclude<string.h>

voidmain()

(

chara[10]={'a','b','c','d',''0','f','g','h',''0'};

inti,j;

i=sizeof(a);

J-sLrlen(a);

printf("%d,%d\n”,i,j);

)

五、編程題(每小題分,共50分)

1、輸入3個學(xué)生4門課的成績{(60,70,65,75),

(75,80,75,90),(95,75,90,65)},計算每個學(xué)生的總分和平均成績并輸出,結(jié)果

保留一位小數(shù)。(本題12分)

2、編寫程序:利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序打印

出來。(本題18分)

3、若有以下銀行卡信息:

structcard{

intid;〃銀行卡號

intbonus;〃金額

};

請編寫程序,從鍵盤輸入5條銀行卡記錄,使用結(jié)構(gòu)體數(shù)組存

儲這些數(shù)據(jù),并按金額升序排序,輸出排序后的結(jié)果。

【輸入形式】5條銀行卡記錄分行輸入,每行數(shù)據(jù)用空格間隔

【輸出形式】分5行輸出數(shù)據(jù),每行數(shù)據(jù)均使用空格間隔

【輸入樣例】

100120

100280

100350

100410

100640

【輸出樣例】

100410

100120

100640

100350

100280(本題20分)

參考答案

一、單項選擇題

1、D

【解析】此題屬于綜合題。首先,把二進(jìn)制小數(shù)0.1轉(zhuǎn)化成十進(jìn)制小數(shù):

(0.1)2=1X2-l=(0.5)10;然后把十進(jìn)制小數(shù)0.5轉(zhuǎn)化成十六進(jìn)制小數(shù):

0.5X16=8,而整數(shù)部分為0,所以(0.1)2=(0.5)10=(0.8)16

2、A

3、B

4、B

5、A

6、B

7、B

【解析】在C語言中,當(dāng)一次輸入多個數(shù)據(jù)的時候,數(shù)據(jù)之間要用間隔符,合

法的間隔符可以是空格、制表符和回年符。逗號不是合法的間隔符。

8、C

【解析】本題在定義字符數(shù)組時沒有定義數(shù)組長度,但是給數(shù)組賦了初值,這

時初值的個數(shù)即為數(shù)組的長度,故數(shù)組長度為6(包括'\0')。字符串的長度為

有效字符的個數(shù)5。因此printf語句中輸出的結(jié)果為5,6。

9、D

10、C

11、B

【解析】本題考查了字符數(shù)組的基本概念。選項A,因為數(shù)組元素的下標(biāo)只能

為整數(shù),所以選項A錯誤。選項C,引用數(shù)組中的元素,可以通過數(shù)組名和下

標(biāo)的方式來引用,只使用數(shù)組名不可以。

12、B

【解析】第一次調(diào)用f()函數(shù),返回值為1,第二次調(diào)用f()函數(shù),牽涉到函

數(shù)的遞歸調(diào)用,返回值為2。

13、A

【解析】+二是算術(shù)賦值運(yùn)算符。

14、D

15、B

16、A

17、A

18、A

19、D

20、D

二、判斷題

1、正確

2、錯誤

3、錯誤

4、正確

5、錯誤

6、正確

7、正確

8、錯誤

9、錯誤

10、正確

三、填空題

1、函數(shù)體內(nèi)定義的局部

2、「0','6']

3、10

4、int*arr

5、未指明變量k的地址,格式控制符與變量類型不匹配,scanf(〃%f〃,&k);

O

四、程序分析題

1、1,-2

2、計算一個數(shù)的各位數(shù)字之積。

3、1

4、10,4

【解析】sizeof運(yùn)算符判斷數(shù)據(jù)類型所占內(nèi)存字節(jié)大小,故i=10,該數(shù)組匕

10個字節(jié)的內(nèi)存;strlen函數(shù)則判斷字符串實際長度,不包含“\0”,該函數(shù)

遇到“\0”就會返回,故數(shù)組a的長度為4,即只計算了abed這四個字符。

五、編程題

1、^include

voidmain()

(

inta[3][4]={{60,70,65,75},{75,80,75,90},{95,75,90,65)};

inii,j;

floataverage,sum=0.0;

printf("三個學(xué)生的總分和平均成績依次為:\n〃);

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

sum=0.0;

for(j=0;j<4;j++)

sum=sum+a[i][j];

average=sum/4;

printf("%.2f,%.2f\n〃,sum,average);

}

)

2、^include<stdio.h>

intmain()

(

inti=5;

voidpalin(intn);

printf(〃請輸入5個字符\40:\40〃);

palin(i);

printf(〃\n〃);

)

voidpalin(n)

intn;

(

charnext;

if(n<=l){

next=getchar();

printf(〃相反順序輸出結(jié)果\40:\40〃);

putchar(next);

1else{

next=getchar();

palin(n-1);

putchar(next);

}

)

3、Sinclude<stdio.h>

ttinclude<stcllib.h>

structcard

(

intid;〃銀行卡號

intbonus;〃金額

}a[5],tamp;

intmain()

inti,j;

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

scanf(〃%d%d”,&a[i].id,&a[i].bonus);

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

(

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

(

if(a[j].bonus>a[j+l].bonus)

(

tamp=a[j];

a[j]=a[j+l];

a[j-l]=tamp;

)

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

printf(z,%d%d\n,\a[j].id,a[j].bonus);

)

}

計算機(jī)C語言期末(二)

(總分150分,考試時長120分鐘)

一、單項選擇題(每小題2分,共40分)

1、一個字長為8位的無符號二進(jìn)制整數(shù)能表示的十進(jìn)制數(shù)值范圍是______

A、0-256

B、0-255

C、1-256

D、1-255

2、下列數(shù)據(jù)中,為字符串常量的是()。

A、A

B、“house”

C、Howdoyoudo.

D、$abc

3、設(shè)有條件表達(dá)式::EXP)i++;j-,則以下表達(dá)式中(EXP)完全等價的是

A、(EXP=0)

B、(EXP!=0)

C、(EXP=1)

D、(EXP!=1)

4、若inti=10;

執(zhí)行下列程序后,變量i的正確結(jié)果是

switch(i)

(

case0:i+=l;

case10:i+=l;

case11:i+=l;

default:i+=l;

)

A、10

B、11

C、12

D、13

5、若有以下程序

#include<stdio.h>

main(){

inta=6,b=0,c=0;

for(;a;){

b+二a;

a-=++c;

)

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

)

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

A、0,14,3

B、1,14,3

C、0,18,3

D、0,14,6

6、以下敘述中正確的是o

A、在C程序中無論是整數(shù)還是實數(shù),只要在允許的范圍內(nèi)都能準(zhǔn)確無誤地

表示

B、C程序由主函數(shù)組成

C、C程序由若干函數(shù)組成

D、C程序中只允許包含一個函數(shù)

7、假設(shè)i和j是整型變量,以下語句()的功能是在屏幕上顯示形如i*j二

i*j的一句乘法口訣。例如,當(dāng)i=2,j=3時,顯示2*3=6。

A^printf(〃d*%d=%d\n”,i,j,i*j);

B、printf(z,%d*刎=%d\n〃,i,j,i*j);

C、printf(z,%d*%d=%d\n,z,i,j):

D、printf(〃%d=%d*%d\n〃,i,j,i*j);

8、下列數(shù)組說明中,正確的是o

A、intarray[][4];

B、intarray[][];

C、intarray[][][5];

D、intarray[3][];

9、下列各進(jìn)制的整數(shù)中,值最大的一個是o

A、T六進(jìn)制數(shù)78

B、十進(jìn)制數(shù)125

C、八進(jìn)制數(shù)202

D、二進(jìn)制數(shù)10010110

10、在下列各項中,運(yùn)算級別最低的為。

A、算術(shù)運(yùn)算符

B、關(guān)系運(yùn)算符

C、邏輯運(yùn)算符

D、圓括號()

11>下列描述中,正確的一條是。

A、關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”,可以賦給一個邏輯

變量

B、在C語言中,判斷一個量是否為:真”時,以0代表“假”,以1代表

“真”.

C、設(shè)a=3、b=4、c=5,則表達(dá)式?。▁;&&(y二&&0的值為0

D、一個數(shù)組的各人數(shù)組元素可屬于不同的數(shù)據(jù)類型

12、關(guān)于c語言的符號常量,以下敘述中正確的是o

A、符號常量的符號名是標(biāo)識符,但必須大寫

B、符號常量是指在程序中通過宏定義用一個符號名來代表一個常量

C、符號常量在整人程序中其值不能再被重新定義

D、符號常量的符號名必須是常量

13、char型常量在內(nèi)存中存放的是_______o

A、二進(jìn)制代碼值

B、十進(jìn)制代碼值

C、十六進(jìn)制代碼值

D、ASCII代碼值

14、以下敘述正確的是o

A、C程序總是以main。作為程序執(zhí)行的起始行

B、mainO函數(shù)若天帶參數(shù),其后面的一對圓括號可省略

C、函數(shù)體內(nèi)的定義語句和可執(zhí)行語句允許任意交替出現(xiàn)

D、C語言中的語句之間必須用分號作為分隔符

15、設(shè)有如下程序段:

union

inti;

charc;

}a;

a.i=12;

a.c-'a';

printf(z/\n%d/z,a.i);

這段程序執(zhí)行后,屏幕輸出的結(jié)果是..............................()

A、12

B、97

C、65

D、A

16、下列for循環(huán)的次數(shù)為—

for(inti=0,x=0;!x&&iV=5;i++)

A、5

B、6

C、1

D、無限

17、下面結(jié)構(gòu)體的定義語句中,錯誤的是—

A、structord{

intx;inty;intz;};structorda;

B、structord(

intx;inty;intz;}structorda;

C^structord(

intx;inty;intz;}n;

Dsstruct(

intx;inty;intz;}a;

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

char*alp□={"ABC",'"DEF〃,〃GHI〃};intj;puts(alp[l]);

A、A

B、B

C、D

D、DEF

19、下列關(guān)于c語言字符數(shù)組描述正確的是。

A、字符數(shù)組可以存放字符串

B、字符數(shù)組的下標(biāo)是從0開始的

C、字符數(shù)組不能輸出字符串

D、字符數(shù)組可以沒有‘'0'

20、在c語言中,系統(tǒng)為一個結(jié)構(gòu)體變量分配的內(nèi)存是

A、各成員所需內(nèi)存量的總和

B、結(jié)構(gòu)體第一個成員所需的內(nèi)存量

C、成員中占內(nèi)存量最大者所需的容量的整數(shù)倍

D、結(jié)構(gòu)體中最后一個成員所需的內(nèi)存量

二、判斷題(每小題2分,共20分)

()1、當(dāng)函數(shù)的實參與形參同名時,它們將共占內(nèi)存單元。()

()2、一個c程序要經(jīng)過編譯鏈接才能執(zhí)行。

()3、switch語句中的default必須出現(xiàn)在所有case之后。

()4、循環(huán)語句中如果包含若干條語句,則必須用大括號括起來

()5、比較兩個字符串是否相等不能通過條件運(yùn)算符〃二二〃。

()6、可以在一個函數(shù)中定義另一個函數(shù)。

()7、在用數(shù)組名作為函數(shù)實參時,傳遞的是數(shù)組的起始地址,所以就不允許

使用形參數(shù)組的形式

()8、c語言函數(shù)返回類型的默認(rèn)定義類型是

void。

()9、函數(shù)形參的存儲單元是動態(tài)分配的。

()10、若不希望其他源文件引用本文件中定義的全局變量,可在定義全局變

量時加上sbaLico

三、填空題(每小題4分,共20分)

1、循環(huán)語句for(i=0;iV3;i++)printf(〃*");

表達(dá)式i=0執(zhí)行【1】次,表達(dá)式i++執(zhí)行[2]________次。

2、有intx=3,y=-4,z=5;

則表達(dá)式(x&&y)=(x|z)的值為________。

3、結(jié)構(gòu)化設(shè)計中的三種基本結(jié)構(gòu)是順序,選擇,_____o

4、若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以

a=21,b=55的形式輸出,請寫出完整的的輸出語句。

5、c語言中對文件讀寫之前必須先打開文件,文件的打開是通過調(diào)用_______

函數(shù)來實現(xiàn)。

四、程序分析題(每小題5分,共20分)

1、有以下程序

ttinclude<string.h>

main()

chara□={'a','b','c','d','e','f',''0');

intj;

j=strlen(a);

printf("%d\n",j);

)

程序運(yùn)行后的輸出結(jié)果是O

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

main()

(

inta;

printf("%d\n〃,(a=3*4,a*5,a+5));

}

3、下面程序段的運(yùn)行結(jié)果是o

i=l:

a=0;

s=l;

do

(

a=a+s*i;

s=-s;

i++;

)

while(i<=10);

printf(〃a=%d”,a);

4、程序運(yùn)行結(jié)果是o

voidswap(inta[2])

(

intt;

l-a[0];

a[0]=a[l];

}

voidmain0

(

intx[2]={5,8};

swap(x);

printf(z,x[O]=%d,x[l]=%d\n,,,x[0],x[l]);

}

五、編程題(每小題分,共50分)

1、編寫程序:計算1到100之間的奇數(shù)之和及偶數(shù)之和(本題12分)

2、編寫程序:從鍵盤上輸入一個數(shù)字組成的字符串(字符串長度小于8),將該

字符串轉(zhuǎn)換成一個十進(jìn)制數(shù)

例如:從鍵盤上輸入2345,則程序運(yùn)行的結(jié)果應(yīng)當(dāng)為:產(chǎn)2345()(本題18分)

3、計算n名學(xué)生成績的平均分并通過函數(shù)返回。要求:

結(jié)構(gòu)體代碼如下:

structStudentScore(

doublescore;

);(本題20分)

參考答案

一、單項選擇題

1、B

【解析】無符號數(shù),即自然數(shù)。8位無符號的二進(jìn)制數(shù)的范圍是00000000?

11111111,轉(zhuǎn)換成十進(jìn)制就是0?255。

2、B

3、B

【解析】條件表達(dá)式的形式為:“表達(dá)式1表達(dá)式2:表達(dá)式3”o其含義為:

當(dāng)“表達(dá)式1”的值為非零時,求出“表達(dá)式2”的值,此時“表達(dá)式2”的值

就是整個條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時,求出“表達(dá)式3”的

值,此時“表達(dá)式3”的值就是整個條件表達(dá)式的值。對于本題來說,當(dāng)表達(dá)

式EXP為非0值時條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時,執(zhí)行語句卜

這等同于條件表達(dá)式“(EXP!=0)i++:i++;”

4、D

5、A

【解析】循環(huán)執(zhí)行3次,使a為0,循環(huán)結(jié)束,最終abc分別為0143,所

以選擇A。

6、C

7、B

8、A

9、D

【解析】不同進(jìn)制數(shù)之間的比較,必須統(tǒng)一轉(zhuǎn)換成同一進(jìn)制的數(shù)。一般,轉(zhuǎn)換

成十進(jìn)制數(shù)比較方便。十六進(jìn)制數(shù)78轉(zhuǎn)換成十進(jìn)制數(shù)是120;二進(jìn)制數(shù)

10010110轉(zhuǎn)換成十進(jìn)制數(shù)是150;八進(jìn)制數(shù)202轉(zhuǎn)換成十進(jìn)制數(shù)是130o

10、C

【解析】如果在同一個表達(dá)式中出現(xiàn)不同的運(yùn)算符,其優(yōu)先順序為:先執(zhí)行算

術(shù)運(yùn)算、字符串運(yùn)算和日期時間運(yùn)算,其次執(zhí)行關(guān)系運(yùn)算,最后執(zhí)行邏輯運(yùn)

算。如果在表達(dá)式中包含圓括號,首先應(yīng)該計算出圓括號中的結(jié)果,其優(yōu)先級

最高。

11、D

12、B

【解析】在C語言中可以用一個標(biāo)識符來代表一個常量稱為符號常量。這個標(biāo)

識符必須在程序中進(jìn)行特別的指定并符合標(biāo)識符的命名規(guī)則。用作符號常量的

標(biāo)識符通常采用大寫字母表示在主函數(shù)中其值不能再被定義。所以選擇B選

項。

13、D

14、A

15、C

16、B

17、B

18、D

19、C

20、C

二、判斷題

1、錯誤

2、正確

3、錯誤

4、正確

5、正確

6、錯誤

7、錯誤

8、錯誤

9、正確

10、正確

三、填空題

1、[1]1[2]3

2、1

3、循環(huán)

4、['printf("a=%d,b=%d”,a,b)]

5、fopen#fopen()Sfopen()

四、程序分析題

1、6

2、17

3、a=-5

4、x[0]=8,x[l]=5

五、編程題

1、^include<stdio.h>

main()

(

inta,b,c,i;

a=0;

c=0;

for(i=0;i<=100:i+=2)

a+=i;

b=i+l;

c+=b;

}

printf(z/sumofevensis%d\n〃,a);

printf(''sumofoddsis%d\n,z,c-101);

)

2、^include“stdio.h〃

main()

(

chars[10];

inti;

longintn=0;

scanf(〃/s〃,s);

for(i=0;i<strlen(s);i++)

n=n*10+s[i]-,O';

printfCn=%ld\n",n);

}

3、doubleFun(structStudcntScore*a,intn){

inti;

doublesum=0.0;

for(i=0;i<n;i~+)

(

sum十二aFil.score:

}

returnsum/n;

)

intmain()

(

structStudentScorea[100];

intn;〃學(xué)生數(shù)量

inii;

printf(〃請輸入學(xué)生數(shù)量:〃);

scanf(〃%d〃,&n);

for(i=0;i<n;i-+)

(

printf(〃請輸入第%d個學(xué)生的成績:〃,i+1);

scanf&a[i].score);

)

printf("機(jī)f〃,F(xiàn)un(a,n));

return0;

}

請輸入學(xué)生數(shù)量:3

請輸入第1個學(xué)生的成績:90

請輸入第2個學(xué)生的成績:100.0

請輸入第3個學(xué)生的成績:80

90.000000

計算機(jī)C語言期末(三)

(總分150分,考試時長120分鐘)

一、單項選擇題(每小題2分,共40分)

1、程序運(yùn)行輸出了錯誤的結(jié)果,可以排除下列哪一個因素。

A、算法錯誤

B、運(yùn)行時輸入數(shù)據(jù)錯誤

C、未通過編譯

D、系統(tǒng)資源配置穴當(dāng)

2、下列標(biāo)識符,不合法的是o

A、abc

B、_d

C、123

D、el

3、已知i、j、k為int型變量,若要從鍵盤輸入2、3、4<cr>,使i、j、k

的值分別為2、3、4,下列正確的輸入語句是o

A、scanf(〃%3d,%o3d,%3d〃,&i,&j,%k);

B、scanf(〃%d,%d,%d〃,&i,8Lj,&k);

C、scanf(〃%d%d%d〃,&i,&j,&k);

D、scanfCi=%d,j=%d,k=%d〃,&i,&j,&k);

4、當(dāng)從鍵盤上輸入字符〃12134211〃下面程序的輸出結(jié)果是o

main()

(

chars;

intvl=0,v2=0,v3=0,v4=0,k;

for(k=0;k<=7;k-+)

(

scanf&s);

switch(s)

(

default:v4++;

case'1':vl++;

case'3':v3++;

case'2':v2++;

printf(z,vl=%d,v2=%d,v3=%d,v4=%d\n〃,vl,v2,v3,v4);

}

A、vl=4,v2=2,v3=l,v4=l

B>vl=4,v2=9,v3=3,v4=l

C、vl=5,v2=8,v3=6,v4=l

D、vl=8,v2=8,v3=8,v4=8

5、在C語言中,為了結(jié)束由while語句構(gòu)成的循環(huán),while后一對圓括號中

表達(dá)式的值應(yīng)該為

A、0

B、1

C、TRUE

D、非0

6、在c語言中,不允許有常量的數(shù)據(jù)類型是o

A、整型

B、結(jié)構(gòu)型

C、字符型

D、字符串

7、與十進(jìn)制數(shù)96等值的二進(jìn)制是o

A、01100000

B、10010110

C、01100001

D、01100011

8、下列選項中,能夠正確定義數(shù)組的語句是。

A、intnum[0..2008];

intnum[];

C、intN=2008;

D、SdefineN2008

intnum[N];intnum[N]

9、以下標(biāo)識符中,不能作為合法的c用戶定義標(biāo)識符的是o

A、For

B、pririLf

C、WORD

D、sizeof

10、下列選項中,值為1的表達(dá)式是_______o

A、1-'0'

B、

C、'1'-0

D、'\0','0'

11>下面程序輸出數(shù)組中的最大值,由S指針指向該元素.

voidmain()

(

inta[10]=(6,7,2,9,1,10,5,8,4,3,},*p,xs;

for(p=a,s=a;p-a<10;p++)

if()s=p;

printf("themax:%d”,*s):

)

則在if語句中的判斷表達(dá)式應(yīng)該是o

A、p>s

B、*p>*s

C^a[p]>a[s]

D、p-a>p-s

12、下列程序的輸出結(jié)果是________。

intfl(intx,inty)

(

returnx>y?x:y:

)

intf2(intx,inty)

(

returnx>y?y:x:

}

main()

(

inta=4,b=3,c=5,d=2,e,f,g;

e=f2(fl(a,b),fl:c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n,z,e,f,g);

)

A、4,3,7

B、3,4,7

C、5,2,7

D、2,5,7

13>有輸入語句:scanf("a=%d,b=%d,c=%d〃,&a,&b,&c);

為使變量a的值為1,b為3,c為2,從鍵盤輸入數(shù)據(jù)的正確形式應(yīng)當(dāng)是

________。(注:-表示空格)

A、132V回車,

B、1,3,2V回車〉

C、a=l1—1b=3LJc=2V回車〉

D、a=l,b=3,c=2V回車〉

14、下列一維數(shù)組定義正確的是o

Axx=5;intnum[x];

B、constihtx=5;floatnum[x];

C、constfloatx=5;intnum[x];

D、constinLx;x-5;iriLnum[x];

15、有以下程序

voidfun(char**D)

(

++P:

printf("%s”,*p);

)

mainO

(

char*a[]={MMornin9,>,AfternoonEvening",Nightw);

fun(a):

)

程序的運(yùn)行結(jié)果是_______。

A、Afternoon

B、fternoon

C、Morning

D、orning

16、有以下程序

#include<stdio.h>

intmain()

(

intm[][3]={1,4,7,2,5,8,3,6,9};

inti,j,k=2;

ror(i-0;i<3;i+-)prinLrC%2d\m[k][i]);

)

執(zhí)行后輸出結(jié)果是o

A、456

B、258

C、369

D、789

17、有以下程序

ttinclude<stdlib.h>

structnode

(

intnum;

structnode*next;

};

main()

(

structnode*p,xq,*「;

intsum=0;

p=(structnodex)malloc(sizeof(structnode));

q=(structnodex)malloc(sizeof(structnode));

r=(structnodemalloc(sizeof(structnode));

p->num=l;

q->num=2;

r->num=3;

p->ncxt=q;

q->next=r;

r->next=null;

sum+=q->next->num;

sum+=p->num;

printfsum):

)

執(zhí)行后的輸出結(jié)果是。

A、3

B、4

C、5

D、6

18、有以下程序:

main()

(

intx=102,y=012:

printf(〃%2d,%2d\n〃,x,y);

)

執(zhí)行后輸出結(jié)果是O

A、10,01

B、02,12

C、102,10

D、02,10

19、下面關(guān)于數(shù)組的初始化正確的是o

A、charstr[]={'a','b','c'}

B、charstr[2]={'a','b','c'}

C、charstr[2][3]={{,a,,5b),},{'c','d'},{'e','f'}}

D、charstr()='b','c'}

20、有以下程序

#include<stdio.h>

main()

(

structstu

(

charname[9];

charsex;

doublescore[2];

)

structstua={"zhao",'m,85.0,90.0),b={"qian",'f',95.0,92.0};

b二a;

printf(/z%s,%c,%2.Of,%2.0f\n〃,b.name,b.sex,b.score[0],b.score[1]);

}

程序的運(yùn)行結(jié)果是_____o

A、Qian,f,95,92

B、Qian,m,85,90

C、Zhao,f,95,92

D、Zhao,m,85,90

二、判斷題(每小題2分,共20分)

()1、c語言中,當(dāng):nt型與double型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算時,數(shù)據(jù)類型由

double型向int型轉(zhuǎn)換。

()2、表達(dá)式0195是一個八進(jìn)制整數(shù)。

()3、switch語句中的case和default的出現(xiàn)次序是任意的。

()4、while語句的一般形式如下,其中的循環(huán)體語句只能是一條語句。

while(表達(dá)式)循環(huán)體語句

()5、chars="CLanguage";表示s是一個指向字符串的指針變量,把字

符串的首地址賦予s

()6、在一個函數(shù)中調(diào)用另一個被調(diào)函數(shù)時,如果被調(diào)用函數(shù)在主調(diào)函數(shù)之前

定義,可以不進(jìn)行說明。

()7、用字符串常量給數(shù)組賦初值時,如果提供的字符個數(shù)小于數(shù)組的長度,

則在最后一個字符后加'\0'作為字符串結(jié)束標(biāo)志。

()8、在c語言程序設(shè)計中函數(shù)是允許嵌套定義的。

()9、函數(shù)名代表該函數(shù)的入口地址。因此,可用函數(shù)名給指向函數(shù)的指針

變量賦值

()10、c語言程序是從源文件的第一條語句開始執(zhí)行的

三、填空題(每小題4分,共20分)

1、數(shù)學(xué)表達(dá)式lOOVa或者aV-20改寫為c語言表達(dá)式是。注:表達(dá)

式要在英文半角狀態(tài)下按原表達(dá)式順序書寫,且表達(dá)式中不要留空格。

2、C語言提供的三種邏輯運(yùn)算符是o

3、c語言三個循環(huán)語句分別while語句語句和語句。

4、以下函數(shù)值的類型是[1]0

fun(floatx)

floaty;

y=3*x-4;

returny;

5、全局變量又稱外部變量,是在函數(shù)定義的變量。

四、程序分析題(每小題5分,共20分)

1、Sinclude<stdio.h>

voidmain()

(

inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;

for(i=0;i<3;i+-)s+=a[i][i]+a[i][3-i-l];

printf("%d\n〃,s);

)

2、有一下程序

#include<stdio.h>

main()

(

intf,fl,f2,i;

fl=0;

f2=l;

printf(,z%d%d〃,門,f2);

for(i=3;i<=5;i-+)

(

f=fl+f2;

printf(級d〃,f);

fl=f2;

f2=f;

}

printf(〃\n〃);

}

程序運(yùn)行后的輸出結(jié)果是O

3、以下程序可求出所有的水仙花數(shù)。(水仙花數(shù)是三位正數(shù),其各位數(shù)字的立

方和等于該正數(shù),如:407=4*4*4+0*0*0+7*7*7)main()

(

intx,y,z,a[8],n,i=0;

printf(z/thespecialnumbersare:\n");

for([1]________;ni++)

x=m/100;

y=[2]

z=m%10;

if(m=x*x*x+y*y*y+z*z*z)

(

[3];

i++;

}

}

for(x-0;x<i;x-+)prinIf(%6d,z,a[x]);

}

4、下面程序的功能是求出用數(shù)字0至9可以組成多少個不重復(fù)的三位偶數(shù)。

請分析程序填空。

#include<stdio.h>

main()

(

inin-0,i,j,k;

for(i=l;i<=9;i-+)

for(k=0;k<=8;[1]________)

if(k!=i)for(j=0:j<=9;j++)

if([2])n++;

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

}

五、編程題(每小題分,共50分)

1、打印樓梯,同時在樓梯上方打印兩個笑臉。(本題12分)

2、編寫程序,判斷從鍵盤輸入的字符中數(shù)字字符的個數(shù)、大寫字母的個數(shù)、小

寫字母的個數(shù)及其它字符的個數(shù),以*作為字符輸入結(jié)束標(biāo)志。(本題18分)

3、輸入n個朋友的信息,包括姓名、生日、電話號碼,本題要求編寫程序,按

照年齡從大到小的順序依次輸出通訊錄。題目保證所有人的生日均不相同。

輸入格式:

輸入第一行給出正整數(shù)n(<10)o隨后n行,每行按照“姓名生日電話號

碼”的格式給出一位朋友的信息,其中“姓名”是長度不超過10的英文字母組

成的字符串,“生日”是yyyymmdd格式的日期,“電話號碼”是不超過17位

的數(shù)字及+、-組成的字符串。

輸出格式:

按照年齡從大到小輸出朋友的信息,格式同輸出。

輸入樣例:

3

zhang1985040313912345678

wang19821020+86/p>

qian1984061913609876543

輸出樣例:

wang19821020+86/p>

qian1984061913609876543

zhang1985040313912345678(本題20分)

參考答案

一、單項選擇題

1、C

2、C

【解析】123不是合法的標(biāo)識符,標(biāo)識符不能以數(shù)字開頭。

3、B

4、C

5、A

6、B

7、A

8、D

9、D

10、B

【解析】在C程序中,字符量可參與任何整數(shù)運(yùn)算。字符參與運(yùn)算時,首先要

將字符轉(zhuǎn)換為對應(yīng)的ASCII碼值再參與整數(shù)運(yùn)算。字符'1'對應(yīng)的ASCTT碼值是

49,字符'0'對應(yīng)的ASCII碼值是48,字符'\0'是字符串結(jié)束標(biāo)識符NULL,其

對應(yīng)的ASCII碼值是0。

11、B

12、A

【解析】根據(jù)函數(shù)intfl(intx,inty){

returnx>yx:y;}和intf2(intx,inty){

returnx)>y:x;}的定義可知,如果x>y成立,則函數(shù)fl返回x的值,函

數(shù)f2返回y的值。所以fl(a,b)=4,fl(c,d)=5,f2(a,b)=3,f2(c,d)=2,故

e=f2(4,5),f二門⑶2)=3,g=4+3+5+2-4-3二7。

13、D

14、B

【解析】數(shù)組的卜標(biāo)不能是變量,不能為非整數(shù),定義為常量的標(biāo)識符不能再

用來賦值,只能在定義時初始化。

15、A

16、C

【解析】變量k的初值為2,循環(huán)執(zhí)行了3次,分別輸出口[2][0]、成2][1]和

m[2][2],其值分別為3,6,9。

17、B

18、C

19、A

【解析】本題考查的是字符數(shù)組的初始化。選項B)中用3個元素初始化大小為

2的數(shù)組,越界了;選項C)中應(yīng)該是2行3列的數(shù)組,題中使用3行2列初始

化;選項D)中數(shù)組合后應(yīng)用方括號。

20、D

二、判斷題

1、錯誤

2、錯誤

3、正確

4、正確

5、正確

6、正確

7、正確

8、錯誤

9、正確

10、錯誤

三、填空題

1、100<alla<-20#a<-2011100<a#a>10011a<-20#a<-2011a>1008100<

all-20>a#-20>alll00<a#a>10011-20>a#-20>alla>100

2、&,//,!

3、['(10,力"2語句‘,'1'0『語句’]

4、int

5、夕卜部#夕卜

四、程序分析題

1、30:該程序的作用是將數(shù)組的對角線上的數(shù)字相加。

2、「01123']

3、【1】m=100;

m<1000[2]m/10%10或m%100/10[3]a[i]=m

4、【1】k+=2[2]i!=j&&k!=j

五、編程題

1、程序分析:用i控制行,j來控制列,j根據(jù)i的變化來控制輸出黑方格的

個數(shù)。

程序源代碼:

#include"stdio.h"

main()

inti,j;

printf(〃\l\l\n〃);/*輸出兩個笑臉*/

for(i=l;i<ll;i+-)

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

printfC%c%cz,,219,219);

printf(〃\n");

)

2、voidmain()

(

inti,x,m=0,n=0,k=0,j=0;

chara[20];

printf(〃請輸入字符串:〃);

gets(a);

x=strlen(a);

for(i=0;i='O'&&a[i"二'9')

m++;

elseif(a[i]>=,A*&&a[i]<=,7!)

n++;

elseif(a[i]>=,a&&a[i]<=,z)

k++;

else

j++;

}

printf(*%d,%d,%d,%d\n,z,m,n,k,j):

)

3、Sinclude<stdio.h>

structmessage

(

charnamel[30];

charname2[30];

charname3[30];

doubleprice;

};

structmessaged[10];

intmain()

intN;

scanf(〃%d”,&N);

inti,j;

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

{

scanf(,z%s%s%s*,d[i].namel,d[i].nane2,d[i].name3);

scanf&d[i].price);

)

intt,r;

doublemax,min;

niax-iiiin-d[O].price;

for(j=0;j<N;j++)

(

if(min>d[j].price)

(

min=d[j].price;

t=j;}

if(max<d[j].price)

(

max=d[j].price;

r二j;

)

}

printf(,z%.21f,%s%s%s\nz,,max,d[r].namel,d[r].name2,d[r].name3);

printf(/z%.21f,%s%s%s\nz\min,d[t].namel,d[t].name2,d[t].name3);

return0;

}

計算機(jī)C語言期末(四)

(總分150分,考試時長120分鐘)

一、單項選擇題(每小題2分,共40分)

1、若ch為char型變量,k為int型變量(已知字符a的ascii十進(jìn)制代碼為97),

則以下程序段的執(zhí)行結(jié)果是och=,a;

k=12;

printf("%x,%o,ch,ch,k);

printfCk=%%d\n",k);

A、因變量類型與格式描述符的類型不匹配,輸出無定值

B、輸出項與格式描述符個數(shù)不符,輸出為零值或不定值

C、61,141,k=%d

D、61,141,k=%12

2、設(shè)x的值為4,則表達(dá)式y(tǒng)=(++x)+(++x)+(++x)后,y的值是。

A、12

B、18

C、16

D、21

3、若有以下數(shù)組說明,則i=10;a[a[i]]元素數(shù)值是—o

inta[12]={l,4,7,10,2,5,8,11,3,6,9,12);

A、10

B、9

C、6

D、5

4、與〃y=(x>0?l:xVO?T:0)〃;的功能相同的if語句是。

A、if(x>0)y=l;

B、if(x)

elseif(x>0)y=l;

elsey=0;elseif(x%0)y=-l;

elsey=0;

C、y=-l

y=0;

if(x)if(x>=0)

if(x>0)y=l;if(xi>=0)y=l;

elseif(x-0)y=0;elsey=-l;

elsey=-l;

5、下列程序的運(yùn)行結(jié)果是o

voidmain()

(

ints=0,k;

for(k=7;k>l;k-)

(

switch(k)

(

case1:case4:case7:s++:break;

case2:case3:case6:break;

case0:case5:s+=2:break;

}

}

printf("s=%d",s);

)

A^s=3

B、s=4

C、s=5

D、無輸出結(jié)果

6、以下程序中函數(shù)scmp的功能是返回形參指針si和s2所指字符串中較小字

符串的首地址

ttinclude<stdio.h>

#include〈string.h>

char*scmp(char*sl,char*s2)

(

if(strcmp(sl,s2;<0)return(si);

elsereturn(s2):

)

main()

(

inii;

charstring[20],str[3][20];

for(i=0;i<3;i+~)gets(str[i]);

st

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論