C語言程序設(shè)計專升本樣卷(八卷)及答案_第1頁
C語言程序設(shè)計專升本樣卷(八卷)及答案_第2頁
C語言程序設(shè)計專升本樣卷(八卷)及答案_第3頁
C語言程序設(shè)計專升本樣卷(八卷)及答案_第4頁
C語言程序設(shè)計專升本樣卷(八卷)及答案_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計專升本精選樣卷(-)

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

1、微機中的32指的是o

A、微機型號碼

B、機器字長

C、內(nèi)存容量

D、存儲單位

【答案】B

【解析】字長越長,計算機一次處理的信息位就越多,精度就越高,字長是計

算機性能的一個重要指標。目前,微機的字長以32位、64位為主。

2、設(shè)inti=2,j=l,k=3,則表達式i&&(i+j)&k|i+j的值是o

A、0

B、2

C、1

D、3

【答案】C

3、以下各選項企圖說明一種新的類型名,其中正確的是o

A、typedefvlint;

B、typedefv2=int;

C、typedefintv3;

D、typedefv4:int;

【答案】C

4、以下if語句書寫正確的是o

A、if(x=0;)

printfx);

elseprintf-x);

B、if(x>0)

x=x+l;printf(〃%f〃,x);

elseprintf(〃%f〃,-x);

C、if(x>0);

x=x+l;printfx);

elseprintf(〃%f〃,-x);

D、if(x>0)

x=x+l;x)

elseprintf(〃%f〃,-x);

【答案】B

5、以下程序的功能是計算s=l+12+123+1234+12345o

#include<stdio.h>

main()

intt=0,s=0,i;

for(i=l;iV=5;i++){

t=i+;

s=s+t;

)

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

則部分是o

A、t

B、t*10

C、t*100

D、t+10

【答案】B

【解析】1、12、123、1234、12345可以寫成1=0*10+1、12=1*10+2、

123=12*10+3、123=123*10+4^12345=1234*10+5.按照這種規(guī)律后一項可以等

于前一項乘以10再加上循環(huán)變量。這屬于循環(huán)里面比較難的題目,需要考生找

出其數(shù)據(jù)的內(nèi)在規(guī)律,并轉(zhuǎn)化為計算機語言,基本上都是累加和累積兩種。

6、以下定義:int(*p)[4]中,標識符p是_______o

A、一個指向整型變量的指針

B、一個指針數(shù)組名

C、一個指針,它指向一個含有4個整型元素的一維數(shù)組

D、說明不合法

【答案】C

【解析】本題中相當于定義了一個二維數(shù)組intp[][4],標識符p是一個指

針,指向一個含有4個元素的一維數(shù)組。

7、若有定義語句:“charsel0]=〃1234567\0\0〃;〃,則strlen(s)的值是

A、7

B、8

C、9

D、10

【答案】A

8、下面程序的輸出結(jié)果是o

main()

(

inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int(*p)[4]=a,i,j,k=0;

for(i=0;i<3;i++)for(j=0;j<2;j++)k=p[i][j];

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

)

A、17

B、18

C、19

D、23

【答案】C

【解析】p是指向長度為4的一維數(shù)組的指針變量,可看作是二維數(shù)組a的行

指針,可以像使用數(shù)組名一樣通過p帶數(shù)組下標的形式來引用數(shù)組中元素,變

量k最后是元素的值。

9、以下選項中不正確的整型常量是。

A、12L

B、-10

C、12

D、2,900

【答案】D

10、請讀程序片段(字符串內(nèi)沒有空格字

符):printf("%d\n",strlen("ats\n012\l\\"));

上面程序片段的輸出結(jié)果是0

A、11

B、10

C、9

D、8

【答案】C

11、以下不正確的定義語句是0

A、doublex[5]=l.0,2.0,3.0,4.0>5.0;

B、inty[5]=0,1,2,3,4,5;

C、charcl□二T','2','3','4','5';

D、charc2□='a','b','c';

【答案】B

【解析】本題考查對一維數(shù)組的賦值。選項B)中,y[5]說明數(shù)組中有5個元

素,但卻給它賦了6個值,數(shù)組溢出所以是錯誤的。

12、以下敘述正確的是o

A、C程序中各函數(shù)之間既允許直接遞歸調(diào)用,也允許間接遞歸調(diào)用

B、C程序中各函數(shù)之間不允許直接遞歸調(diào)用,也不允許間接遞歸調(diào)用

C、C程序中各函數(shù)允許直接遞歸調(diào)用,不允許間接遞歸調(diào)用

D、C程序中各函數(shù)之間不允許直接遞歸調(diào)用,允許間接遞歸調(diào)用

【答案】A

13、為了避免嵌套的條件分支語句if-else的二義性,c語言規(guī)定:c程序中的

else總是與()組成配對關(guān)系。

A、縮排位置相同的if

B、在其之前未配對的if

C、在其之前未配對的最近的if

