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

下載本文檔

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

文檔簡介

計算機C語言期末(一)

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

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

1、與二進制小數0.1等值的十六進制小數為o

A、0.1

B、0.2

C、0.4

D、0.8

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

達式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};則數值不為9的

表達式是.

A、a[10-l]

B、a[8]

C、a[9]-0

D、a[9]-a[0]

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

A、其之前最近的述配對

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

C、縮進位置相同的if配對

D、第一個if配對

5、下列c語言程序段中關于while循環體正確的說法是

inti=l;

while(b)

i++;

if(i>3)break;

}

A、三次循環

B、四次循環

C、五次循環

D、六次循環

6、若執行fopen函數時發生錯誤,則函數的返回值是()。

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));

)

執行后輸出結果是O

A、賦初值的字符串有錯

B、6,7

C、5,6

D、6,6

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

A、八進制數

B、十進制數

C、十六進制數

D、非法數

10、設char*s二〃\ta\017bc〃;

則指針變量S指向的字符串所占的字節數是O

A、9

B、5

C、6

D、7

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

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

常量

B、一維數組的元素實質上就是一個變量,代表內存中的一個存儲單元

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

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;;

)

程序運行后的輸出結果是________。

A、4

B、3

C、2

D、1

13、下列運算符中,不屬于關系運算符的是o

A、+二

B、!=

C、<=

D、=

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

能正確表示t數組元素地址的表達式是。

A、&t[3][2]

B、t[3]

C、&i[l]

D、t[2]

15、執行下列語句后,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、設n為整型變量,則循環語句for(n=10;n>0;n-)的循環次數為

A、10

B、9

C、11

D、12

17、設有結構體的定義如下:

structdata

(

charcl;

charc2;

)

f

則sizeof(structdata)的值是。

A、2

B、3

C、4

D、5

18、下述程序的運行結果是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、設charstr[100];inti=5;則引用數組元素的錯誤形式的是_____

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語言中非標準輸入輸出設備指的是鍵盤和顯示器。

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

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

是:while語句先判斷循環條件,只有條件滿足才進入循環,如果一開始條件就不

滿足,則循環一次都不執行。而do-while語句先執行循環體,后判斷循環條

件,所以無論循環條件的值如何,至少會執行一次循環體。

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

()6、要使用標準輸入、輸出函數,正常情況下應該在文件的開頭加上以下內

容:

^include<stdio.h>

ttincludc^stdio.h"。

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

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

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

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

中。

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

1、全局的外部變量與函數體內定義的局部變量同名時,在函數體內,________變

量起作用。

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

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

3、下列程序段的運行結果是____o

main()

inti=l,s=0;

for(;;)

s=s+i;

i++;

if(i>4)break;

printf(級d\n〃,s);

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

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

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

scanf語句的正確形式應該是:o

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

1、下面程序的運行結果是o

#include<stdio.h>

main()

inty=2,a=l;

while(y-!=~1)

(

do

(

a+-y;

a++;

)

while(y-);

)

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

)

2、下面函數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;〃,則算術表達式"(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個學生4門課的成績{(60,70,65,75),

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

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

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

出來。(本題18分)

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

structcard{

intid;〃銀行卡號

intbonus;〃金額

};

請編寫程序,從鍵盤輸入5條銀行卡記錄,使用結構體數組存

儲這些數據,并按金額升序排序,輸出排序后的結果。

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

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

【輸入樣例】

100120

100280

100350

100410

100640

【輸出樣例】

100410

100120

100640

100350

100280(本題20分)

參考答案

一、單項選擇題

1、D

【解析】此題屬于綜合題。首先,把二進制小數0.1轉化成十進制小數:

(0.1)2=1X2-l=(0.5)10;然后把十進制小數0.5轉化成十六進制小數:

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

2、A

3、B

4、B

5、A

6、B

7、B

【解析】在C語言中,當一次輸入多個數據的時候,數據之間要用間隔符,合

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

8、C

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

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

有效字符的個數5。因此printf語句中輸出的結果為5,6。

9、D

10、C

11、B

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

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

標的方式來引用,只使用數組名不可以。

12、B

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

數的遞歸調用,返回值為2。

13、A

【解析】+二是算術賦值運算符。

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、函數體內定義的局部

2、「0','6']

3、10

4、int*arr

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

O

四、程序分析題

1、1,-2

2、計算一個數的各位數字之積。

3、1

4、10,4

【解析】sizeof運算符判斷數據類型所占內存字節大小,故i=10,該數組匕

10個字節的內存;strlen函數則判斷字符串實際長度,不包含“\0”,該函數

遇到“\0”就會返回,故數組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("三個學生的總分和平均成績依次為:\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(〃相反順序輸出結果\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);

)

}

計算機C語言期末(二)

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

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

1、一個字長為8位的無符號二進制整數能表示的十進制數值范圍是______

A、0-256

B、0-255

C、1-256

D、1-255

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

A、A

B、“house”

C、Howdoyoudo.

