中央美術學院歷年計算機C語言考試試卷(含六卷)含答案_第1頁
中央美術學院歷年計算機C語言考試試卷(含六卷)含答案_第2頁
中央美術學院歷年計算機C語言考試試卷(含六卷)含答案_第3頁
中央美術學院歷年計算機C語言考試試卷(含六卷)含答案_第4頁
中央美術學院歷年計算機C語言考試試卷(含六卷)含答案_第5頁
已閱讀5頁,還剩66頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

中央美術學院歷年計算機C語言考試試卷(-)

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

1、如果將布?爾常量值true賦值給一個整型變量,則整型變量的值為o

A、0

B、-1

C、True

D、False

2、運行下述程序段后,i值為4的是o

A、inti=l,j=0;

B、inti=l,j=l;I=j=((i=3)++);i+=i+=2;

C、inti==0,j=0;

D、inti=0,j=l;15(i=2,i+(j=2));(j==l)?i+=3:i=2;

3、在嵌套使用if語句時,c語言規定else總是________。

A、和之前與其具有相同縮進位置的if配對

B、和之前與其最近的if配對

C、和之前與其最近的且不帶else的if配對

D、和之前的第一人if配對

4、若i為整型變量,則以下循環語句的循環次數是—.for(i=2;i==0;)

printf(/z%d/z,i—);

A、無限次

B、0次

C、1次

D、2次

5、若已定義實參數組inta[3][4]={2,4,6,8,10};則在被調用函數f的

下述定義中,對形參數組b定義正確的選項是.

A>f(intb[][6])

B、f(b)intb[][4];

C、f(intb[3][]);

D、f(b)intb[4][5];

6、若有定義語句:inta[4][10],*p,*q[4];且0V=iV4,則錯誤的賦值是

A、p=a

B、q[i]=a[i]

C^p=a[i]

D、p=&a[2][l]

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

A^intnum[O..2008];

B、intnum[];

C>intN=2008;intnum[N];

DsSdefineN2008;intnum[N];

8、以下敘述中錯誤的是o

A、用戶所定義的標識符允許使用關鍵字

B、用戶所定義的標識符應盡量做到〃見名知意〃

C、用戶所定義的標識符必須以字母或下劃線開頭

D、用戶定義的標識符中,大、小寫字母代表大同標識

9、下面關于編譯預處理命令,正確的是________。

A^^definecharCHAR

B、#DefineE0.0000034

C、##defineFALSE0

D、#defineDIM26

10、閱讀下列程序段:chars[18]=〃abook!”;printf(〃%.4s\n〃,s);

其輸出結果為________O

A、abook!

B、abook

C、abo

a

11、c語言中,若未說明函數的類型,則系統默認該函數的類型是

A、float型

B>long型

C、int型

D、double型

12、已知字符'a'的ascii碼為97,執行下列語句的輸出是—

A、98,b

B、語法不合法

C、98,99

D>98,c

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

A、具有6個元素的一維數組

B、定義了一個指向具有6個元素的一維數組的行指針變量

C、指向整型指針變量

D、指向6個整數中的一個的地址

14、以下程序的輸出結果是o

structhar

(

intx,y;

structhar*p;

)

h⑵;

main()

(

h[O].x=l;

h[0].y=2;

h[l].x=3;

h[l].y=4;

h[0].p=&h[l];

h[l].p=h;

printf("%d%d\n”,(h[0].p)->x,(h[l].p)->y);

}

A、12

B、23

C、14

D、32

15、下列程序的執行結果是

#include<stdio.h>

main()

(

inta,b,c;

a=b=2;

c=(a++)-1;

printf(z/%d,%d〃,a,c);

c+=-a+++(++b);

printf(^d,%d”,a,c);

)

A、3,14,1

B、3,14,2

C、2,04,1

D、2,14,1

16、下列語句哪些不屬于循環語句?

A、for

B、while

C^dowhile

D、if

17、設有以下語句

typedefstructtt

(

charc;

inla[4];

}

cin;

則下面敘述中正確的是。

A、可以用TT定義結構體變量

B、TT是struct類型的變量

C、可以用CIN定義結構體變量

D、CIN是structTT類型的變量

18、下述程序的運行結果是o

#include<stdio.h>

voidfun(intx)

(

putchar0*+(x%10));

fun(x/10);

}

main()

(

printf(,,\n,,);

fun(1234);

)

A、4321

B、321