D、同一行上的if

【答案】C

14、有如下語句:s=int(100*rnd)執(zhí)行完畢后,s的值是______。

A、L0,99」的隨機整數(shù)

B、[0,100]的隨機整數(shù)

C、[1,99]的隨機整數(shù)

D、[1,100]的隨機整數(shù)

【答案】A

【解析】Rnd是一個隨機數(shù)函數(shù),其返回值是(0,1)內(nèi)的數(shù)。Int(100*Rnd)對

100*Rnd的結(jié)果取整,得到的是[0,99]內(nèi)的隨機整數(shù)。

15、下面程序的輸出結(jié)果是o

main()

(

intb[]={l,2,3,4,5,6,7,8,9,0},*q;

q二b;

printfr%d\n",*(q+0));

)

A、0

B、1

C、10

D、9

【答案】B

16、有下列程序:

#include<stdio.h>

main()

inta=6,b=7,m=l;

switch(a%2)

(

case0:m++;

break;

case1:m++;

switch(b%2)

(

defaut:m++;

caseO:m++;

break;

)

)

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

)

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

A、1

B、2

C、3

D、4

【答案】B

【解析】本題考查switch語句。第一個switch語句,因為a=6,a%2=0,所以

執(zhí)行case。,將m加1,遇到break語句跳出switch語句,結(jié)束循環(huán)。

17、以下結(jié)構(gòu)體類型說明和變量定義中正確的是。

A、typedefstruct

intn;charc;REC;

RECt1,t2;

B、struetREC;

intn;charc;;

RECtl,t2;

C、typedefstructREC;

intn=0;charc='A';tl,t2;

RECtl,t2;

D、struct

intn;charc;REC;

【答案】A

【解析】struct結(jié)構(gòu)體名后不能加”號,所以選項B、C錯誤,選項D中

應(yīng)為structtl,t2;選項A為正確的定義形式。

18、有以下程序

#include<stdio.h>

main(){

shortc=124;

c=c;

printf(〃%d\n〃、c);

)

若要使程序的運行結(jié)果為248,應(yīng)在下劃線處填入的是一

A、>>2

B、|248

C、&0248

D、<<1

【答案】D

19、以下數(shù)組定義中錯誤的是o

A、intxLJL3J={0};

B、intx[2][3]={{1,2},{3,4},{5,6}};

C、intx[][3]={{1,2,3},{4,5,6});

D、intx[2][3]={1,2,3,4,5,6};

【答案】B

20、以下對結(jié)構(gòu)變量stul中成員age的非法引用是

structstudent

(

intage;

intnum;

}stul,*p;

p=&stul;

A、stul.age

B、student,age

C、p->age

D、(*p).age

【答案】B

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

()1、表達式是一長串式子,常量與變量并不是表達式。0

【答案】錯誤

()2、在一個文件中定義的全局變量其作用域還可以擴展到其他文件。

【答案】正確

()3、函數(shù)fscanfO和fprintfO這兩個函數(shù)是對標準輸入、輸出設(shè)備進行讀寫,而不

是對磁盤文件進行讀寫。

【答案】錯誤

()4、若變量已正確定義,執(zhí)行以下程序段,輸入0或者負數(shù)時,循環(huán)結(jié)束。

total=0;

scanf(“/d”,&score);

while(score>0)

(

total=total+score;

scanf&score);

}

【答案】正確

()5、字符數(shù)組定義后,可以用賦值語句將一字符串常量或字符數(shù)組直接賦給一個字符

數(shù)組。

【答案】錯誤

()6、main函數(shù)是c語言的主函數(shù)。

【答案】正確

()7、以下定義了一個一維數(shù)組str,該數(shù)組可以存放81個字符型數(shù)據(jù)。char

str[81];

【答案】正確

()8、用數(shù)組名作函數(shù)參數(shù)時,數(shù)組中的元素可以發(fā)生變化,故違反了函數(shù)參數(shù)傳遞的單

向性。

【答案】錯誤

()9、宏定義是用宏名來表示一個字符串,在宏代換時以該字符串取代宏名。

【答案】正確

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

#include<graphics.h>^c#incljde/1,graphics.h"。

【答案】錯誤

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

1、用&&寫出判斷一個字母是否為大、小寫的語句

【答案】c>:'a'&&cV='z'

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

[答案】strlwrftstrlwr()#strlwr(字符串)

3、執(zhí)行下列程序段后,輸出的a的值是o

main()

(

inta=0;

switch(a)

(

case0:a一;

break;

case1:a++;

break;

case2:a=a+5;

break

)

printfa):

)

【答案】-1

4、函數(shù)實參的傳遞分為

【答案】值傳遞和址傳遞

5、語言的函數(shù)體一般由—和—構(gòu)成

【答案】定義語句I執(zhí)行語句

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

1、以下程序在輸入5,2之后的執(zhí)行結(jié)果是o

#include<stdio.h>

voidmain()

