吉林師范大學(xué)往年C語言程序設(shè)計(jì)專升本題目含答案解析_第1頁
吉林師范大學(xué)往年C語言程序設(shè)計(jì)專升本題目含答案解析_第2頁
吉林師范大學(xué)往年C語言程序設(shè)計(jì)專升本題目含答案解析_第3頁
吉林師范大學(xué)往年C語言程序設(shè)計(jì)專升本題目含答案解析_第4頁
吉林師范大學(xué)往年C語言程序設(shè)計(jì)專升本題目含答案解析_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

往年c語言程序設(shè)計(jì)專升本題目(-)

(總分100分,考試時(shí)長(zhǎng)9C分鐘)

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

1、若需要利用形參直接訪問實(shí)參,則應(yīng)把形參變量說明為()參數(shù)。

A、指針

B、引用

C、傳值

D、常值

2、可在c程序中用作用戶標(biāo)識(shí)符的一組標(biāo)識(shí)符是o

A、voiddefineWORD

B、as_b3_123If

C、For-abccase

D、2cDOSIG

3、分析下列程序:

#include<stdio.h>

main()

{-余

int*pl,*p2,*p;

inta=6,b=9;

pl=&a;

p2=&,b;

if(a<b)

P二pi;

pl=p2;

p2二p;

}

printf(〃%d,%d〃,xpl,*p2);

printf(〃/d,%d〃,a,b);

)

程序的輸出結(jié)果為.O

A、9,66,9

B、6,99,6

C、6,96,9

D、9,69,6

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

main()

inti,j,a=0:

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

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

(

if(j%2)break;

a++;

}

a++;

}

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

)

A、4

B、5

C、6

D、7

5、以下敘述中不正確的是。

A、空字符串(即兩個(gè)雙引號(hào)連寫)只占一個(gè)存儲(chǔ)單元

B、字符型常量可以放在字符型變量中

C、字符型常量可以放作字符串變量中

D、字符型常量可以與整數(shù)混合運(yùn)算,而字符串常量不可以

6、若有定義"floata=25,b,*p=&b;",則下列對(duì)賦值語句〃*p=a;"和"p=&a;〃的正

確解釋為()。

A、兩個(gè)語句都是將變量a的值賦予變量P

B、*p=a是使P指向變量a,而p二&a是將變量的值賦予變量指針P

C、*p=a是將變量a的值賦予變量b,而&a是使P指向變量a

D、兩個(gè)語句都是使P指向變量a

7、若有說明語句chara[]二〃itismine”:

char*p=〃itisnine”;

則以F不正確的敘述是。

A、a+1表示的是字符t白湎址

B、p指向另外的字符串時(shí),字符串的長(zhǎng)度不受限制

C、p變量中存放的地址值可以改變

D、a中只能存放10個(gè)字符

8、編寫c語言程序并上機(jī)調(diào)試運(yùn)行的一般過程是o

A、編輯■*編譯-*連接-*運(yùn)行

B、編譯一編輯一連接一運(yùn)行

C、編輯一連接一編譯一運(yùn)行

D、編譯一連接一編輯一運(yùn)行

9、宏定義用于將一個(gè)標(biāo)識(shí)符定義為一個(gè)

A、常量

B、字符串

C、整數(shù)

D、長(zhǎng)整數(shù)

10、int(*p)[6];它的含義為o

A、具有6個(gè)元素的一維數(shù)組

B、定義了一個(gè)指向具有6個(gè)元素的一維數(shù)組的行指針變量

C、指向整型指針變量

D、指向6個(gè)整數(shù)中的?個(gè)的地址

11、以下敘述中不正確的是。

A、在C中,調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳送給形參,形參的值不能傳送給

實(shí)參

B、在C的函數(shù)中,最好使用全局變量

C、在C中,形式參數(shù)只是局限于所在函數(shù)

D、在C中,函數(shù)名的存儲(chǔ)類別為外部

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

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

(注:」表示空格)

A、132V回車》

B、1,3,2V回車,

C、a=lb=3-c=2V回車〉

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

13、以下各語句或語句組中,正確的操作是o

A、chars[3]=〃abcde〃;

char*s;gets(s);

char*s;s=〃abcde”;

,,,,

D、chars[5];scanf(%s)&s);

14、有以下程序

^include<studio.h>

#include<string.h>

structa

(七餐歲

inta;

charb[10];

doublec;

};

voidf(structat);

main()

(

structaa={1001,"zhangdan,1098.0};

f(a);

pringt("%d,%s,%6.lf\n",a.a,a.b,a.c);

}

voidf(structat)

(

t.a=1002;

strcpy(t.b,"changrong");

t.c=1202.0;

)

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

A、1001,ZhangDa,1098.0

1002,ChangRong,1202.0

C、1001,ChangRong,1098.0

D、1002,ZhangDa,1202.0

15、以卜.4組用戶定義標(biāo)識(shí)符中,全部合法的一組是——

A、_main

enclude

sin

B.Tf

-max

turbo

C、txt

REAL

3C0M

D、int

k2

_001

16、以下程序段的輸出結(jié)果為

charc□二〃abc〃;

inti=0;

do;while(c[i++]!='\0');printfi-1);

A、abc

B、ab

C、2

D、3

17、若有以卜.說明和語句:

structst

intn;

char*ch;

}

I

structsta[3]

(

5,"abc",7,"def〃,9,〃ghk〃

)

,*P=a則值為6的表達(dá)式是,o

A、p++->n

B、p->n++