C、21

D、1

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

A、不能用字符串常量對字符數組名進行整體賦值操作

B、字符串常量〃Hello〃會被隱含處理成一個無名字符型數組,它有5個元

C^charstr[7]=〃string!〃;在語法上是合法的,運行也是安全的

D、char*str;st尸“Hello”;與charstr[];str="Hello”;效果是一樣的

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

A、即使是同類型的結構體變量,也不能進行整體賦值

B、結構體變量的地址不能作為實參傳給函數

C、結構體數組名無能作為實參傳給函數

D、結構體中可以含有指向本結構體的指針成員

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

1、已知charstr[]=〃happy!〃,則strlcn(str)的值為。

2、c程序中的變量按其定義位置及作用域可分為兩種。

3、在c語言中,邏輯運算符中的〃&&〃稱為________o

4、設a=3,b=2,c=l,則a>b>c的值為。

5、執行卜列的程序段后,止確的結果是。

inti=5;

while(i=1)i-;

printfi);

6、以下程序的運行結果是________。

inti=0;

main()

(

inti=5;

reset(i/2);

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

reset(i=i/2);

,,,,

printf(i=%d\n>i);

reset(i/2);

printf(//i=%d\n,/,i);

workover(i);

printf(z,i=%d\nz,,i);

)

workover(inti)

i=(設i)*((i*i)/;2*i)+4);

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

returni;

)

reset(inti)

(

i=iV=2?5:0;

returni;

)

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

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

8、在C語言中,以作為字符串結束標志。

9、程序運行結果是0

voidswap(inta[2])

(

intt;

t=a[0];

a[0]=a[l];

}

voidmain()

(

intx「21={5,81:

swap(x);

printf(〃x[0]=%d,x[l]=%d\n*,x[0],x[l]);

}

10、請補充函數proc(),該函數的功能是:把從主函數中輸入的由數字字符組成

的字符串轉換成一個無符號長整數,并且逆序輸出。結果由函數返回。例如,輸

入:1234567,結果輸出:7654321。注意:部分源程序給出如下。請勿改動

main。函數和其他函數中的任何內容,僅在函數proc()的橫線上填入所編寫的

若干表達式或語句。試題程序:

ttinclude<stdio.h>

unsignedlongproc(char*str)

(

unsignedlongt=0:intk:inti=0;

i=str|en(str);

for(;i>=0;i-)

}

returnt;

)

voidmain()

(

charstr[8];

system(^cls^);

printf(z,enterastringmadeupof'O'to'9'digitalcharacter:\

n);

gets(str);

printf("thestring,is:%s\n”,str);

if(strlen(str)>8)printf(,zthestringistootong!〃);

elseprintf(/ztheresult:%lu\nz,,procistr));

}

三、編程題(共3題,共40分)

1、在1—500中,找出能同時滿足用3除余2,月5除余3,用7除余2的所有

整數。(本題10分)

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

出來。(本題14分)

3、編寫程序:用結構體數組,學生信息由學號、姓名,成績組成,

數據如下:201513135157張三90

1)使用結構體數組,將學生的數據按成績從高到低排序顯示到屏幕上

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

3)寫一個函數,獲取成績低于平均分的學生記錄并返回低于平均分的學生人數

(本題16分)

參考答案

一、單項選擇題

1、B

2、B

3、C

4、B

5、B

6、A

7、D

8、A

9、D

【解析】無參宏定義的一般格式:#define標識符語言符號字符串,其

中:“define”為宏定義命令;"標識符為所定義的宏名,通常用大寫字母表示,

以便于與變量區別;“語言符號字符串”可以是常數、表達式、格式串(格式串

是用雙引號括起來的字符串)等,選項ABC錯誤,選項D正確;本題答案為

Do

10、C

【解析】〃abook!〃在字符數組中是按單個字符存儲的,包括空格,%.4s是輸

出前四個字符。

11、C

12、D

13、B

14、D

15、A

【解析】本題主要考查自加運算符(++、一)的使用。①前綴變量“++i、-

i”,在使用i之前,先使i的值加1或者減1,再使用此時的表達式的值參與

運算:②后綴變量“,+、i-”,先使用此時的表達式的值參與運算,在使用

i之后,再使i的值加1或者減1。題中計算表達式c=(a++)T時先使用a的

值進行計算,結果為c=2-1=1,然后將a的值加:,即執行完此語句后a的值是