D、$abc

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

A、(EXP=0)

B、(EXP!=0)

C、(EXP=1)

D、(EXP!=1)

4、若inti=10;

執行下列程序后,變量i的正確結果是

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);

)

則程序的輸出結果是______。

A、0,14,3

B、1,14,3

C、0,18,3

D、0,14,6

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

A、在C程序中無論是整數還是實數,只要在允許的范圍內都能準確無誤地

表示

B、C程序由主函數組成

C、C程序由若干函數組成

D、C程序中只允許包含一個函數

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

i*j的一句乘法口訣。例如,當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、下列數組說明中,正確的是o

A、intarray[][4];

B、intarray[][];

C、intarray[][][5];

D、intarray[3][];

9、下列各進制的整數中,值最大的一個是o

A、T六進制數78

B、十進制數125

C、八進制數202

D、二進制數10010110

10、在下列各項中,運算級別最低的為。

A、算術運算符

B、關系運算符

C、邏輯運算符

D、圓括號()

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

A、關系表達式的值是一個邏輯值,即“真”或“假”,可以賦給一個邏輯

變量

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

“真”.

C、設a=3、b=4、c=5,則表達式!(x;&&(y二&&0的值為0

D、一個數組的各人數組元素可屬于不同的數據類型

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

A、符號常量的符號名是標識符,但必須大寫

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

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

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

13、char型常量在內存中存放的是_______o

A、二進制代碼值

B、十進制代碼值

C、十六進制代碼值

D、ASCII代碼值

14、以下敘述正確的是o

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

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

C、函數體內的定義語句和可執行語句允許任意交替出現

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

15、設有如下程序段:

union

inti;

charc;

}a;

a.i=12;

a.c-'a';

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

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

A、12

B、97

C、65

D、A

16、下列for循環的次數為—

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

A、5

B、6

C、1

D、無限

17、下面結構體的定義語句中,錯誤的是—

A、structord{

intx;inty;intz;};structorda;

B、structord(

intx;inty;intz;}structorda;

C^structord(

intx;inty;intz;}n;

Dsstruct(

intx;inty;intz;}a;

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

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

A、A

B、B

C、D

D、DEF

19、下列關于c語言字符數組描述正確的是。

A、字符數組可以存放字符串

B、字符數組的下標是從0開始的

C、字符數組不能輸出字符串

D、字符數組可以沒有‘'0'

20、在c語言中,系統為一個結構體變量分配的內存是

A、各成員所需內存量的總和

B、結構體第一個成員所需的內存量

C、成員中占內存量最大者所需的容量的整數倍

D、結構體中最后一個成員所需的內存量

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

()1、當函數的實參與形參同名時,它們將共占內存單元。()

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

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

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

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

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

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

使用形參數組的形式

()8、c語言函數返回類型的默認定義類型是

void。

()9、函數形參的存儲單元是動態分配的。

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

量時加上sbaLico

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

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

表達式i=0執行【1】次,表達式i++執行[2]________次。

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

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

3、結構化設計中的三種基本結構是順序,選擇,_____o

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

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

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

函數來實現。

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

1、有以下程序

ttinclude<string.h>

main()

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

intj;

j=strlen(a);

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

)

程序運行后的輸出結果是O

2、以下程序的輸出結果是_____________。

main()

(

inta;

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

}

3、下面程序段的運行結果是o

i=l:

a=0;

s=l;

do

(

a=a+s*i;

s=-s;

i++;

)

while(i<=10);

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

4、程序運行結果是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之間的奇數之和及偶數之和(本題12分)

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

字符串轉換成一個十進制數

例如:從鍵盤上輸入2345,則程序運行的結果應當為:產2345()(本題18分)

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

結構體代碼如下:

structStudentScore(

doublescore;

);(本題20分)

參考答案

一、單項選擇題

1、B

【解析】無符號數,即自然數。8位無符號的二進制數的范圍是00000000?

11111111,轉換成十進制就是0?255。

2、B

3、B

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

當“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值

就是整個條件表達式的值;當“表達式1”的值為零時,求出“表達式3”的

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

式EXP為非0值時條件成立,即執行語句i++;當EXP等于0時,執行語句卜

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

4、D

5、A

【解析】循環執行3次,使a為0,循環結束,最終abc分別為0143,所

以選擇A。

6、C

7、B

8、A

9、D

【解析】不同進制數之間的比較,必須統一轉換成同一進制的數。一般,轉換

成十進制數比較方便。十六進制數78轉換成十進制數是120;二進制數

10010110轉換成十進制數是150;八進制數202轉換成十進制數是130o

10、C

【解析】如果在同一個表達式中出現不同的運算符,其優先順序為:先執行算

術運算、字符串運算和日期時間運算,其次執行關系運算,最后執行邏輯運

算。如果在表達式中包含圓括號,首先應該計算出圓括號中的結果,其優先級

最高。

11、D

12、B

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

識符必須在程序中進行特別的指定并符合標識符的命名規則。用作符號常量的