C、(禮n++

D>++p->n

18、有以卜.程序intf(intb[][4])

inti,j,s=0;

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

(

i二j;

if(i>2)i=3-j;

s+=b[i][j];

}

returns;

)

main()

{

inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

printf(〃/d\n〃,f:a));

}

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

A、12

B、11

C、18

D、16

19、若有定義:int43][5];則以下不能正確表示該數(shù)組元素的表達(dá)式是

A、*(*w+3)

B、*(w+l)[4]

C、*(*(w+1))

D、*(&w[0][0]+l)

20、以下對(duì)c語言中共用體類型數(shù)據(jù)的敘述正確的是

A、可以對(duì)共用體變量名直接賦值

B、一個(gè)共用體變量中可以同時(shí)存放其所有成員

C、一個(gè)共用體變量中不可以同時(shí)存放其所有成員

D、共用體類型定義中不能出現(xiàn)結(jié)構(gòu)體類型的成員

二、填空題(每小題2分,共20分)

1、#include<stdio.h>

(

inti=010,j=10;

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

}

2、符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和。

3、用&&寫出判斷一個(gè)字母是否為大、小寫的語句

4、在一個(gè)c源程序中,注釋部分兩側(cè)的分界符分別為—和—o

5、下列程序段是從鍵盤輸入的字符中統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù),用換行符結(jié)束循環(huán)。

intn=0,ch;

ch=getchar();

while()

{

if()n++;

c=getchar();

)

6、以下程序運(yùn)行的結(jié)果為。

^include<stdio.h>

intd=1;

fun(intp)

(

intd=5;

d+=p++;

pr*i(〃*d,〃,d);

)r|g|J繆—

voidmain()

(

inta=3;

fun(a);

cl+=a++;

,,,,

printf(%d\n,d);

)

7、字符讀寫函數(shù)是用于從磁盤文件中讀出一個(gè)字符。

8、以下程序功能是:借助指針變量找出數(shù)組元素中的最大值及其元素的下標(biāo)值。

請(qǐng)?zhí)羁铡?/p>

ttinclude<stdio.h>

main()

{歲洛,遂

inta[10],*p,*s:

for(p=a;p-a<10:p++)scanf("%d",p);

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

printf("index=%d\n,s-a);

)

9、若從鍵盤輸入58,則以下程序輸出的結(jié)果是o

main()

(

inta;

scanf(〃%d〃,&a);

if(a>50)printf(〃%d",a);

if(a>40)printfa);

if(a>30)printf(〃%d〃,a);

)

10^a=3;

a+=(a<l)?a:1;

printf("%d〃,a);

結(jié)果是________。

三、編程題(每小題分,共40分)

1、編寫程序:判斷101到200之間的素?cái)?shù)。(本題10分)

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

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

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

3、題目描述

萬里十佳歌手比賽終于開始了,評(píng)委席坐了N(N大于等丁-3,并且N小于80)個(gè)

評(píng)委,他們商量了很久,終于找出一個(gè)公正合理的評(píng)分方法。每次歌手唱完后,

每個(gè)評(píng)委自己打一個(gè)分,然后在N個(gè)評(píng)委的打分中,去掉一個(gè)最高分,一個(gè)最低

分。然后再把剩下的評(píng)委的打分求平均值~。

但是問題是他們嫌每次拿計(jì)算器按實(shí)在太煩。作為一名計(jì)算機(jī)專業(yè)學(xué)生~你用個(gè)

程序幫幫他們搞定吧。

輸入

輸入有多組數(shù)據(jù)。每組2行,第一行是一個(gè)N,代表有N個(gè)評(píng)委。然后第二行有

N個(gè)數(shù),每個(gè)數(shù)用空格隔開,代表每個(gè)評(píng)委的打分。

當(dāng)輸入的N為0的時(shí)候結(jié)束輸入。

輸出

對(duì)于每組輸入,輸入最終這個(gè)選手的得分(小數(shù)點(diǎn)后面保留2位有效數(shù)字)。

樣例輸入

3

743634

7

16972726749688

樣例輸出

36.00

62.20(本題16分)

參考答案

一、單項(xiàng)選擇題

1、B

【解析】在進(jìn)行參數(shù)傳遞時(shí),引用參數(shù)是利用形參直接訪問實(shí)參,形參的變化直接影響實(shí)參

的變化,而傳值參數(shù)不會(huì)影響實(shí)參變量。

2、B

【解析】C語言規(guī)定,標(biāo)識(shí)符是由字母、數(shù)字或下劃線組成,并且它的第一個(gè)字符必須是字

母或下劃線,關(guān)鍵字不能用作用戶標(biāo)識(shí)符。

3、A

【解析】通過pl二&a,p2=&b分別將a、b的地址賦給指針pl、p2,接著執(zhí)行if語句,發(fā)

現(xiàn)a<b成立,則通過交換pl、p2的值,即交換a、b所在存儲(chǔ)單元的地址,但是a、b的

值并沒有發(fā)生變化。

4、A

5、C

6、C

7、D

【解析】解析:本題考杳字符串?dāng)?shù)組和指針的引用方式°在C語言中.系統(tǒng)在每個(gè)字符串或

數(shù)組的最后自動(dòng)加入一個(gè)字符'\0',作為字符的結(jié)束標(biāo)志,在本題中,chara口二“Itismire”;

所表示的。字符串實(shí)際含有"個(gè)字符。

8、A

9、B

【解析】宏定義用于將一個(gè)標(biāo)識(shí)符定義為一個(gè)字符串

10、B

11、B

【解析】本題也是考查C語言中函數(shù)的概念及其使用。函數(shù)調(diào)用時(shí),值可以雙向傳遞,并沒