3;表達式c+=-a+++(++b)等價于c=c+(-a++)+(++b),c=l+(-3)+3=l,此時

a=4,b=3o

16、D

17、D

18、A

19、A

【解析】字符數組在定義時可以用字符串賦初值,其后就不可以再用字符串常

量進行賦值。答案選擇A。

20、D

【解析】同類型的結構體變量可以進行整體賦值。結構體變量的地址可以作為

實參傳遞給函數。結構體數組ing可以作為實參傳遞給函數。結構體成員可以

包含指向本結構體的指針成員。本題答案為D選項。

二、填空題

1、6

2、['全局變量和局部變量']

3、邏輯與

4、1

5、無限循環#死循環

6、i=5i=2i=2i=0i=2

7、['printf(〃a=%d,b=%d〃,a,b);']

8、

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

10、-istr[i]-10,t*10+k

三、編程題

1、Sinclude<stdio.h>

voidmain()

(

inti,count=0;

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

if((i%3==2)&&(i%5==3)&&(i%7==2))

(

printf("%8d〃,i);

count++;

)

printf("\n共有%d個!\n〃,count);

}

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

}else{

next=getchar();

palin(n-l);

putchar(next);

)

)

3、ftinclude<stdio.h>

ttdefineNUM3

structstudent

(

char*sno=newchar[20];

char*name=newchar[20];

intscore;

boolfail=false;

};

voidsLuSorL(sludenL*sLu)

(

studenttmp;

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

(

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

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

tmp.name=stu[j].name;

tmp.sno=stu[j].sno;

tmp.score=stu[j].score;

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

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

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

sLu[i].name-Imp.name;

stu[i].sno=tmp.sno;

stu[i].score=tmp.score;

)

}

}

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

(

printfC%s%s%d\n,z,stu[i].sno,stu[i].name,stu[i].score);

)

)

voidstuFail(student*stu)

(

intnumOfStu=0:

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

(

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

(

printfstu[i].name);

}

else

(

numOfStu++;

}

)

if(numOfStu=NUM)

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

)

)

voidstuAvg(student^stu)

(

intstuScore=0;

doublestuAvg=0;

intent=0;

for(inLi-0;i<NUM;i++)

(

stuScore+=stu[i].score;

)

stuAvg=stuScore/NUM;

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

(

if(stu[i].score<stuAvg)

(

ent++;

)

}

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

}

intmain()

(

student*stu=newstudent[NUM];

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

(

printf(〃輸入學號:〃);

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

prinlf(〃輸入姓名:〃);

scanfstu[i].name);

printf(〃輸入功課成績:〃);

scanfscore);

}

stuSort(stu);

stuFail(stu);

stuAvg(stu);

delete[]stu;

stu=NULL;

return0;

)

中央美術學院歷年計算機C語言考試試卷(二)

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

1、計算機內部運算使用的數是O

A、十進制數

B、十六進制數

C、二進制數

D、八進制數

2、設inta=12,則執行完語句a+=a~=a*a后,a的值是,

A、552

B、264

C、144

D、-264

3、有以下程序

#include<stdio.h>

main()

(

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

if(a>b>c)

printf(繪d\n〃,d);

elseif((c-1>=d)==1)

printf(〃%d\n〃,d+1);

else

printf(〃%d\n”,d+2);

}

執行后輸出的結果是O

A、2

B、3

C、4

D、編譯時有錯,無結果

4、有以下程序:

ttinclude<stdio.h>

main()

inta=l,b=2;

for(;a<12;a++)

b+=a*2;

a+=3;

}

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

}

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

A、32,13

B、46,10

C、72,13

D、72,10

5、c語言規定,函數返回值的類型是由。

A、return語句中的表達式類型所決定

B、調用該函數時的主調函數類型所決定

C、調用該函數時系統臨時決定

D、在定義該函數時所指定的函數類型決定

6、設有如下定義:

strucksk

(

inta;

floatb;

}data;

int*D:

若要使p指向data中的a域,正確的賦值語句是。

A、p=&a;

B、p=data.a;

C、p=&data.a;

D、*p=data.a;

7、定義如下變量和數組:intk,a[3][3]={1,2,3,4,5,6,7,8,9);

則下面語句的輸出結果是ofor(k=0;k<3;k++)printf(,z%d

〃,社[k][2-k]);

A、357

B、369

C、159

D、147

8、以下是正確c語言標識符的是________o

A、_3