(

ints,t,a,b;

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

s=l;

t=l;

if(a>0)s=s+l;

if(a>b)t=s+t;

elseif(a==b)t=5;

elset=2*s;

printf(*s=%d,t=%d\n*,s,t);

)

【答案】s=211=3o

【解析】根據(jù)C語言“else總是與它前面最近的if配對”的規(guī)定,第一個if

無else配對,第二個if與第一個else配對,第三個if與第二個else配對。

當輸入a=5,b=2后,第一個if語句執(zhí)行的結(jié)果使s=2,第二個語句執(zhí)行a>b

的結(jié)果使t=2+l=3,從而不執(zhí)行第三個if語句。

2、下列程序段的運行結(jié)果是o

ttdefineMIN(x,y)x<y?x:y

main()

(

inta,b,min;

A=10,b=ll;

Min=MIN(a,b);

printf(,zmin=%d\nz,,min);

)

【答案】min=10

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

main()

inti=l,n=3,j,k=3,a[5]={l,4,5};

while(i<=n&&k>a[i])i++;

for(j=n-l;j>=i;j-)a[j+1]=a[j];

a[i]=k;

for(i=0;i<=n;i++)printfa[i]);

)

【答案】1345

4、下列程序段的運行結(jié)果是o

inta[5]={l,2,3,4,5),*p;

P=a;

printfC%dz,,*(p=p+2));

【答案】3

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

1、編寫程序:利用條件運算符的嵌套來完成此題:學(xué)習成績>=90分的同學(xué)

用A表示,60-89分之間的用B表示,60分以下的用C表示,(本題12分)

【答案】#include<stdio.h>

intmain()

(

intscore;

chargrade;

printf("請輸入分數(shù):”);

scanf&score);

grade=(score>=90)?*A1:((score>=60)?'B':'C');

printf(/z%c\n?>,grade);

return0;

}

2、編寫程序:輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。(本

題18分)

【答案】#include<stdio.h>

intmain()

(

inta,b,t,r,n;

printf("請輸入兩個數(shù)字:\n〃);

scanf(〃%d%d”,&a,&b);

if(a<b)

{t=b;b=a;a=t;}

r=a%b;

n=a*b;

while(r!=0)

(

a=b;

b=r;

r=a%b;

)

printf(〃這兩個數(shù)的最大公約數(shù)是%d,最小公倍數(shù)是%d\n〃,b,n/b);

return0;

)

【解析】1)最小公倍數(shù)二輸入的兩個數(shù)之積除于它們的最大公約數(shù),關(guān)鍵是求

出最大公約數(shù);

(2)求最大公約數(shù)用輾轉(zhuǎn)相除法(又名歐幾里德算法)

1)證明:設(shè)c是a和b的最大公約數(shù),記為c=gcd(a,b),a>=b,

令r=amodb

設(shè)a=kc,b=jc,則k,j互素,否則c不是最大公約數(shù)

據(jù)上,r=a-mb=kc-mjc=(k-mj)c

可知r也是c的倍數(shù),且k-mj與j互素,否則與前述k,j互素矛盾,

由此可知,b與r的最大公約數(shù)也是c,即gcd(a,b)=gcd(b,amodb),得證。

2)算法描述:

第一步:a4-b,令r為所得余數(shù)(OWr第二步:互換:置a=b,b-r,并

返回第一步。

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

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

輸入格式:

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

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

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

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

輸出格式:

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

輸入樣例:

3

zhang1985040313912345678

wang19821020+86/p>

qian1984061913609876543

輸出樣例:

wang19821020+86/p>

qian1984061913609876543

zhang1985040313912345678(本題20分)

【答案】ttinclude<stdio.h>

structmessage

(

charnamel[30];

charname2[30];

charname3[30];

doubleprice;

);

structmessaged[10];

intmain()

(

intN;

scanf&N):

inti,j;

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

(

scanf(z,%s%s%s/z,d[i].namel,d[i].name2,d[i].name3);

scanf&d[i].price);

)

intt,r;

doublemax,min;

max=min=d[0].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;

)

)

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

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

return0;

}

C語言程序設(shè)計專升本精選樣卷(二)

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

1、下列運算符中,不屬于關(guān)系運算符的是O

A、+=

B、!二

C、<=

D、==

【答案】A

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

2、設(shè)有語句:〃inta=l,b=2,*pl=&a,*p2=&b;〃,則使指針pl指向變量b的賦值

語句是______o

A、pl=*p2

B、*pl=p2

C、pl=p2

D、*pl=*p2

【答案】D

【解析】對于定義int*p,*q;,可以通過賦值語句p=q;,把指針變量q中的

地址值賦給指針變量P,從而使這兩個指針變量指向同一地址。

3、有說明語句:inta,b;如果輸入111322333,使得a的值為111,b的值為

333,則以下正確的語句是_______o

A、scanfC%3d%*3d%3dz,,&a,&b);

B、scanfC%*3d%3d%3dz,,&a,&b);