有限制使用全局變量還是局部變量,需要根據(jù)程序的邏輯需要進(jìn)行選擇。

12、D

13、C

【解析】字符數(shù)組可以使用字符串進(jìn)行初始化,但數(shù)組K度應(yīng)足夠容納該字符串,選項(xiàng)A不

滿足要求。

gets。函數(shù)用于讀取字符串,并將字符串保存到參數(shù)代表的空間中,選項(xiàng)B中,只定義了字

符指針,沒有空間存放字符串信息。

選項(xiàng)D定義了長(zhǎng)度為5的字符數(shù)組,數(shù)組名稱代表數(shù)組的首地址,使用scanf()讀取字符串

時(shí),參數(shù)為數(shù)組名即可。

14、A

15、A

16、D

17、D

【解析】根據(jù)結(jié)構(gòu)變量的存儲(chǔ)特點(diǎn),P+1意味著增加地址值為結(jié)構(gòu)體數(shù)組a的一個(gè)元素所占

的字節(jié)數(shù),即P++使p由a[0]指向a[l]起始地址。本題++p->n得到p指向的結(jié)構(gòu)體變量

中成員n的值使之加L因?yàn)閜指向數(shù)組a起始地圻,p->n的值為5.再執(zhí)行自加1運(yùn)行,

結(jié)果為6。

18、D

19、B

【解析】本題考查的是通過指針引用二維數(shù)組元素。通過一維數(shù)組名或指向一維數(shù)組元素的

指針來引用數(shù)組元素有兩種寫法:a[!]W*(a+i),它們是等價(jià)的。這是一種運(yùn)算符之間的等價(jià)

轉(zhuǎn)換,就好像a-(b-c)等價(jià)于a-b+c-樣。知道了這種轉(zhuǎn)換,可以將之?dāng)U展到二維數(shù)組甚至任

意維數(shù)組上來。因?yàn)榭谶\(yùn)算符的結(jié)合性是從左至右的,所以等價(jià)于此時(shí)可以

先將任意一個(gè)[運(yùn)算符轉(zhuǎn)換為指針形式為:(*(w+i))[j]或*(w[i]+j),或者同時(shí)轉(zhuǎn)換:*(*(w+i)+j)。

上述幾種形式都完全等價(jià)于w[i]U]o

20、C

二、填空題

1、執(zhí)行結(jié)果:9,10。

2、['順序結(jié)構(gòu)']

3、c>='a'&&c<='z'

4、[/*,*/]

5、['ch!二’\\n'ch>=0'0'\'&&ch<='9'']

6、8,4

7、fgetc#fgetc()#getc#getc()

8、p

9、[,5858581]

10、4

三、編程題

1、//include<stdio.h>

intmain()

(彩

inti.j;

intcount=0;

for(i=101;i<=200;i++)

(

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

(

//如果j能被i整除在跳出循環(huán)

if(i%j==0)

break;

)

//判斷循環(huán)是否提前跳出,如果j<i說明在2T之,皿i有可整除的數(shù)

if(j>=i)

(

count十十;

printf("%d",i);

〃換行,用count計(jì)數(shù),每五個(gè)數(shù)換行

if(count%5==0)

printf("\n");

)

)

return0;

)

【解析】判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除,則表明此

數(shù)不是素?cái)?shù),反之是素?cái)?shù),

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]-'0";

printf("n=%ld\n",n);

)

3、#include<stdio.h>

intmain(){

intt.nj.max,min,sum;

intscore[102]={0};

while(scanf("%d",&n)X

if(n==O)break;

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

scanf("%d",&score[i]);

max=-l;

min=101;

sum=0;

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

if(score[i]>max)

max=score[i];

if(score[i]<min)

min=score[i];

sum+=score[i];

}

sum-=max+min;

printf("%.2IAn",(double)sum/(n-2));

)

returnO;

)

往年C語言程序設(shè)計(jì)專升本題目(二)

(總分100分,考試時(shí)長(zhǎng)90分鐘)

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

1、計(jì)算機(jī)中的數(shù)有浮點(diǎn)和定點(diǎn)兩種表示,浮點(diǎn)表示的數(shù),通常由兩部分組成,即

_0

A、指數(shù)和基數(shù)

B、尾數(shù)和小數(shù)

C、階碼和尾數(shù)

D、整數(shù)和小數(shù)

2、設(shè)有以下語句:intx=10;x+=3+x%(-3),貝I」x的值是_

A、14

B、15

C、11

D、12

3、以下敘述中正確的是________o

A、對(duì)于邏輯表達(dá)式:a++|b++,設(shè)a的值為1,則求解表達(dá)式的值后,b的值

會(huì)發(fā)生改變

'B、對(duì)于邏輯表達(dá)式:a++&&b++,設(shè)a的值為0,則求解表達(dá)式的值后,b的值

會(huì)發(fā)生改變

C、else不是一條獨(dú)立的語句,它只是if語句的一部分

D、關(guān)系運(yùn)算符的結(jié)果有三種

4、下列關(guān)于break語句的描述,不正確的是一

A、break語句可用在循環(huán)體內(nèi),它將使執(zhí)行流程跳出本層循環(huán)體

Bsbreak語句可用在switch語句中,它將使執(zhí)行流程跳出當(dāng)前switch語句

C、break語句可用在訂語句中,它將使執(zhí)行流程跳出當(dāng)前if語句

D、break語句在一層循環(huán)體中可以出現(xiàn)多次

5、以下對(duì)c語言函數(shù)的有關(guān)描述中,正確的是o