B、#3

C、&3

D、-3

9、宏定義用于將一個標識符定義為一個

A、常量

B、字符串

C、整數

D、長整數

10、有以下程序

#include<string.h>

voidf(charp[][10],intn)/*字符串從小到大排序*/

(

chart[10];

inti,j;

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

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

if(strcmp(p[i]>p[j])>0)

(

strcpy(t,p[i]);

strcpy(p[i],p[j]);

strcpy(p[j],t);

}

}

main()

(

charp[5][10]={"abc〃,〃aabdfg〃,〃abbd〃,〃dcdbe〃,"cd"};

f(p,5);

printf(//%d\n/,,strlen(p[0]));

)

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

A、2

B、4

C、6

D、3

11、以下敘述正確的是。

A、在對一個C程序進行編譯的過程中,可發現注釋中的拼寫錯誤

B、在C程序中,main函數必須位于程序的最前面

C、C語言本身沒有輸入輸出語句

D、C程序的每行中只能寫一條語句

12、下列關于指針變量的描述,不正確的是o

A、在沒有對指針變量賦值時,指針變量的值是不確定的

B、同類指針類型可以進行相減操作

C、在使用沒有賦值的指針變量時,不會出現任何問題

D、可以通過指針變量來取得它指向的變量值

13、下面函數調用語句含有實參的個數為o

func((expl,exp2),(exp3,exp4,exp5));

A、1

B、2

C、3

D、5

14、設有如下說明

typedefstructst

(

longa;

intb;

charc[2];

)

new;

則下面敘述中正確的是_____o

A、以上的說明形式非法

B、ST是一個結構體類型

C、NEW是一個結構體類型

D、NEW是一個結構體變量

15、下面程序段的運行結果是.

intn=0;

while(n++<=2)printfn);

A、012

B、123

C、234

D、錯誤信息

16、下列程序的運行結果是。

voidmain()

(

ints=0,k;

for(k=7;k>1;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、無輸出結果

17、以下scanf函數調用語句中不正確的是

structpupil

charname[20];

intage;

intsex;

}

pup[5],*p=pup;

A^scanfpup[0].name);

B、scanf&pup[0].age);

C、scanf(〃為d〃,p->age);

D、scanf&(p->sex));

18、有以下程序:

intf(intn);

main()

inta=3,s;

s=f(a);

s-s+f(a);

printf(〃%dkn〃,s);

)

intf(intn)

staticinta=l;

n+=a++;

returnn;

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

A、7

B、8

C、9

D、10

19、有說明語句inta[4][5];則a[2]+3表示—。

A、a數組行下標為2、列下標為3的元素的地址

B、a數組行下標為2、列下標為3的元素的值

C、a數組第2行的首地址

D、a數組第3行的首地址

20、程序中有下面的說明和定義

structabc

intx;

chary;

}

structabcsi,s2;

則會發生的情況是o

A、編譯出錯

B、程序將順利編譯、連接、執行

C、能順利通過編譯、連接、但不能執行

D、能順利通過編譯、但連接出錯

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

1、在c語言中,關系運算符中的〃小于等于〃表示為_____

2、設a=5,b=2,則表達式〃!a+b〃的值是。

3、執行下面程序段后,k值是o

k=l;

n=263;

do

k*=n%10;

n/=10;

)

while(n);

4、設y為int型變量,請寫出描述“y是奇數”的表達式。

5、結構化程序設計的3種基本結構是:結構、選擇結構、循環結構,這

三種基本結構構成了復雜的c語言程序。

6、下面程序的功能是用一輾轉相除法II求兩個正整數的最大公約數。請分析程

序填空。

ttinclude<stdio.h>

main()

(

intr,m,n;

scanf(,,%d%d,z,&n,&n);

if(m<n)1;

r=in%n;

while(r)

(

m=n;

n=r;

r=2___;

)

printf(/?%d\nz/,n);

)

7、字符串函數用于把一個字符串寫入指定的磁盤文件中。

8、局部變量的作用域是從定義的位置起,到結束止。

9、以下程序的執行結果是—o

#include<stdio.h>

voidmain()

(

charc=,a+10;

printf(〃c=%c\n”,c);

)

10、以下程序的功能是調用函數fun計算:m=l-2-3-4+…+9-10,并輸出結果。請

填空。

intfun(intn)

intm=0,f=l,i;

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

m+=i*f;

f=;

}

returnm;