C、scanfC%3d%3d%*3dz,,&a,&b):

D、scanfC%3d%*2d%3d/z,&a,&b);

【答案】A

【解析】根據(jù)題意,要是a的值為11,b的值為333,必須在讀入時指定a的

讀入寬度為3,b的讀入寬度為3,且a和b的控制字符之間必須額外增加%*

控制符用于跳過中間的三位輸入數(shù)字,選項A正確;本題答案A

4、能正確表示a210或a<0的關(guān)系表達式是。

A、a>=10ora<=0

B、a>=10||a<=0

C、a>=10|a<=0

D、a>=10&&a<=0

【答案】B

5、若有intx=l;

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

switch(x*10)

case9:x+=l;

break;

case10:x+=l;

case11:x+=l;

default:x+=l;

)

A、1

B、2

C、3

D、4

【答案】D

6、若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)

A、getcO

B、getsO

C、getchar()

D、scanf()

【答案】B

7、下面合法的語句是

A、inta=8,b;

b=++a++;

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

B、inta;

printfscanf("d〃,&a));

C^chara;

scanf,&a);

charb=scanf(〃b=%c〃,&b);

D、charc=getchar();

putchar((int)c);

【答案】D

8、有以下程序

main()

(

inta[3][2]={0},(*ptr)[2],i,j;

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

(

ptr=a+i;

scanf(〃%d〃,ptr);

ptr++;

)

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

(

for(j=0;j<2;j++)printf(〃%2d〃,a[i][j]);

printf("\n〃);

)

)

若運行時輸入:123V回車,,則輸出結(jié)果是o

A、產(chǎn)生錯誤信息

B、10

C、12

D、10203020000030

【答案】B

【解析】本題定義了一個二維數(shù)組a,又定義了一個指針變量ptr,它用于指向

包含2個元素的一維數(shù)組,在第一個for循環(huán)中,語句“pt廠a+i;〃用于將指針

變量ptr指向第i行的數(shù)組元素,通過兩次循環(huán),分別給二維數(shù)組a的第0行

的第1個元素和第1行的第1個元素賦了值1和2o

9、c語言中的標識符第一個字符。

A、必須為字母

B、必須為下劃線

C、必須為字母或下劃線

D、可以是字母,數(shù)字和下劃線中任一種字符

【答案】C

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

A、'A'

B、〃9〃

C、Howdoyoudo

D、'$abd'

【答案】B

11、在下面的字符數(shù)組定義中,哪一個有語法錯誤。

A、chara[20]="abcdefg”;

B、chara[]="x+y=55.”;

C、chara[15];

D、chara[10]='5';

【答案】D

【解析】[考點分析]考查聲明數(shù)組的語法格式。

選項D的定義右語法錯誤。賦值號右邊的字符應(yīng)該是用雙引號括起來。

12、以下錯誤的描述是:函數(shù)調(diào)用可以o

A、出現(xiàn)在執(zhí)行語句中

B、出現(xiàn)在一個表達式中

C、做為一個函數(shù)的實參

D、做為一個函數(shù)的形參

【答案】D

13、下面不是c語言整形常數(shù)的是o

A、02

B、0

C、038

D、OXal

【答案】C

14、c語言中函數(shù)返回值的類型是由決定的.

A、函數(shù)定義時指定的類型

return語句中的表達式類型

C、調(diào)用該函數(shù)時的實參的數(shù)據(jù)類型

D、形參的數(shù)據(jù)類型

【答案】A

15、下列程序的執(zhí)行結(jié)果是.

#include<stdio.h>

voidmain()

(

intx=0,y=l,z=0;

if(x=z=y)x=3;

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

}

A、3,0

B、0,0

C、0,1

D、3,1

【答案】D

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

A、N-S流程圖只能描述簡單的順序結(jié)構(gòu)的程序

B、程序的算法只能使用流程圖來描述

C、結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)是循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu)

D、計算機可以直接處理C語言程序,不必進行任何轉(zhuǎn)換

【答案】C

【解析】N-S流程圖是可以描述循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、順序結(jié)構(gòu)等多種結(jié)構(gòu)的

程序,所以A選項錯誤。程序的算法可以用流程圖、偽代碼、N-S結(jié)構(gòu)圖等方

法表示所以B選項錯誤。計算機只能處理二進制表示的目標程序不能直接執(zhí)行

由C語言編寫的源程序所以D選項錯誤。

17、設(shè)有如下說明:

typedefstruct

(

intn;

charc;

doublex;

)

std;

則以下選項:能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是O

A、STDtt[2]={{l/A\62},{2,,B,,75}};