A、在C語言中調(diào)用函數(shù)時(shí),只能把實(shí)參的值傳給形參,形參的值不能傳送給

實(shí)參

B、C函數(shù)既可以嵌套定義又可以遞歸調(diào)用

C、函數(shù)必須有返回值,否則不能使用函數(shù)

D、函數(shù)必須有返回值,返回值類型不定

6、設(shè)inti=3,j=3;表達(dá)式i+++j的值是。

A、6

B、7

C、8

D、9

7、inta[10];

合法的數(shù)組元素的最小下標(biāo)值為一

A、10

B、9

C、1

D、0

8、C源程序中的命令#includc與#《10門11。是在階段被處理的。

A、預(yù)處理

B、編譯

C、連接

D、執(zhí)行

9、以下語句中,不能實(shí)現(xiàn)回車換行的是()。

A、printf(z,\n,z);

putchar("\n〃);

C^fprintf(stdout,,,\n,/);

D>fwrit6(〃\n〃,1,1,stdout);

10、以下數(shù)組定義中不正確的是.

A、inta[2][3];

B、intb[][3]={0,1,2,3};

C、intc[100][100]={0};

D、inta[3][]={{1,2},{1,2,3},{1,2,3,4}};

11、以下敘述中錯(cuò)誤的是0

A、在一個(gè)程序中,每個(gè)模塊均可以獨(dú)立編譯運(yùn)行

B、程序“模塊化”有利于任務(wù)的分解簡(jiǎn)化

C、允許對(duì)函數(shù)單獨(dú)進(jìn)行編譯,是C語言實(shí)現(xiàn)“模塊化”的基礎(chǔ)

D、采用模塊化結(jié)構(gòu),可以提高編程效率

12、以下敘述中正確的是。

A、轉(zhuǎn)義字符要用雙引號(hào)括起來,以便與普通的字符常量區(qū)分開

B、字符常量在內(nèi)存中占2個(gè)字節(jié)

C、字符常量需要月單引號(hào)括起來

D、字符常量是不能進(jìn)行關(guān)系運(yùn)算的

13、有以下程序:

#include<stdio.h>

intf(intt[],intn;;

main(){

inta[4]=l,2,3,4,s;

s=f(a,2);

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

}

intf(intt[],intn;{

if((n>0)&&(n<5)^

returnt[n+l]+f3nT);

elsereturn0;

)

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

A、4

B、7

C、10

D、6

14、以下選項(xiàng)中,能定義m為合法的結(jié)構(gòu)體變量的是____。

A、typcdefstructabc{

doublea;charb;}m;

B、struct{

doublea;charb;)m;

C、structABC{

doublea;charb;}ABCm;

D.typedefABC{

doublea;charb;)ABCm;

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

#include<stdio.h>

main()

(

charch[7]={//12ab56,z);

inti,s=0;

for(i=0;ch[i]>=,0*<=,;i+=2)s=10*s+ch[i]->0>;

,,,,

printf(%d\n>s);

}

A、1

B、1256

C、12ab56

D、1256

16、下面程序的輸出結(jié)果是.

#include<stdio.h>

voidmain()

(

intx=3;

do

(

printf(z,%d”,x~=2);

)

while(!(-x));

)

A、1

B、1-2

C、30

D、是死循環(huán)

17、設(shè)有以下語句

typcdcfstructtt

(

charc;

inta[4];

)

cm;

則下面敘述中正確的是_____o

A、可以用TT定義結(jié)構(gòu)體變量

B、TT是struct類型的變量

C、可以用CIN定義結(jié)構(gòu)體變量

D、C1N是structTT類型的變量

18、執(zhí)行下面程序后,運(yùn)行結(jié)果是

^include<stdio.h>

voidmain()

(

intx=41,y=l;

if(x%3-0&&x%7~0)

{1

y+二x;

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

)

else

(;

y二x;

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

)

)

A、y=41

B、y=43

C、y二42

D>y=l

19、對(duì)f?定好的數(shù)組,系統(tǒng)會(huì)自動(dòng)為該數(shù)組分配內(nèi)存空間,charc[20]二{"hello

world”}對(duì)于c對(duì)應(yīng)的內(nèi)存中的地址編號(hào)是2000,則c[4]對(duì)應(yīng)的內(nèi)存地址的編

號(hào)為________o

A、2004

B、200A

C、2010

D、2008

20、若有以下語句:

typedefstructs

(

intg;

charh;

}t;

以下敘述中正確的是。

A、可用S定義結(jié)構(gòu)體變量

B、可用T定義結(jié)構(gòu)體變量

C、S是struct類型的變量

D、T是slruclS類型的變量

二、填空題(每小題2分,共20分)

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

2、在C語言中的實(shí)型變量分為兩種類型,它們是和浮點(diǎn)型。

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

4、若有〃inta[3][2]={{l,2},{3},{4,5}};

〃,則的值是o

5、執(zhí)行下列的程序段后,正確的結(jié)果是o

inti=5;

while(i=1)i-;

printfi);

6、有以下程序,請(qǐng)?zhí)羁铡?,程序的?zhí)行結(jié)果是一

main()

(:?I§11SiBW

intx=5,y;

y=++X*++X;

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

)

floatfun(float)

main

套nflo逐atx,y號(hào);壁遨麋:JBlIi-

intflag;

printf("enterx:〃);

scanf(〃〃,&x);

flag=fun(x);

if()printf(z,x=%fisoutofrange.\n,z,x);

elseprintf(,zx=%f,v=%f\n/z,x,fun(x)):

)

fun(floatx;

nfloats;

if(abs(x)>1)return(2);

else

(

s=sqrt(l-xxx);

___________f

}

)

7、在c語言中,如果采用printf函數(shù)將整個(gè)字符串一次輸此那么對(duì)應(yīng)的格式控

制符為〃〃。

8、在c語言中,將字符串中大寫字母轉(zhuǎn)換成小寫字母的函數(shù)是

9、語句putchar(*a'+2);的輸出結(jié)果是。

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

main()

(

intx=0;

sub(&x,8,1);

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

)

sub(int*a,intn,intk)

(

if(k<=n)sub(a,n/2,2*k);

*a+二k;

三、編程題(每小題分,共40分)

1、編寫程序:利用指針方法,輸入3個(gè)數(shù)a,b,c,按大小順序輸出。(本題10

分)

2、任意輸一行字符串(包括空格),求其長(zhǎng)度(不用strlen函數(shù))。(本題M

分)

3、編寫程序:用結(jié)構(gòu)體數(shù)組,學(xué)生信息由學(xué)號(hào)、姓名,成績(jī)組成,

數(shù)據(jù)如下:201513135157張三90

1)使用結(jié)構(gòu)體數(shù)組,將學(xué)生的數(shù)據(jù)按成績(jī)從高到低排序顯示到屏幕上

2)將學(xué)生中不及格學(xué)生的姓名顯示出來

3)寫一個(gè)函數(shù),獲取成績(jī)低于平均分的學(xué)生記錄并返回低于平均分的學(xué)生人數(shù)