main()

z,,,

printf(m=%d\n,________);

三、編程題(共3題,共40分)

1、編程序求1+3+5+7+9+,,這樣的數之和。如果累加數大于750時,則程序終止

并輸出結果。(本題10分)

2、編寫程序:計算字符串中子串出現的次數。請輸入兩個字符串,以回車隔

開,母先串在前,子串在后,比如:

abca

a

2(本題14分)

3、編寫程序:利用結肉體類型,編程計算一名同學5門課的平均分。(本題

16分)

參考答案

一、單項選擇題

1、C

2、D

3、B

【解析】第二個if語句中的表達式"cT>=d”的值為邏輯值1,所以該條件

成立。

4、A

【解析】在這段程序中變量a的初值等于1,變量b的初值等于2。第1次執行

for循環語句后,變量a的值等于4,變量b的值等于4。第2次執行for循環

后,變量a等于8,變量b的值等于14。第3次執行for循環后,變量a等于

12,變量b的值等于32。第4次執行for循環后,變量a等于13,不滿足循環

的條件,這時退出for循環,此時變量b的值依然等于32。因而程序輸出變量

a,b的值分別為13,32。

5、D

6、D

7、A

8、A

9、B

【解析】宏定義用于將一個標識符定義為一個字符串

10、C

11、C

12、C

【解析】沒有賦值的指針變量,可能指向任何地方,如果指向系統,那么使用

該指針可能導致系統崩潰。

13、B

【解析】本題考套函數調用時的實參形式。這里有一個逗號運算的考查,(a,

b)的運算結果為b,因而只有一個值,結合func的調用形式,可以知道實參的

個數只有2個。

14、C

【解析】typedef關鍵字用于聲明一個新的類型名代替已有的類型名。本題中

如果沒有用typedef進行定義的話,則structST為結構體類型,現在用

typedef定義后,相當于用NEW代表了structST這一結構體類型,故NEW

為結構體類型。

15、B

16、B

17>C

18、C

19、A

20、A

二、填空題

1、<=

2、2

3、36

4、y%2!=0;

5、順序

6^[1]r=m,m=n,n=r[2]m%n

7、fputsftfputs()

8、函數

9、c=ko

10、['-f或f*-l或T*f或或'fun(lO)']

三、編程題

1main()

(

inti=l,sum=0;

while(sum<=750)

(

sum=sum+i;

i=i+2;

}

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

)

2、#include<stdio.h>

#include<stdlib.h>

#include<string.h>

intmain()

(

inti,j,k,TLcn,PLcn,count=0;

charT[50],P[10];

printf(〃請輸入兩個字符串,以回車隔開,母串在前,子串在后:

gets(T);

gets(P);

TLen=strlen(T);

PLen=strlen(P);

for(i=0;i<=TLen-PLen;i++)

(

for(j=0,k=i:j<PLen&&P[j]==T[k];j+-,k++)

9

if(j==PLen)count++;

}

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

system("pause");

return0;

)

3、structstudent{

charname[30]:

floatscore[5];

};

intmain(intargc,constchar*argv[])

(

structstudenta={“zhangsan”,20,30,40,50,60};

floatsum=0;〃定義一個5科分數之和變量

floatAverageScore=0;〃定義一個平均分變量

for(inti=0:i<5;i++){

sum=sun+a.score[i];

AverageScore=sum/5;

}

printfC姓名%s\n5科成績平均分是:見If分

〃,a.name,AverageScore);

return0;

)

中央美術學院歷年計算機C語言考試試卷(三)

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

1、以下敘述中正確的是O

A、在C程序中,語句之間必須要用分號(;)分隔

B、在C程序中#include行和#define行不是C語句

C、程序中的注釋部分可有可無,通常可以省略

D、當輸入數值數據時,對于整型變量只能輸入整型值:對于實型變量只能

輸入實型值

2、下列正確的實型常量是。

A、E3.4

B、-12345

C、2.2e8

D、4

3、設變量x和y均已正確定義并賦值。以下if語句中,在編譯時將產生錯誤信

息的是?

A、if(x++);

B、if(x>y&&y!=0);

C^if(x>0)x-elsey++;

D、if(y<0){;}elsex++;

4、以下敘述中正確的是0

A、continue語句使得整個循環終止

B、break語句不能用于提前結束for語句的本層循環

C、使用breakswitch語句可以使流程跳出語句體

D、在for語句中,continue與break的效果是一樣的,可以互換

5、有以下程序(strcpy為字符串復制函數,strcat為字符串連接函數):

main()

(

chara[10]=〃abc",b[10]="012〃,c[10]="xyz";

strcpy(a+1,b+2);

puts(strcat(a,c-1));

}

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

A、a12xyz

12yz

C、a2yz

D、bc2yz

6、表達式y=(13>12?15:6>7?8:9)的值為。

A、9

B、8

C、15

D、1

7、己知3個字符為:a、x和5,按它們的ascii碼值升序排序,結果是

A、5<a<X

B、a<5<X

C、X<a<5

D、5<X<a

8、執行下面程序段,給x、y賦值時,不能作為數據分隔符的是。int

x,y;scanf&x,&y);