標識符通常采用大寫字母表示在主函數中其值不能再被定義。所以選擇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、循環

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;〃學生數量

inii;

printf(〃請輸入學生數量:〃);

scanf(〃%d〃,&n);

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

(

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

scanf&a[i].score);

)

printf("機f〃,Fun(a,n));

return0;

}

請輸入學生數量:3

請輸入第1個學生的成績:90

請輸入第2個學生的成績:100.0

請輸入第3個學生的成績:80

90.000000

計算機C語言期末(三)

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

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

1、程序運行輸出了錯誤的結果,可以排除下列哪一個因素。

A、算法錯誤

B、運行時輸入數據錯誤

C、未通過編譯

D、系統資源配置穴當

2、下列標識符,不合法的是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、當從鍵盤上輸入字符〃12134211〃下面程序的輸出結果是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語言中,為了結束由while語句構成的循環,while后一對圓括號中

表達式的值應該為

A、0

B、1

C、TRUE

D、非0

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

A、整型

B、結構型

C、字符型

D、字符串

7、與十進制數96等值的二進制是o

A、01100000

B、10010110

C、01100001

D、01100011

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

A、intnum[0..2008];

intnum[];

C、intN=2008;

D、SdefineN2008

intnum[N];intnum[N]

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

A、For

B、pririLf

C、WORD

D、sizeof

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

A、1-'0'

B、

C、'1'-0

D、'\0','0'

11>下面程序輸出數組中的最大值,由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語句中的判斷表達式應該是o

A、p>s

B、*p>*s

C^a[p]>a[s]

D、p-a>p-s

12、下列程序的輸出結果是________。

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,從鍵盤輸入數據的正確形式應當是

________。(注:-表示空格)

A、132V回車,

B、1,3,2V回車〉

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

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

14、下列一維數組定義正確的是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):

)

程序的運行結果是_______。

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]);

)

執行后輸出結果是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):

)

執行后的輸出結果是。

A、3

B、4

C、5

D、6

18、有以下程序:

main()

(

intx=102,y=012:

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

)

執行后輸出結果是O

A、10,01

B、02,12

C、102,10

D、02,10

19、下面關于數組的初始化正確的是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]);

}

程序的運行結果是_____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語言中,當:nt型與double型數據進行算術運算時,數據類型由

double型向int型轉換。

()2、表達式0195是一個八進制整數。

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

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

while(表達式)循環體語句

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

符串的首地址賦予s

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

定義,可以不進行說明。

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

則在最后一個字符后加'\0'作為字符串結束標志。

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

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

變量賦值

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

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

1、數學表達式lOOVa或者aV-20改寫為c語言表達式是。注:表達

式要在英文半角狀態下按原表達式順序書寫,且表達式中不要留空格。

2、C語言提供的三種邏輯運算符是o

3、c語言三個循環語句分別while語句語句和語句。

4、以下函數值的類型是[1]0

fun(floatx)

floaty;

y=3*x-4;

returny;

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

四、程序分析題(每小題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〃);

}

程序運行后的輸出結果是O

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

方和等于該正數,如: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、下面程序的功能是求出用數字0至9可以組成多少個不重復的三位偶數。

請分析程序填空。

#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、編寫程序,判斷從鍵盤輸入的字符中數字字符的個數、大寫字母的個數、小

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

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

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

輸入格式:

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

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

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

的數字及+、-組成的字符串。

輸出格式:

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

輸入樣例:

3

zhang1985040313912345678

wang19821020+86/p>

qian1984061913609876543

輸出樣例:

wang19821020+86/p>

qian1984061913609876543

zhang1985040313912345678(本題20分)

參考答案

一、單項選擇題

1、C

2、C

【解析】123不是合法的標識符,標識符不能以數字開頭。

3、B

4、C

5、A

6、B

7、A

8、D

9、D

10、B

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

將字符轉換為對應的ASCII碼值再參與整數運算。字符'1'對應的ASCTT碼值是

49,字符'0'對應的ASCII碼值是48,字符'\0'是字符串結束標識符NULL,其

對應的ASCII碼值是0。

11、B

12、A

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

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

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

數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

【解析】數組的卜標不能是變量,不能為非整數,定義為常量的標識符不能再

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

15、A

16、C

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

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

17、B

18、C

19、A

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

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

化;選項D)中數組合后應用方括號。

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:該程序的作用是將數組的對角線上的數字相加。

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根據i的變化來控制輸出黑方格的

個數。

程序源代碼:

#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;

}

計算機C語言期末(四)

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

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

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

則以下程序段的執行結果是och=,a;

k=12;

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

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

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

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

C、61,141,k=%d

D、61,141,k=%12

2、設x的值為4,則表達式y=(++x)+(++x)+(++x)后,y的值是。

A、12

B、18

C、16

D、21

3、若有以下數組說明,則i=10;a[a[i]]元素數值是—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、下列程序的運行結果是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、無輸出結果

6、以下程序中函數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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論