(本題16分)

參考答案

一、單項(xiàng)選擇題

1、C

【解析】在計(jì)算機(jī)中,帶小數(shù)點(diǎn)的數(shù)通常有兩種表示方法,即定點(diǎn)數(shù)和浮點(diǎn)數(shù)。所謂浮點(diǎn)數(shù),

是指小數(shù)點(diǎn)位置可以浮動(dòng)的數(shù)。一個(gè)二進(jìn)制的浮點(diǎn)數(shù)可以用階碼和尾數(shù)來表示。

2、A

3、C

【解析】B選項(xiàng)和A選項(xiàng)中,對(duì)于邏輯表達(dá)式,其中b的值不會(huì)因?yàn)楸磉_(dá)式的結(jié)果發(fā)生改

變;D選項(xiàng)中,關(guān)系運(yùn)算符的結(jié)果有真和假兩種。因此C選項(xiàng)正確

4、C

【解析】break語句只能用在switch語句和循環(huán)語句中。在switch語句中,break用來使執(zhí)

行流程跳出switch語句,而繼續(xù)執(zhí)行switch后面的語句。在循環(huán)語句中,break用來使執(zhí)行

流程無條件地跳出本層循環(huán)體。

5、A

【解析】C語言中的函數(shù)可以進(jìn)行遞歸調(diào)用,但不能在函數(shù)中定義函數(shù),即函數(shù)不能鍬套定

義。函數(shù)可以沒有返回值,若有返回值,則返回值類型必須確定。

6、A

7、D

8、A

9、B

10、D

11、A

【解析】在程序設(shè)計(jì)時(shí),用一個(gè)個(gè)小模塊來實(shí)現(xiàn)不同的功能,個(gè)程序設(shè)計(jì)人員分別完成一個(gè)或

多個(gè)小模塊,稱這樣的程序設(shè)計(jì)方法為“模塊化”由一個(gè)個(gè)功能模塊構(gòu)成的程序結(jié)構(gòu)稱為模

塊化結(jié)構(gòu),使用模塊化結(jié)構(gòu)程序設(shè)計(jì),有利于任務(wù)的分解笥化,選項(xiàng)B正確C語言允許對(duì)函

數(shù)單獨(dú)進(jìn)行編譯,從而可以實(shí)現(xiàn)模塊化,選項(xiàng)C正確深用模塊化結(jié)構(gòu),可以使不同模塊的程序

員分別編寫和調(diào)試,大大提高了編程效率,選項(xiàng)D正確;在語言程序中,每個(gè)模塊并不一定能

夠單獨(dú)編譯運(yùn)行,選項(xiàng)A錯(cuò)誤,本題答案A

12、C

【解析】B選項(xiàng)中,字符常量在內(nèi)存中占1個(gè)字節(jié);A選項(xiàng)中,轉(zhuǎn)義字符是以反斜線“開頭后跟

一個(gè)或幾個(gè)字符;D選項(xiàng)中,字符常量可以進(jìn)行關(guān)系運(yùn)算,不能參與數(shù)值運(yùn)算,因此C選項(xiàng)正

確“

13、B

【解析】本題主要考查的是函數(shù)的遞歸調(diào)用,子函數(shù)f是一個(gè)遞歸函數(shù)、所以主函數(shù)中執(zhí)行

f(a.2)時(shí),其執(zhí)行過程是a[3]+f⑶1)=a[3]+a[2]+f(a,0)=7。

14、B

15、A

16、B

17、D

18、A

19、A

20、B

二、填空題

1、1

2、整形

3、2.5#2.500000

4、2

5、無限循環(huán)#死循環(huán)

6、['49',"flag==2',"float',return(s),]

7、%s

8、strlwr#sEwr()#strlwr(字符串)

9、結(jié)果是c

10、7

三、編程題

lx#include<stdio.h>

voidswap(int*,int*);

intmain(void)

inta,b,c;

int*pl,*p2,*p3;

printf("輸入a,b,c:\n");

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

pl=&a;

p2=&b;

p3=&c;

if(a>b)

swap(pl,p2);

if(a>c)

swap(pl.p3):

if(b>c)

swap(p2,p3);

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

)