A、空格

B、Tab鍵

C、回車

D、逗號

9、判斷兩個字符串是否相等,正確的表達方式是

A、sl==s2

sl=s2

C、strcmp(sl,s2)==0

D、strcmp(sl,s2)=0

10、下列對字符數組進行初始化的語句中,是正確的。

A、chars1[]="abed”;

B、chars2[3]=,5xyz”;

C、chars3[][3]={'a','x','y'}

D、chars3[][3]={“xyz”,“mnp”};

H>以下()不是c語言中用于結構化程序設計的三種基本結構之一。

A、順序結構

B、選擇結構

C、遞歸結構

D、循環結構

12、在位運算中,操作數每左移一位,其結果相當于

A、操作數乘以2

B、操作數除以2

C、操作數除以4

D、操作數乘以4

13、設有語句:x=inputbox句輸入數值”,〃0〃,〃示例〃)程序運行后,如果從鍵盤

上輸人數值10并按回車鍵,則下列敘述中正確的足O

A、變量x的值是數值10

B、在InputBox對話框標題欄中顯示的是“示例”

C、0是默認值

D、變量x的值是字符串“10”

14、以下程序的輸出結果是

#include<sLdio.h>

structst

(

intx;

int*y;

)

*P;

intdt[4]={10,20,30,40);

structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};

main()

(

P=aa;

printf(〃%d\n”,+-(p->x));

}

A、10

B、11

C、51

D、60

15、有以下程序

main()

(

inta,b,d=25;

a=d/10%9;

b-a&&(-1);

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

)

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

A、6,1

B、2,1

C、6,0

D、2,0

16、下列while循環,將執行

int1=4;

while(-i)printf(z,%d/z,i);

A、3次

B、4次

C、0次

D、無限次

17、當定義一個結構體變量時,系統為它分配的內存空間是.

A、結構中一個成員所需的內存容量

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

C、結構體中占內存容量最大者所需的容量

D、結構中各成員所需內存容量之和

18、有以下程序

main()

(

inta=l,b=2,m=0,n=0,k;

k=(n=b>a)||(m=a<b);

〃短路問題printf("%d,%d\nz,,k,m);

)

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

A、0,0

B、0,1

C、1,0

D、1,1

19、以下二維數組c的定義形式是o

A、intc[3]口

B、floatc[3,4]

C、doublec[3][4]

D、floatc3)4)

20、以下選項中,能定義m為合法的結構體變量的是

A、Lypedefstructabc{

doublea;charb;}m;

B、struct{

doublea;charb;}m;

C^structABC{

doublea;charb;}ABCm;

D、typedefABC{

doublea;charb;)ABCm;

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

1、c語句分為_____大類。

2、若有語句doublex=17;inty;,當執行y=(int)(x/5)%2;之后y的值是

________o

3、c語言的源程序拓展名為()編譯后生成()鏈接后生成。

4、C程序的運行需要經過_____和鏈接兩步進行。

5、下列程序段的運行結果是________o

main()

(

intm=l,t=l;

for(;;)

(

rn=m+t;

t++;

if(m>9)break;

}

printf(〃%d\n〃,mJ;

}

6、以下程序的輸出結果是o

#include<stdion.h>

#defineM5

ttdefineNM+M

main()

(

intk;

K=N*N*5;

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

}

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

函數。

8、使文件指針重新定位到文件讀寫的首地址的函數是o

9、以下程序功能是:借助指針變量找出數組元素中的最大值及其元素的下標

值。請填空。

#include<stdio.h>

main()

(

intaT101,*D,*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\nM,s-a);

)

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

i=l;

a=0:

s=l;

do