B、STDttL2」={l,〃A”,62,2,〃B",75);

C、struettt[2]={{1,'A'},{2,'B'}};

D、structtt[2]={{l,"A",62.5},{2,75.0});

【答案】A

【解析】本題定義了一個結(jié)構(gòu)體類型并白定義類型名為STD,用戶自定義類型

后,就可以利用它進行變量與數(shù)組的定義。定義的方法,與C語言中其它類型

的定義完全一樣,定義結(jié)構(gòu)型數(shù)組并賦初值時,每個元素用一對“{”和“廠括

起來,字符型元素用…”括起來,選項A、B、C、D中只有選項A符合條件。所

以,A選項為所選。

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

ftdefinef(x)x*x

main()

(

inta=6,b=2,c;

c=f(a)/f(b);

printf("%d\n',c);

)

A、9

B、6

C、36

D、18

【答案】C

19、已知有數(shù)組定義chara[3][4];下列表達式中錯誤的是_______。

A、a[2]=/zWINz,

B、strcpy(a[2],"WIN")

C、a[2][3]='W'

D、a[O][l]=a[O][l]

【答案】A

【解析】本題考查數(shù)組的基本知識,B、C、D在C語言中都是允許的,A選項的

賦值是非法的。

20、enuma

(

sum二9,mon=-l,tue

定義了O

A、枚舉變量

B、3個標識符

C、枚舉數(shù)據(jù)類型

D、整數(shù)9和T

【答案】C

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

()1、模運算符%,可以用于任何類型變量或常量。

【答案】錯誤

()2、關(guān)系表達式的值是一個邏輯值,即〃真〃或“假〃,并且用0表示"假”,用1表示〃真

〃O

【答案】正確

()3、數(shù)組的下標從1開始。

【答案】錯誤

()4、若有intk=1;

while(k=l)k++;

則while循環(huán)執(zhí)行的次數(shù)是1次

【答案】錯誤

()5、用puts和gets函數(shù)可以輸入或輸出多個字符串。

【答案】錯誤

()6、通過return語句,函數(shù)可以帶回一個或一個以上的返回值。

【答案】錯誤

()7、字符串必須以'0'結(jié)束,但字符數(shù)組可以不包括‘0'。

【答案】正確

()8、函數(shù)的形參可以是常量,變量或表達式

【答案】錯誤

()9、一個數(shù)組是由連續(xù)的一塊內(nèi)存單元組成的,指針變量就是這次連續(xù)內(nèi)存單元的首

地址

【答案】錯誤

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

【答案】錯誤

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

1>已知charstr□二〃man”,則strlen(str)的值為。

【答案】3

2、int*p的含義是o

【答案】['指針變量P為整型’]

3、結(jié)構(gòu)化程序三種結(jié)構(gòu)為o

【答案】選擇,順序,循環(huán)

4、在c語言中,從參數(shù)的形式看,函數(shù)可以分為兩類:無參函數(shù)和

函數(shù)。

【答案】有參

5、定義4行3列的整型二維數(shù)組a的語句是o

【答案】Uinta[4][3];

']

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

1、以下程序運行后的輸出結(jié)果是_______o

main()

(

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

if(c=a+b)printf(〃yes'n");

elseprintf(〃no\n〃);

)

【答案】「yes']

2、以下程序?qū)斎雰蓚€整數(shù),按從大到小的順序輸出。請在—內(nèi)填入正確的

內(nèi)容。

voidmainO

(

intx,y,z;

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

if()

printf("%d,%d”,x,y);

)

【答案】x<y|

x二y;

y二z;

【解析】其中這里用到了交換變量的方法,如果交換2個變量,則增加一個臨

時變量,然后讓三個變量在賦值語句中的位置形成一個環(huán),如a=b;b=c;

c=a0如果是n個變量交換,同樣是讓他們位置形成一個環(huán)。如al=a2;

a2=a3;a3=…an-l=an;an=alo

3、下面是實現(xiàn)打印九九乘法表的程序,請在畫線的位置填上適當?shù)恼Z句,使程序

(段)完整。

main()

inti,j,k;

for(i=l;;i+-)

(

for(j=l;;j++)printfC%d*%d=%dz,,);

printf("\n〃);

)

)

【答案】['iV=9','jV=9','i,j,i*Y]

4、以下程序運行后的輸出結(jié)果是o

main()

(

charc;

intn=100;

floatf=10;

doublex;

x=f*二n/=(c=50);

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

)

【答案】「220']

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

1、編寫程序,將從鍵盤輸入的10個整數(shù)按升序排列輸出。(本題12分)

【答案】^include<stdio.h>

voidmain()

(

inta[10],i,j,t;

printf(〃請輸入10個整數(shù)\n");

for(i=0;i<10;i++)scanf&a[i]);

for(i=0;i<9;i-+)for(j=0;j<9-i;j++)if(a[j]>

a[j+1])

(

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

printf(〃排序結(jié)果:\n〃);

for(i=0;i<10;i++)printfa[i]);

)

2、編寫程序:從鍵盤輸入的10個整數(shù)中,找出第一個能被7整除的數(shù)。若找

到,打印此數(shù)后退出循環(huán);

若未找到,打印"notexist”。(本題18分)

【答案】#inc案de'stdio.h"

main()

(

inti,a;

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

(

scanf("%d",&a);

(

if(a%7==0)printf(〃%d〃,a);

break;

)

)

if(i-ll)printf("notexist");

)

3、輸入5位同學(xué)的一組信息,包括學(xué)號、姓名、數(shù)學(xué)成績、計算機成績,求得

每位同學(xué)的平均分和總分,然后按照總分從高到低排序。(本題20分)

【答案】#include<stdio.h>

structmes

(

intsno;

charsname[20];

floatgrade1;

floatgrade2;

floatsum;

floatavg;

}student[5];/*定義結(jié)構(gòu)體變量數(shù)組*/

intmain()

inti,j,k;

structmestemp;

printf(〃請輸入五位學(xué)生的信息\n〃);

printf(〃學(xué)號\t姓名\t數(shù)學(xué)\t計算機\n");

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

(

scanf(z,%d\t%s\t%f\t%fzz,&student[i].sno,student[i].sname,

&student[i].gradel,&student[i].grade2);student[i].sum二

student[i].gradel+student[i].grade2;student[i].avg=

student[i].sum/2;

}/*輸入每位學(xué)生間隔的信息時運用Tab鍵*/

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

{

k=i;

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

if(student[k].sum<student[j].sum)

k=j;

temp=student[k];student[k]=student[i];student[i]=temp;

)

printf(〃學(xué)生成績的排序結(jié)果為:\n〃);

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

(

printf("學(xué)號:%d,姓名:%s,數(shù)學(xué)成績:%3.If,計算機成:%3.If:%3.If,

分:%3.lf\n〃,student[i].sno,student[i].sname,student[i].gradel,

student[i].grade2,student[i].avg,student[i].sum);

}/*顯示五位同學(xué)的信息*/

return(0);

}

C語言程序設(shè)計專升本精選樣卷(三)

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

1、設(shè)有說明語句:chara='\123';則變量a______。

A、包含1個字符

B、包含2個字符

C、包含3個字符

D、包含4個字符

【答案】A

2、下面四個選項中,均是不正確的八進制數(shù)或十六進制數(shù)的選項是o

A、0160x8f018

B、Oabc017Oxa

C、010-0x110x16

D、0al27ff-123

【答案】D

【解析】八進制中,不可能包括8以上的數(shù)字,它的范圍只在0?7之間,以0

開頭。同樣,十六進制是以O(shè)x開頭,數(shù)字在0?9和A?F之間。

3、已知inti,a;

執(zhí)行語句i=(a=2*3,a*5),a+6;

后,變量i的值是。

A、6

B、12

C、30

D、36

【答案】C

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

#include<stdio.h>

main()

(

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

printfa<b?a:d<c?d:b);

)

A、1

B、3

C、2

D、4

【答案】A

【解析】條件表達式的格式為:〃ab:c〃,它的功能是:當a為真時,表達式的

值等于b的值;當a為假時,表達式的值等于c的值。因為條件運算符的結(jié)合

方向為“自右向左”。因此,當表達式中嵌套使用條件表達式時,應(yīng)先計算右

邊的條件表達式,再計算左邊的條件表達式。題中應(yīng)先計算“dVcd:b”的

“dVc”關(guān)系表達式的值,因為dTVc=2為真,所以取第一個表達式的值,即

d的值作為整個表達式的值。接著計算“aVba:d",a=4Vb=3為似,取第二個

表達式的值,即d的值作為整個表達式的值。

5、對于while、do…while循環(huán)結(jié)構(gòu),正確的說法是。

A、只是表達形式不同

B、do…while結(jié)構(gòu)中的語句至少執(zhí)行一次

C、while結(jié)構(gòu)中的語句至少執(zhí)行一次

D、條件成立時,它們有可能一次也不執(zhí)行

【答案】B

【解析】注意區(qū)別while、do…while兩種循環(huán)結(jié)構(gòu)的異同:while循環(huán)是先判

斷條件是否成立,成立時才執(zhí)行;而do…while先執(zhí)行再判斷,它至少執(zhí)行一

次。

6、下面程序的輸出結(jié)果是_____o

main()

(

inta[]={l,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%d\n”,*(p+8));

}

A、0

B、8

C、10

D、9

【答案】D

7、有以下程序段intj;

floaty;

charname[50];

scanf("%2d%f%s〃,&j,&y,name);

當執(zhí)行上述程序段,從鍵盤上輸入555667777abe后,y的值為()。

A、55566.0

B、566.0

C、7777.0

D、566777.0

【答案】B

8、若有定義:inta[10],則充數(shù)組a元素的正確引用是。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0]

【答案】D

9、以下選項中,不合法的整型常數(shù)是o

A、32768

B、-56

C、03

D、OXaf

【答案】A

【解析】考查整型常數(shù)的表示方法。[解題要點]整型數(shù)據(jù)一般占2個字節(jié),其

取值范圍是:-32768?+32767,而選項A)超過了整數(shù)的取值范圍。[考點鏈接]

實型常數(shù)的表示方法。

10、下列數(shù)據(jù)中屬于〃字符串常量〃的是。

A、ABC

B、〃ABC〃

C、'ABC'

D、'A'

【答案】B

11、二維數(shù)組a的成員是6個字符組成的串,行下標i的范圍從0到8,列下標j

的范圍從1到10,則存放a至少需要(44)個字節(jié)。

A、90

B、180

C、240

D、540

【答案】D

【解析】行下標i的范圍從0到8,列下標j的范圍從1至IJ10,則數(shù)組的共有

9*10=90個元素。每一個元素都占用6個字節(jié)。所以選D。

12、putchar()函數(shù)可以向終端輸出一個()。

A、整型變量表達式值

B、實型變量值

C、字符串

D、字符或字符型變量值

【答案】D

13、c語言的程序一行寫不下時,可以。

A、用逗號換行

B、用分號換行

C、在任意一空格處換行

D、用回車符換行

【答案】C

14、以下程序運行后的輸出結(jié)果是

main()

(

chars口=“ABCD〃,*p;

for(p=s+l;p<s+4;p++)printf("%s\n〃,p);

)

A、ABCD

BCD

CD

D

B、A

B

C

D

C、B

C

D

D、BCD

CD

D

【答案】D

【解析】本題考查指向字符串指針的運算方法。執(zhí)行p=s+l后,指針變量p就

指向字符串中的笫二個字符B,然后輸出字符串〃BCD〃并換行;繼續(xù)執(zhí)行循環(huán)語

句,指針變量P指向下一個字符c,輸出字符串〃CD〃,最后一次循環(huán),p指向字

符〃D〃,輸出字符串〃

15、若變量a是unsignedint型,二進制賦值為1000000010001111,則好a>>

2結(jié)果是o

A、1000000010001111

B、0010000000100011

C、0000001000111100

D、0000000010001110

【答案】B

16、下列各循環(huán)語句中,不是死循環(huán)的是_______o

A、inti=100;

while(i){

i=i%100+l;

if(i==20)

break;

}

B、inti,sum=O;

for(i=l;;i++)

sum=sum+l;

C、intk=0;

do

++k;

while(k>=0);

D、ints=3379;

while(s++%2+3%2)

s++;

【答案】A

【解析】分析各個選項。選項A中,當變量i的值等于20時,會執(zhí)行break;

語句,即退出整個while循環(huán)體。所以選項A的循環(huán)語句不是死循環(huán)。其他各

個選項的循環(huán)語句中,沒有循環(huán)退出點,所以都是死循環(huán)。

17、若有以下說明和語句:

structst

(

intn;

char*ch;

}

T

structsta[3]

(

5,〃abc〃,7,9,〃ghk〃

)

,*p=a則值為6的表達式是o

A、p++->n

B、p->n++

C、(*.n++

D、++p->n

【答案】D

【解析】根據(jù)結(jié)構(gòu)變量的存儲特點,p+1意味著增加地址值為結(jié)構(gòu)體數(shù)組a的

一個元素所占的字節(jié)數(shù),即p++使p由a[0]指向a[l]起始地址。本題++p->n

得到p指向的結(jié)構(gòu)體變量中成員n的值使之加lo因為p指向數(shù)組a起始地

址,p->n的值為5,再執(zhí)行自加1運行,結(jié)果為6。

18、要輸出下面的圖形,請完善程序。

ttinclude<stdio.h>

main()

(

inti,j,k;

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

(

for(j=l;j<=20-3*i;j++)printf(/zz,);

for(k=l;;k++)printf(〃%3d〃,k);

for(________;k>O;k++)printf(〃%3d”,k);

printf('\n");

)

)

A、k<=i

k=i

B、k<i

k=i-l

C、k<i

k二i

D、k<=i

k=i-l

【答案】D

19、設(shè)pl和p2是指向同一個int型一維數(shù)組的指制變量,k為int型變

量,則不能正確執(zhí)行的語句是。

A、k=*P1+*P2;

B、p2=k;

C、Pl=P2;

D、k=*Pl*(*P2);

【答案】B

20、有以下程序

structs

(

intn;

inta[20];

}

voidf(int*a,intn)

(

inti;

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

)

main()

(

inti;

structss={10,

{

2,3,1,6,8,7,5,4,10,9});

f(s.a,s.n);

for(i=0;i<s.n;i++)printfC%d,s.aLiJ);

)

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

A、2,4,3,9,12,12,11,11,18,9,

B、3,4,2,7,9,8,6,5,11,10,

C、2,3,1,6,8,7,5,4,10,9,

D、1,2,3,6,8,7,5,4,10,9,

【答案】A

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

()1、若有正確變量定義,表達式x=y=l符合c語言語法。()

【答案】正確

()2、結(jié)構(gòu)是變量的集合,可以按照對基本數(shù)據(jù)類型的操作方法單獨使用其成員變量。

【答案】正確

()3、在標準c中,沒有邏輯型數(shù)據(jù),故不能使用邏輯表達式。

【答案】錯誤

()4、continue只能用于循環(huán)體中。

【答案】正確

()5、c語言中,字符串常是最后一個字符是結(jié)束標志,該結(jié)束符是'0'。

【答案】錯誤

()6、一個函數(shù)中可以有多個return語句,當執(zhí)行到某個return看句時,程序的控制流

程返回到調(diào)用該函數(shù)的地方,并將return語句中表達式的值作為函數(shù)值帶回。

【答案】正確

()7、二維數(shù)組元素在內(nèi)存中的存放順序是按列主順序存放

【答案】錯誤

()8、輸入操作稱為寫操作,將輸入流中的信息存到內(nèi)存時,使用寫函數(shù)。

【答案】錯誤

()9、數(shù)組元素下標的個數(shù)也稱為維數(shù),根據(jù)維數(shù)的不同,可將數(shù)組分為一維數(shù)組、二維

數(shù)組、三維數(shù)組、四維數(shù)組等。()

【答案】正確

()10、編寫c語言程序的流程是:新建項目、添加源文件、編寫代碼、運行程序。()

【答案】正確

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

1、靜態(tài)存儲的變量是在____時分配存儲單元并賦初值,在程序整個運行期

間都不被釋放。

【答案】編譯

2、在C語言中的實型變量分為兩種類型,它們是整形—和浮點型。

【答案】

3、語句主要是實現(xiàn)次數(shù)循環(huán)結(jié)構(gòu),while語句主要是實現(xiàn)當型循環(huán)結(jié)構(gòu)。

【答案】for

4、對于文件末尾檢測函數(shù)feof,如果文件指針已到文件末尾,則函數(shù)返回值是

【答案】非0#不等于0#非零#不等于零

5、有如下函數(shù)頭:intmax(inti,intj),則此函數(shù)有個參數(shù)。

【答案】2

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

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

【答案】結(jié)果是c

2、下列程序段的運行結(jié)果是____o

main()

(

inta=5,b=6,c;

intmin(int,int);

c=min(a,b);

printf(〃/d\n〃,c);

}

intmin(intx,inty)

(

intz;

if(x<y)z=x;

elsez=y;

returnz;

)

【答案】5

3、寫出下列程序的運行結(jié)果。

fun(inta,intb)

(

if(a>b)return(a);

elsereturn(b);

}

main()

(

intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

printf(,z%d\nz,,r);

}

【答案】12

4、當執(zhí)行以下程序時,如果輸入abc,則輸出結(jié)果是:

#include<stdio.h>

ttinclude<string.h>

voidmainO

(

charss[10]=〃l,2,3,4,5”;

gets(ss);

strcat(ss,“6789”);

printfss);

)

【答案】abc6789

【解析】gets函數(shù)將使用字符串“ABC”覆蓋原來的“12345”字符串,然后再

將字符串“6789”連接到“ABC”上,故輸出為“ABC6789”0

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

1、編寫程序:寫一個函數(shù),求一個字符串的長度,在main函數(shù)中輸入字符

串,并輸出其長度。(本題12分)

【答案】^include<stdio.h>

ttinclude<stdlib.h>

intmain()

(

intlen;

charstr[20];

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

scanf(〃%s〃,str);

len=length(str);

printf(〃字符串有%d個字符?!↗en);

)

〃求字符串長度

intlength(char*s)

(

inti=0;

while(*s!=>\0*)

i++;

s++;

returni;

)

2、編寫程序輸入三位數(shù)(100-999),然后按數(shù)字逆序輸出°(例:輸入

123/,輸出321)o(本題18分)

【答案】#include<stdio.h>

voidmain()

{intn,ge,shi,bai;

printf("請輸入一個三位正整數(shù):”);

scanf&n);

if((n<100)||(n>999))

printf(〃輸入數(shù)據(jù)有誤!\n〃);

else

{ge=n%10;

shi=n/10%10;

bai=n/100;

printf("此數(shù)的逆序輸出結(jié)果為:%d%d%d\n〃,ge,shi,bai);

)

}

3、編程序建立一個帶有頭結(jié)點的單向鏈表,鏈表結(jié)點中的數(shù)據(jù)通過鍵盤輸入當

輸入數(shù)據(jù)為T時表示輸入結(jié)束,使用結(jié)構(gòu)體實現(xiàn)。(本題20分)

【答案】#include<stdlib.h>

#include<stdio.h>

structlist

(

intdata;

structlist*next;

);

typedefstructlistnode;

typedefnode*link;

intmain()

(

linkptr,head;

intnum;

ptr=(link)malloc(sizeof(node));

head=ptr;

printfC/pleaseinputdata->\n/z);

scanf&num);

溫馨提示

  • 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

提交評論