voidswap(int*sl,int*s2)

(

intt;

t=*sl;*sl=*s2;*s2=t;

)

2、#include<stdio.h>

intmain()

(

inti,n=0;

chars[80];

gets(s);

for(i=0;s[i]!='\0,;i++)0

printf("%d",i);

)

3、//include<stdio.h>

#defineNUM3

structstudent

(

char*sno=newchar[20];

char*name=newchar[20];

intscore;

boolfail=false;

):

voidstuSort(student*stu)

(

studenttmp;

for(inti=0;i<NUM;i++)

(

for(intj=0;j<NUM;j++)

(

if(stu[j].score<stu[i].score)

(

=stu[j].name;

tmp.sno=stu[j].sno;

tmp.score=stu[j].score;

stu[j].name=stu[i].name;

stu[j].sro=stu[i].sno;

stu[j].score=stu[i].score;

stu[i].name=;

stu[i].sro=tmp.sno;

stu[i].score=tmp.score;

)

}

}

for(inti=0;i<NUM;i++)

(

printf("%s%s%d\n",stu[i].sno,stu[i].name,stu[i].score);

)

)

voidstuFailfstudent*stu)

(

intnumOfStu=0;

for(inti=0;i<NUM;i++)

(

if(stu[i].fail==true)

(

printf("%s"Istu[i].name);

}

else

(

numOfStu十十;

}

)

if(numOfStu==NUM)

printf("%s\n","nofail");

)

)

voidstuAvg(student*stu)

(

intstuScore=0;

doublestuAvg=0;

intent=0;

for(inti=0;i<NUM;i++)

(

stuScore+=stup].score;

)

stuAvg=stuScore/NUM;

for(inti=0;i<NUM;i++)

(

if(stu[i].score<stuAvg)

(

ent++;

)

)

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

)

intmain()

(

student*stu=newstudent[NUM];

for(inti=0;i<NUM;++j)

printf(”輸入學(xué)號(hào):”);

scanf("%s",stu[i].sno);

p「intf("輸入姓名:");

scanf("%s",stu[i].nanne);

printf(”輸入功課成績(jī):

scanf("%d",&stu[i].score);

)

stuSort(stu);

stuFail(stu);

stuAvg(stu);

delete[]stu;

stu=NULL;

return0;

}

往年C語言程序設(shè)計(jì)專升本題目(三)

(總分100分,考試時(shí)長(zhǎng)90分鐘)

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

1、已知大寫字母a的ascii碼值是65,小寫字母a的ascii碼是97,則用八進(jìn)

制表示的字符常量是0

A、字符A

B、字符a

C、字符。

D、非法的常量

2、使下列程序段輸出"123,456,78〃,鍵盤輸入數(shù)據(jù),正確的輸入是_。

inti,j,kscanf(〃%d,%3d%d”,&i,也j,&k);

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

A、12345678

B、123,456,78

C、123,45678

I)、123,*45678

3、a,b為整型變量,一者均不為0,以卜關(guān)系表達(dá)式中恒成立的是()。

A、a*b/a*b==l

B、a/b*b/a—1

C、a/b*b+a%b==a

D、a/b*b二二a

4、以下程序中,while循環(huán)的循環(huán)次數(shù)是o

main()

(

inti=0;

whi1e(i<10)

if(i<1)continue;

if(i==5)break;

i++;

}

A、1

B、10

C、6

D、死循環(huán)

5、已有定義:inti,a[10],*p;則合法的賦值語句是

A、p=100;

B、p=a[5]

C、p=a[2]+2

D^p=a+2;

6、以下合法的c語言賦值語句是_______。

A、a=b=58

B、k=int(a-:

C>a=58,b=20

D、++i;

7、在下面語句中,其含義為〃p為指向含n個(gè)元素的一維數(shù)組的指針變量〃的定義

語句是o

A.intp[n]

int*p();

C^int*p(n);

D>int(*p)[n]

8、下列字符中,錯(cuò)誤的轉(zhuǎn)義字符是o

A、'\'

B、'\n'

C、,\一

D、'\091'

9、下面程序段輸出兩個(gè)字符串中對(duì)應(yīng)相等的字符。請(qǐng)分析程序填空。

charx[]=,,progranuning/,;

chary□二〃fortran”;

inti=0;

while(x[i]!='\0'!='\0')

if(x[i]=y⑴)printf(〃枇〃,_);

elsei++;

A、x[i++]

B、y[++i]

C、x[i]

D、y[i]

10、若有說明:inta⑶[4]=。};則下面正確的敘述是()。

A、只有元素a[0][0]可得到初值0

B、此說明語句不正確

C、數(shù)組a中各元素都可得到初值,但其值不一定為0

D、數(shù)組a中每個(gè)元素均可得到初值0

11>函數(shù)的值通過return語句返回,下面關(guān)于return語句的形式描述錯(cuò)誤的是

________O

A、return表達(dá)式;

B、return(表達(dá)式);

C、一-個(gè)return語句可以返回多個(gè)函數(shù)值

D、一個(gè)return語句只能返回一個(gè)函數(shù)值

12、漢字國(guó)標(biāo)碼規(guī)定的漢字編碼每個(gè)漢字用個(gè)字節(jié)表示。

A、1

B、2

C、3

D、4

13、以下程序段中,不能正確賦字符串(編譯時(shí)系統(tǒng)會(huì)提示錯(cuò)誤)的是o

A、chars[10]="abcdefg”;