(

a=a+s*i;

s二一s;

i++;

)

while(i<-10);

printf(,za=%d,/,a);

三、編程題(共3題,共40分)

1、編寫程序:對10個數進行排序。(本題10分)

2、編寫函數

voiddel(char*s,charc),其功能是在s所指字符串中刪除與變量c相同的

字符,并設計主函數實現:(1)從鍵盤輸入字符串和指定被刪除的字符;

(2)調用del()函數實現刪除操作;

⑶輸出刪除后的字符串。說明:不允許使用除gets和puts之外的任何字符

串處理庫函數。(本題14分)

3、編寫程序:從鍵盤輸入n(nV10)個學生的學號(學號為4位的整數,從

1000開始)、成績并存入結構數組中,查找并輸匕成績最高的學生信息。

輸入輸出示例:括號內為說明,無需輸入輸出

輸入樣例:

3(n=3)

100085

100190

100275

輸出樣例:

100190(本題16分)

參考答案

一、單項選擇題

1、B

2、B

【解析】實型常量有兩種書寫形式:①小數形式,它由符號、整數部分、小數

點及小數部分組成;②指數形式,由十進制小數形式加上指數部分組成,其形

式為十進制小數e指數或十進制小數E指數。注:e或E后面的指數必須是整

數,并且在e或E的前面必須有數字。本題中,選項A)中E的前面沒有數字,

因此錯誤。選項C)中0.8不是整數,因此錯誤。選項D)中4是整型常量而不是

實型常量。

3、C

【解析】C語言規定,在“if(表達式)語句l;else語句2;”這種形式的if

語句中,在每一個else前面有一個分號,整個語句結束處有一分號。在本題的

C)選項中,else前面少了一個分號,這樣程序在編譯時,會出現語法錯誤。

4、C

【解析】break語句通常用在循環語句和開關語句中。當break用于開關語句

switch中時可使程序跳出switchswitch而執行以后的語句;當break語句用

于do-whie.for、while循環語句中時可使程序終止循環而執行循環后面的

語句,即滿足條件時便跳出循環。continue語句的作用是跳過循環體中剩余的

語句而強行執行下一次循環。A,B和D三個選項中均有錯誤。因此C選項正

確。

5、C

6、C

7、D

【解析】在ASCH碼表中,根據碼值由小到大的徘列順序是:控制符、數字

符、大寫英文字母、小寫英文字母。

8、D

9、C

10、A

【解析】BCD選項都不合字符數組的定義。

11、C

12、A

【解析】左移運算符“VV”是雙目運算符。其功能把“VV”左邊的運算數

的各二進位全部左移若干位,由“VV”右邊的數指定移動的位數,高位丟

棄,低位補0。左移1位,相當于該數乘以2。

13、D

【解析】InputBox函數返回的字符串值必須賦予一個變量才能被保留,它一次

只能輸入一個值。變量x的值為“10”。

14、C

【解析】考查結構體成員數據的引用方法[解題要點]通過指針來引用結構體成

員的方法是(指針變量)->結構體成員名。[考點鏈接]結構體變量中的數據引

用。

15、B

16、D

17、D

18、C

19、C

20、B

二、填空題

1、5#五

2、1

3、.c|.obj|.exe

4、編譯

5、11

6、['55']

7、有參

8、rewind

9、p

10、a=-5

三、編程題

1#include<stdio.h>

#defineN10

intmain()

(

inti,j,a[N],tenp;

printf(〃請輸入10個數字:\n〃);

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

scanf&a[i]);

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

{

intmin=i;

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

if(a[min]>a[j])min=j;

if(min!=i)

(

temp=a[nin];

a[min]=a[i];

a[i]=tenp;

}

}