B、chart□二"abcdefg",*s=t;

C、chars[10];s=“abcdefg”;

D>chars[10];strcpy(s,"abodefgr,);

14、設(shè)有以下說明語句:

structstu

(

inta;

floatb;

}

suttype;

則下面敘述不正確的是o

A、slrucl是結(jié)構(gòu)體類型的關(guān)鍵字

B、structstu是用戶定義的結(jié)構(gòu)體類型

C、suttype是用戶定義的結(jié)構(gòu)體類型名

D、a和b都是結(jié)構(gòu)體成員

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

mainO

(段y-?

floatx=3.6;

inti;

i=(int)x;

printf(,,x=%f,i=%d\n,z,x,i);

)

A、x=3.600000,i=4

13、x=3,i=3

C、x=3.600000,i=3

D、x=3i=3.600000

16、程序語言一般都提供多種循環(huán)語句,例如實(shí)現(xiàn)先判斷循環(huán)條件再執(zhí)行循環(huán)體

的while語句和先執(zhí)行循環(huán)體再判斷循環(huán)條件的do-while語句。關(guān)于這兩種循

環(huán)結(jié)構(gòu),在不改變循環(huán)體的條件下,(17)是正確的。

A、while語句的功能可由do-while語句實(shí)現(xiàn)

B、do-while語句的功能可由while語句實(shí)現(xiàn)

C、若已知循環(huán)體的次數(shù),則只能使用while語句

D、循環(huán)條件相同時(shí),do-while語句的執(zhí)行效率更高

17、若有下列說明和語句,則對(duì)結(jié)構(gòu)體變量st中成員i的引用方式不正確的是

structstu

(

inti;

intname;

}st,*p;

p=&st;

A、si

B、*i

C、(禮i

D、p->i

18、有以卜.程序

#include<stdio.h>

main()

(

char*s={"abc〃}:

do

(

printf(〃%d〃,*s/10);

s++;

)

while(*s);

)

注意:字母a的ascii碼值為65o程序運(yùn)行后的輸出結(jié)果是。

A、5670

B、656667

C、567

D、ABC

19、數(shù)組a[1..5,1..6]的每個(gè)元素占5個(gè)單元,將其按行優(yōu)先順序存儲(chǔ)在起始地

址為1000的連續(xù)的內(nèi)存單元中,則元素a[5,5]的地址為(15)。

A、1140

B、1145

C、1120

D、1125

20、F列描述說明正確的是。

A、定義結(jié)構(gòu)體時(shí),它的每個(gè)成員的數(shù)據(jù)類型可以不同

B、不同結(jié)構(gòu)體的成員名不能相同

C、結(jié)構(gòu)體定義時(shí),其成員的數(shù)據(jù)類型不能是結(jié)構(gòu)體本身

D、結(jié)構(gòu)體定義時(shí)各成員項(xiàng)之間可用分號(hào)也可用逗號(hào)隔開

二、填空題(每小題2分,共20分)

1、C語言中的每條基本語句以作為結(jié)束符,每條復(fù)合語句以}作為結(jié)束符。

2、在c語言中,〃a〃在內(nèi)存中占()個(gè)字節(jié)。

3、C語言中的標(biāo)識(shí)符只能由三種字符組成,他們是字母,數(shù)字,

4、局部變量的作用域是從的位置起,到函數(shù)結(jié)束止。

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

^include<sldio.h>

main()

intk=l,s=0;

do

(

if((k%2)!=0)continue;

s+=k;

k++;

}

while(k>10);

printf(〃s=/d\n〃,s);

}

6、^include<stdio.h>

voidmain()

(

intnum[10]={l,0,0,0,0,0,0,0,0,0);

inti,j;

for(j=0;j<10;-+j)

for(i=0;i<j;?i)num[j]=num[j]?num[i];

for(j=0;j<10;j++)printfC%d〃,num[j]);

)

7、一般地,調(diào)用標(biāo)準(zhǔn)字符或格式輸入輸出庫函數(shù)時(shí),文件開頭應(yīng)有以下預(yù)編譯命

令:O

8、定義二維數(shù)組inta[3][5];

,那么該數(shù)組中的第6個(gè)元素的訪問形式為o27.在程序運(yùn)行過程中,其

值能被改變的量稱為o

9、下面程序的輸出結(jié)果是:

^include<stdio.h>

voidadd(int*p,intn)

(.'

int*pend=p+n;

for(;p<pend;p++)*p+=10;

}

voidmain()

(

inta[5]={l,2,3,4,5},*q=a;

add(q,5);

for(q=a;q<a-5;q++)printfxq);

)

10、請(qǐng)將下列程序中的函數(shù)聲明語句補(bǔ)充完整。

^include<stdio.h>

int;

main()

intx,y,(*p)();

scanf(〃%d%d〃,&x,&y);

p=max;

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

}