printf("排序結果是:\n〃);

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

printf(〃%d",a[i]);

printf(〃\n〃);

return0;

)

【解析】可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個

元素交換,下次類推,即用第二個元素與后8個進行比較,并進行交換。

2、^include<stdio.h>

voiddel(char*,char);

voidmain()

(

charstr[100],ch;

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

gets(str):

printf(〃請輸入要刪除的字符:\n〃);

scanf(〃%c〃,&ch;;

del(str,ch);

printf(z,\n刪除后的字符串:\n");

puts(str);

}

voiddel(char*s,charc)

(

char*p=s;

while(*s)

(

if(*s!=cl*p++=*s;

13s++;

*P=,\o';

)

3、#include<stdio.h>

ttdefineN8

typedefstructstudent

(

inLno;

intscore;

}student;

intmain()

(

students[1000]:

intn,i;

intmax;

scanf(〃%d〃,&n);

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

(

scanf("%d〃,&s[i].no);

scanf(〃%d〃,score);

max=s[0].score;

if(max<sfiLscore)

max=s[i].score;

)

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

(

if(s[i].score~max)

printf('%d",s[i].no);

}

prinlriiiax);

return0;

中央美術學院歷年計算機c語言考試試卷(四)

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

1、c語言中,字符(char)型數據在微機內存中的存儲形式是o

A、反碼

B、補碼

C、EBCDIC碼

D、ASCH碼

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

A、0160x8f018

B、Oabc017Oxa

C、010-0x110x16

I)、0al27ff-123

3、執行下面語句后的縮出為____

inti=-1;

if(i<=O)printf(〃****\n");

elseprintf;

A、****

B、%%%%

C、%%%%C

D、有語法錯,不能執行

4、下面的代碼inti=10;之后的for循環語句,語法正確,不會編譯出錯的是

A、for(i=0,i<10,i++)

B、for{

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

C^for(;i>5;i—)

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

5、下面關于指針的說法中錯誤的是o

A、在指針定義的同時可以對其進行初始化

B、指針根據其所指向變量的類型的不同,所占用內存大小也不同

C、指針中存放的是內存單元的地址

D、相同類型的指針之間可以相互賦值

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

語句是o

A、pl=*p2

B、*pl=p2

C^pl=p2

D、*pl=*p2

7、下列數組說明中,正確的是()。

A、staticcharstr口二〃China”;

B、staticcharstr[];str=〃China〃;

C、staticcharstrl[5],str2[]={/,China//);strl=str2;

D、sLaLiccharslrl[],slr2[];sLr2-{,,China/,};slrcpy(sLrl,sLr2);

8、以下關于long、int和short類型數據占用內存大小的敘述中正確的是

A、均占4個字節

B、根據數據的大個來決定所占內存的字節數

C、由用戶自己定義

D、由C語言編譯系統決定

9、下面正確的字符串常量是o

A、

B、'376'

C、〃\n〃

D、376

10、若有以下的說明和語句,則在執行for語句后,*(*(pt+l)+2)表示的數組元

素是O

intt[3][3],

*Dt⑶,k:

for(k=0;k<3;k++)pt[k]=&t[k][0];

A、t[2][0]

B、t[2][2]

C、t⑴⑵

D、

11、以下敘述中錯誤的是。

A、局部變量的定義可以在函數體和復合語句的內部

B、全局變星的定義可以在函數以外的任何部位

C、同一程序內局部變量和全局變量不允許同名

D、函數的形參屬于局部變量

12、一個變量的指針就是o

A、變量的地址

B、變量的值

C、變量的名稱

D、變量的類型

13、若要求從鍵盤讀入含有空格字符的字符串,應使用函數

A^getc()

B、getsO

C>getchar()

Dsscanf()

14、下列描述說明正確的是o

A、定義結構體時,它的每個成員的數據類型可以不同

B、不同結構體的成員名不能相同

C、結構體定義時,其成員的數據類型不能是結構體本身

D、結構體定義時各成員項之間可用分號也可用逗號隔開

15、有以下程序:

intf(intx);

main()

(

inta,b=0;

for(a=0;a<3:a++)

(

b=b+f(a);

putchar(,a-b);

}

}

intf(intx)

(

returnx*x;

}

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

A、ABE

B、BDI

C、BCF

D、BCD

16、有以下程序:

main()

(

intc=0,k;

for(k=l;k<3;k+~)

switch(k)

default:c+=k;

case2:c++;

break;

case4:c+=2;

break;

)

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

)

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

A、3

B、5

C、7

D、9

17、有以下程序

structstu

(

intnum;

floattotalscore;

};

voidf(structstup;

(

structstus[2]={{20044,550),{20045,537}};

p.num=s[l].nun;

p.totalscore=sFll.totalscore;

)

main()

(

structstus[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n”,s[0].num,s[0].totalscore);

)

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

A、20045537

B、20044550

C、20042580

D、20041703

18、下面程序輸出的是o

main()

intt=l;

fun(fun(t));

}

fun(inth)

(

staticinta[3]={l,2,3};

intk;

for(k-

溫馨提示

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

評論

0/150

提交評論