intmax(inta,intb;

return(a>b?a:bj;

三、編程題(每小題分,共40分)

1、編寫程序:輸入三個(gè)整數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。(本題10

分)

2、編寫程序:用getchar函數(shù)讀入兩個(gè)字符給cl,c2,然后分別用pulchar函

數(shù)和printf函數(shù)輸出這兩個(gè)字符。

#include<stdio.h>

voidmain0

charcl,c2;

printf(〃請(qǐng)輸入兩個(gè)字符給cl和c2:\n〃);

printf(〃用putchar函數(shù)輸出結(jié)果為:\n〃)

printf(,z\n用printf函數(shù)輸出結(jié)果為:\n");

}(本題14分)

3、編寫input。和output。函數(shù),輸入輸出5個(gè)學(xué)生記錄,每個(gè)記錄包括num、

name、score[3],使用結(jié)構(gòu)體實(shí)現(xiàn)。(本題16分)

參考答案

一、單項(xiàng)選擇題

IsA

【解析】字符,'\10;所對(duì)應(yīng)的八進(jìn)制數(shù)為101,轉(zhuǎn)換成十進(jìn)制數(shù)為65。

2、C

3、C

4、D

5、D

【解析】本題中定義了一個(gè)整型數(shù)組a和一個(gè)整型指針變量po選項(xiàng)A中將一個(gè)整型數(shù)賦值

給一個(gè)指針變量,C語言規(guī)定,只能將地址賦給指針變量,故選項(xiàng)A不正確。選項(xiàng)B中a[5]

為一數(shù)組元素,同樣不是一個(gè)地址,故選項(xiàng)B不正確。選項(xiàng)c中a[2]為一數(shù)組元素,同樣是

一個(gè)整型數(shù)據(jù),不是個(gè)地址,故選項(xiàng)C不正確。數(shù)組名a代表數(shù)組首地址,首地址加2代

表第3個(gè)元素的地址,將談地址賦值給指針變量,故選項(xiàng)D正確。所以,4個(gè)選項(xiàng)中選項(xiàng)D

符合題意。

6、D

【解析】選項(xiàng)A和選項(xiàng)C中都沒有以丁結(jié)束,故選項(xiàng)A和選項(xiàng)C都不是正確的賦值語

句;選項(xiàng)B中強(qiáng)制轉(zhuǎn)換類型符int應(yīng)用括號(hào)括起來,故詵項(xiàng)B不正確,只有選項(xiàng)D是合法的

C語言賦值語句。

7、D

8、D

9、A

10、D

11、C

【解析】return語句中的表達(dá)式的值就是所求的函數(shù)值,此表達(dá)式值的類型必須與函數(shù)首部

所說明的類型一致。如果類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換。一個(gè)

return語句只能返回一^^^值。

12、B

【解析】漢字國(guó)標(biāo)碼規(guī)定的漢字編碼每個(gè)漢字用2個(gè)字節(jié)表示。

13、C

14、B

【解析】stu是結(jié)構(gòu)體類型,suttype是該類型的變量名

15、C

16、B

【解析】本題考查程序的控制結(jié)構(gòu)。

do-while語句的形式為:

do

循環(huán)體語句;

while循環(huán)條件;

首先執(zhí)行一次循環(huán)體語句(無條件地),若循環(huán)條件不成立,則結(jié)束do-while語句的執(zhí)

行;否則再一次執(zhí)行循環(huán)體語句,即,此后循環(huán)條件每成立一次,循環(huán)體語句就執(zhí)行1次。

顯然,do-while中的循環(huán)體語句至少執(zhí)行1次

while語句的形式為:

while循環(huán)條件

循環(huán)體語句;

其執(zhí)行過程為:先判斷循環(huán)條件,若不成立,則結(jié)束while語句的執(zhí)行;否則執(zhí)行一次

循環(huán)體語句。此后循環(huán)條件每成立一次,循環(huán)體語句就執(zhí)行1次。顯然,while中的循環(huán)體

語句可能一次也不執(zhí)行。

因此,在不改變循環(huán)體的情況下,可用while語句來代替do-while語句,反之則不行。

17、B

【解析】本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪瓦即

st.i,也可以用等價(jià)的指針形式即(*p).i和p->io

18、C

19、A

【解析】注意是按行優(yōu)先順序存儲(chǔ)。

20、A

二、填空題

1、;

2、2#兩

3、下劃線

4、定義

5、[s=0]

6、11248163264128256

【解析】該程序的作用是將加]換成n[i-l]+n[i-2]+n[i-3]+、、、+n⑼。

7、1

#include<stdio.h>

(或

#include"stdio.h")']

8、a[l][0]|變量

9、1112131415

10、['max(intb),]

三、編程題

1、#include<stdio.h>

intmain()

(

intx.y.z,t;

printf("\n請(qǐng)輸入三個(gè)數(shù)字:\n");

scanf("%d%d%d",&x,&y,&z);

if(x>y){/*交換x.y的值*/

t二x;x二y;y二t;

)

if(x>z){/*交換x.z的值*/

t=z;z=x;x=t;

)

if(y>z){/*交換z,y的值*/

t=y;y=z;z=t;

)

printf("從小到大排序:%d%d%d\n"Jx,y,z);

)

【解析】我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果x>y則將x與y的

值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果x>z則將x與z的值進(jìn)行交換,這樣能使x最

小。

2、cl=getchar();

c2=getchar();

putchar(cl);

putchar(c2);

printf("%c,%c\n",cl,c2);

3、#include<stdio.h>

structstudent{

intnum;

charname[20];

intscore[3];

}stu[5];

voidinput(structstudent*pstu){

intnj;

for(n=0;n<5;n++){

printf("lnputstudentsnum:");

scanf("%d",&pstu[n].num);

printf("\n");

printf("lnputstudentsname:");

scanf("%s",&pstu|n].name);

printf("\n");

printf("lnputstudentsscore:");

forO=0;j<3;j++X

scanf("%d"I&pstu[n].score[j]);

)

printf("\nu);

}

)

voidoutput(structstudentstu[]){

inti=0,j;

for(i;i<5;i++){

printf("%d,%s",stu'i].num,stu[i].name);

for(j=0;j<3;j++){

printf("%3d",stu[i].score[j]);

)

printf("\n"):

}

)

intmain(X

voi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論