廣西藝術學院歷年C語言選擇題(共六卷)_第1頁
廣西藝術學院歷年C語言選擇題(共六卷)_第2頁
廣西藝術學院歷年C語言選擇題(共六卷)_第3頁
廣西藝術學院歷年C語言選擇題(共六卷)_第4頁
廣西藝術學院歷年C語言選擇題(共六卷)_第5頁
已閱讀5頁,還剩171頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

廣西藝術學院歷年C語言選擇題(一)

考試方式:【閉卷】考試時間:【90分鐘】總分:【100分】

一、理論基礎(共20題,每小題1分,共10分)

1、設c語言中,int類型數據占2個字節,則long類型數據占一

A、1個字節

B、2個字節

C、4個字節

D、8個字節

【答案】C

2、以下選項中不正確的整型常量是o

A、12L

B、-10

C、12

D、2,900

【答案】D

3、在以下給出的表達式中,與while()中的(e)不等價的表達式是

A、(!E==0)

B、(E>0IIE<0)

C、(E==0)

D、(E!=0)

【答案】C

4、下列關于c語言的敘述錯誤的是o

A、英文字母大小寫不加以區分

B、不同類型的變量可以出現在同一個表達式中

C、在賦值表達式中賦值號兩邊的類型可以不同

D、某些運算符在不同的場合可以有不同的含義

【答案】A

5、下列是多行注釋的符號是o

A、//

B、/

C、/*

D、/**/

【答案】D

【解析】單行注釋的符號為〃,多行注釋的符號為/**/。

6、下列關于自動類型轉換的說法中,正確的是o

A、操作數1是byte類型,操作數2是long類型,結果為byte類型

B、操作數1是byte類型,操作數2是long類型,結果為long類型

C、操作數1是long類型,操作數2是byte類型,結果是byte類型

D、操作數1是long類型,操作數2是byte類型,結果是long類型

【答案】B

【解析】操作數1為byte類型,操作數2為long類型,則自動轉換為long類

型,系統自動將短的類型轉換為長的類型,但是反過來就不可以。

7、若有表達式(w)(—x):(++y),則其中與w等價的表達式是o

A、w==l

B、w==0

C、w!=l

D,w!=0

【答案】D

【解析】條件運算符組成條件表達式的一般形式為:表達式1表達式2:表達

式3。其求值規則為:如果表達式1的值為真,則以表達式2的值作為條件表

達式的值,否則以表達式3的值作為條件表達式的值。本題中需要獲得表達式

w的邏輯值,即w是否為0,不為0則為真,為0則為假。因此正確答案為D)

8、若有說明語句:inta,b,c,*d=&c;則能正確從鍵盤讀入三個整數分別賦給變

量a、b、c的語句是o

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

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

C、scanf("%d%d%d",a,b,d);

D、scanf("%d%d%d",a,b,*d);

【答案】A

9、對于數學式x/2a,下面正確的c語言表達式是-

A、sqr(x)/2a

B、sqr(x)/2*a

C、sqrt(x)/(2*a)

D、sqrt(x)/2*a

【答案】D

10、以下不合法的數值常量是o

A、Oil

B、lei

C、8.0E0.5

D、Oxabcd

【答案】C

11、設變量已正確定義,則以下能正確計算f=n!的程序是。

A、f=0;

for(i=l;i<=n:i+十)f*=i;

B、f=l

for(i=l:i

C、f=l:

for(i=n;i>l;i十+)f*=i;

D、f=l:

for(i=n;j>=2;j—)f*=i;

【答案】D

12、下列判斷正確的是o

A、chara="ABCD":等價于char*a;*a="ABCD":

B、charstr[10]={"ABCD"):等價于charstr[10];str[]={"ABCD");

C、char*s="ABCD":等價于chars;*s="ABCD";

D、charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";

【答案】D

13、表達式的值為0的是o

A、5/5%5

B、5>2

C、!4

D、3>2&&5-6<7

【答案】C

14、設x=015,則x=x*017的值是o

A、00001111

B、11111101

C、00000010

D、11000000

【答案】c

15、若變量c定義為float型變量,能給變量c正確賦值的語句是o

A、scanf("%f",c)

B、scanf("%8.4f",&c)

C、scanf("%d",&c)

D、scanf("%f",&c)

【答案】D

16、下列定義變量的語句中錯誤的是o

A、int_int;

B、doubleint_;

C>charFor;

D、floatUS$;

【答案】D

【解析】本題考查C語言中標識符的概念。用戶標識符由字母、數字和下劃線

組成,并且第一個字符必須為字母或下劃線,并且不能與C語言關鍵字相同。

選項D)所定義的浮點型變量名中包含了字符'$',不屬于上述范疇,因此選項

D)是錯誤的定義語句。

17、指針x指向的整型變量值為25,則"printf(“猊l\n",++*x);”

的輸出是

A、23

B、24

C、25

D、26

【答案】D

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

A、inti=l,j=O;

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

C、inti==O,j=O;

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

【答案】B

19、設x、y、z和k都是int型變量,則執行表達式:x=(y=4,z=16,k=32)后,x

的值為O

A、4

B、16

C、32

D、52

【答案】C

20、若有定義"floata=25,b,*p=&b;",則下列對賦值語句"*p=a;"和"p=&a;"的

正確解釋為()o

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

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

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

D、兩個語句都是使P指向變量a

【答案】C

二、控制結構(共10題,每小題1分,共10分)

1、當從鍵盤上輸入字符"12134211"下面程序的輸出結果是.

main()

chars;

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

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

scanf("%c",&s);

switch(s)

(

default:v4++;

caseT:vl++;

case’3':v3++;

case'2':v2++;

)

)

printf(nvl=%d,v2=%d,v3=%d,v4=%d\nn,vl,v2,v3,v4);

}

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

B、v1=4,v2=9,v3=3,v4=1

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

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

【答案】C

2、當把以下四個表達式用作if語句的控制表達式時,有一個選項與其它三個選

項含義不同,這個選項是o

A、k%2

B、k%2==l

C、(k%2)!=0

D、!k%2==l

【答案】D

3、若a是數值類型,則邏輯表達式(a==l)|I(a!=l)的值是。

A、1

B、0

C、2

D、不知道a的值,不能確定

【答案】A

4、執行下列程序段后,m的值是.

intw=2,x=3,y=4,z=5,m;

m=(w<x)?w:x;

m=(m<y)?m:y;

m=(m<z)?m:z;

A、4

B、3

C、5

D、2

【答案】D

5、若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

【答案】D

6、設變量a、b、c、d和y都已正確定義并賦值。若有以下if語句:if(a<b)

if(c==d)y=0;elsey=l;該語句所表示的含義是,

A、y=0,a

y=l,a?b

B,y=0,a

y=l,a?b且cWd

C、y=0,a

y=l,aVB且CWD

D、y=0,a

y=l,cfd

【答案】C

7、選擇結構中的條件與循環結構中循環成立的條件,在寫法上可以是任一表達

式,但其值只能被判斷為“真”或“假”。哪個數作為邏輯“假”值()。

A、-1

B、1

C、非零的數

D、0

【答案】D

8、下列敘述中正確的是o

A、程序執行的效率與數據的存儲結構密切相關

B、程序執行的效率只取決于程序的控制結構

C、程序執行的效率只取決于所處理的數據量

D、以上三種說法都不對

【答案】A

【解析】程序執行的實際計算工作量不僅與程序的控制結構有一定的關系,還

與處理的數據量有關,與數據的存儲結構密切相關。所以,選項A正確,選項

B和C錯誤。所以,本題的正確答案為A。

9、c語言的if語句中,用作判斷的表達式為—

A、任意表達式

B、邏輯表達式

C、關系表達式

D、算術表達式

【答案】A

10、if語句的基本形式是:if(表達式)語句,以下關于"表達式"值的敘述中正確

的是O

A、必須是邏輯值

B、必須是整數值

C、必須是正數

D、可以是任意合法的數值

【答案】D

三、循環結構(共10題,每小題1分,共10分)

1、下面的程序

main()

(

intx=3;

do

(

printf("%d\n",x-=2);

)

while(!(-x));

)

A、輸出的是1

B、輸出的是1和-2

C、輸出的是3和0

D、是死循環

【答案】B

2、程序段如下:則以下說法中正確的是:

intk=5;

do

k一;

)

while(k<=0);

A、循環執行5次

B、循環是無限循環

C、循環體語句一次也不執行

D、循環體語句執行一次

【答案】D

3、執行以下循環語句時,下列說法正確的是ox=-1;

do

(

X=X*X;

)

while(x==0);

A、循環體將執行一次

B、循環體將執行兩次

C、循環體將執行無限次

D、系統將提示有語法錯誤

【答案】A

4、以下for循環是ofor(x=0,y=O;(y!=123)&&(x<4);x++)

A、無限循環

B、循環次數不定

C、執行4次

D、執行3次

【答案】C

5、下面關于break語句的描述中,不正確的是。

A、break可以用于循環體內

B、break語句可以在for循環語句中出現多次

C、break語句可以在switch語句中出現多次

D、break語句可用于if條件判斷語句內

【答案】D

【解析】本題考查的是break語句的使用。break可以結束switch語句和for

循環語句,但是不能使用在條件判斷語句內。

6、設有循環語句"for(i=l;i>0;i++)i++;",其循環執行的次數是o

A、無限

B、0

C、3

D、4

【答案】A

7、有以下程序

#include<stdio.h>

intmain()

(

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

inti,j,k=2;

for(i=O;i<3;i++)printf("%2d",m[k][i]);

)

執行后輸出結果是o

A、456

B、258

C、369

D、789

【答案】C

【解析】變量k的初值為2,循環執行了3次,分別輸出和

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

8、執行下列語句后,r的值是

charch='a';

intr=6;

switch(ch+5){

case'a':r=r+3;

case'b':r=r+5;

case'c':r=r+5;

break;

default:r/=2;

)

A、19

B、3

C、11

D、7

【答案】B

【解析】考查switch語句用法。default語句是當表達式的值與任一case子

句的值都不匹配時,程序執行default后面的語句。在本題中,判斷

switch(ch+5),其實等價于switch('F'),而在case語句中,沒有一個能匹配

的,所以直接執行default:r/=2°

9、下列程序的運行結果是

#include<stdio.h>

main()

intx=5,a=l,b=2,c=5,d=0;

if(a<b)if(b!=3)if(!c)x=l;

elseif(d)x=l;

elsex=-l;

printf("%d",x);

)

A、-1

B、0

C、1

D、不確定的值

【答案】A

【解析】本題考查ifelse語句。第1個if語句,先判斷條件,發現aVb條

件成立,執行下列的語句;第2個汀語句,先判斷條件,發現b!=3條件成立,

執行下列的語句;第3個汀語句,先判斷條件,c=5,則!c條件不成立,執行

與其配對的else語句:第4個if語句,先判斷條件,d=0,條件不成立,則

x=-l,結束循環。

10、設i和x都是int類型,則for循環語句。for(i=0,x=0;iV

=9&&x!=876;i++)scanf("%d",&x);

A、最多執行10次

B、最多執行9次

C、是無限循環

D、循環體一次也不執行

【答案】A

四、數組/指針數組(共10題,每小題1分,共10分)

1、若有下面的程序片段:

int[12]={0},*p[3],**PP,i;

for(i=0;i<3;i)p[i]=&a[i*4];

PP=P

則對數組元素的錯誤引用是。

A、pp[0][1]

B、a[10]

C、p[3][l]

D、*(*(p+2)+2)

【答案】C

【解析】考查指向數組的指針。[解題要點]本題綜合考查一維數組和多維數組

指針變量的表示方法。在C語言中,引用數組元素的方法有兩種,即:下標法

和指針法。下標法如a[下形式;指針法如*(a+i)或*(p+l)。其中a是數組名,

P是指向數組的指針變量,其初值p=a0再如*(*(p+2)+2)是a[2][2]的值,注

意語句中指針型數組的書寫格式,不能寫成“(*數組名)[長度]”,因為這是定

義指向含有“長度”個元素的一維數組的指針變量。例如有定義語句“inta,

b,c,c,*P[3]={&a,&b,&c};",它定義了一個名為p的指針型數組,其3

個元素p[0],P[1],p[2]分別指向B個整型變量a,b,Co[考點鏈接]數組

元素的引用方法。

2、在c語言中對于實型數組,其每個數組元素的類型是o

A、實型

B、整型

C、可以為任何類型

D、不確定

【答案】A

3、若有下列定義,則對a數組元素的正確引用是ointa[5],*p=a;

A、*(p+5)

B、*p+2

C>*(a+2)

D、*&a[5]

【答案】C

4、以下對一維數組a的正確說明是o

A、intn;scanf;inta[n];

B、intn=10,a[n];

C、inta(10);

D、ttdefineSIZElOinta[SIZE];

【答案】D

5、已知英文字母a的十進制ascii碼值為65,那么a的十進制ascii碼值為

A、98

B、100

C、89

D、97

【答案】D

【解析】在ASCH碼表中,大、小寫英文字母是分組排序安排在不同位置的,

并且小寫英文字母的碼值比對應的大寫英文字母的碼值大32。所以,當知道A

的ASCII碼值是65后,字符a的碼值為65+32=97o

6、有如下說明:inta[10]=l,2,3,4,5,6,7,8,9,10,*p=a;則數值為9的表達

式是o

A、*p+9

B、*(p+8)

C、*p+=9

D、p+8

【答案】B

【解析】當指針指向數組的首地址時,數組內各元素地址為p+n(數組下標從0

開始到n-1結束),n為數組下標,取數組元素值為*(p+n)。

7、若已定義實參數組inta[3]L4]={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];

【答案】B

8、以下數組定義中錯誤的是o

A、intx[][3]={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

9、若二維數組a有m列,則計算任一元素在數組中位貉的公式為(假

設a[0][0]位于數組的第一個位貉上)..0

A、i*m+j

B、j*m+i

C、

D、

【答案】D

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

main()

(

inta[6],i;

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

a[i]=4*(i-2*(i>3))%5;

printf(M%2dn,aEi]);

)

A、2323

B、1212

C、3232

D,2222

【答案】C

【解析】本題程序的功能是對數組元素賦值,難點是對表達式4*(i-2*(i>

3))%5的分析。

五、字符串/字符串指針(共10題,每小題1分,共10分)

1、以下不能正確進行字符串賦初值的語句是O

A、charstr[5]="good!";

B、charstrL]="good!";

C、char*str="good!";

D、charstr[5]={'g','o','o','d'};

【答案】A

2、在c語言中,以作為字符串結束標志

A、,\n'

B、,,

C、'0'

D、'\0'

【答案】D

3、設有兩個字符串p和q,其中q是p的子串,把q在p中首次出現的位置作為

子串q在p中位置的算法稱為(43)o

A、求子串

B、匹配

C、連接

D、求串長

【答案】B

【解析】本題考查對字符串進行處理的算法。

求子串是在一個主字符串中按一定的規則取出任意個連續的字符得到一個新

串°

匹配是指求一個字符串是另一個字符串的子串,并返回子串首次出現的位

置。

連接是指把一個字符串的內容連接到另一個足夠大的字符串的末尾。

求串長就是統計字符串中有效字符的個數。

4、下列字符串中,不可以用作c標識符的是o

A、y_2006

B、_FEST_H

C、Return

D,switch

【答案】D

【解析】在C中,變量標識符必須是以大小寫字母、下畫線開始,由數字或者

字母下畫線等組成的一個字符串,其中C++關鍵字不能作為標識符,不能包含

-、+、*、/等運算符號。C++變量區分大小寫,所以Retrun不是關鍵字,而是

一個合法變量;swith為關鍵字,所以不能定義為標示符。

5、下列字符串是標識符的是:。

A、_HJ

B、9_student

C、long

D、LINE1

【答案】A

6、以下選項中關于c語言常量的敘述錯誤的是o

A、所謂常量,是指在程序運行過程中,其值不能被改變的量

B、常量分為整型常量、實型常量、字符常量和字符串常量

C、常量可分為數值型常量和非數值常量

D、經常被使用的變量可以定義成常量

【答案】D

7、以下選項中能表示合法常量的是o

A、整數:1,200

B、實數:1.5E2.0

C、字符斜杠:"\"

D、字符串:"\007"

【答案】D

8、以下能將字符串,youareluck!正確讀入的語句組是。

A、chars[80];scanf("%s",s);

B、char*s:scanf("%s",s);

C、chars[80];gets(s);

D、char*s;gets(3);

【答案】C

9、下列選項中c語言中不合法的字符串常量的是o

A,"\121"

B、'y'

C、"\n\n"

D、"ABCD\x6d\

【答案】B

【解析】字符串常量是由雙引號括起來的一串字符,其中的雙引號不可缺少。

由此可知,選項A)、C)、D)都是合法的字符串常量,而選B)是一個字符常量。

10、有以下程序:

#include<string.h>

main()

(

char*p="abcde\0ghjik\0";

printf("%d\n",strlen(p));

)

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

A,12

B、15

C、6

D、5

【答案】D

【解析】字符'\0'為字符串結束標識位。

六、函數/函數指針(共10題,每小題1分,共10分)

1、有以下程序:

voidfun(int*a,inti,intj){

intt;

if(i<j)t=aEi];

a[i]=a[j];

a[j]=t;

fun(a,++i,-j);

)

main(){

inta[]=l,2,3,4,5,6,i;

fun(a,0,5);

for(i=0;i<6;i++)printf("%d;

)

執行后的輸出結果是。

A,654321

B、432156

C、456123

D、123456

【答案】A

【解析】本題考查指針變量作函數形參的問題。指針變量作函數的形參,實現

的是地址傳遞,形參的改變可以影響實參。fun由數的功能是將a所指數組中

的內容逆置。在main函數中調用fun函數后,實參數組s中元素的值變為:

a[0]=6、a[l]=5、a[2]=4、a[3]=3、a[4]=2、a[5]=l。

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

A、chars[3]="abcde";

B、char*s;gets(s);

C、char*s;s="abcde";

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

【答案】C

【解析】字符數組可以使用字符串進行初始化,但數組長度應足夠容納該字符

串,選項A不滿足要求。

gets。函數用于讀取字符串,并將字符串保存到參數代表的空間中,選項B

中,只定義了字符指針,沒有空間存放字符串信息。

選項D定義了長度為5的字符數組,數組名稱代表數組的首地址,使用

scanf()讀取字符串時,參數為數組名即可。

3、已定義以下函數intfun(int*p)

(

return*p;

)

則fun函數返回值足

A、不確定的值

B、一個整數

C、形參p中存放的值

D、形參p的地址值

【答案】D

4、當接受用戶輸入的含有空格的字符串時,應使用函數.

A、gets()

B、getchar()

C、scanf()

D、printf()

【答案】A

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

A、在函數外定義的變量是全局變量

B、全局變量和局部變量不能同名

C、在函數內定義的變量是局部變量

D、函數的形參是局部變量

【答案】B

【解析】在函數外定義的變量是全局變量;在函數內定義的變量是局部變量;函

數的形參是局部變量;若全局變量和局部變量同名,則在該函數內,此全局變量會

被屏蔽,在該函數內訪問的是局部變量,與同名的全局變量不發生任何關系。本

題答案為B選項。

6、下面函數的功能是.0a(sl,s2)charsl[],s2[];

while(s2++=sl++);

A、字符串比較

B、字符串復制

C、字符串鏈接

D、字符串反向

【答案】B

7、c語言函數的隱含存儲類別是o

A、static

B、auto

C、register

D、extern

【答案】D

8、以下程序中函數f的功能是:當flag為1時,進行由小到大排序;

當flag為0時,進行由大到小排序。

voidf(intb[],intn,intflag)

(

inti,j,t;

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

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

if(flag?b[i]>b[j]:b[i]<b[j])

(

t=b[i];

b[i]=b[j];

b[j]=t;

main()

{

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

f(&a[2],5,0);

f(a,5,l);

for(i=0;i<10;i++)printf("%d,",a[i]);

)

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

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

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

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

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

【答案】B

9、函數pi的功能是根據以下近似公式求n值:

(JI*n)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)請填空,完成求口的功能。

#include<math.h>

main()

(

doubles=0.0;

longinti,n;

scanf("%ld",&n);

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

s=(sqrt(6*s));

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

)

A、l/i*i

B、1.0/i*i

C、1.0/(i*i)

D、1.0/(n*n)

【答案】C

10、c語言中函數返回值的類型是由決定的.

A、函數定義時指定的類型

B、retuiri語句中的表達式類型

C、調用該函數時的實參的數據類型

D、形參的數據類型

【答案】A

七、指針(共10題,每小題1分,共10分)

1、每個c程序中都必須有且僅有一個o

A、類

B、預處理命令

C、主函數

D、語句

【答案】C

【解析】每個C程序中都要有且僅有一個主函數,該函數是程序的入口,而語

句、預處理命令和函數及類在程序中都可以有多個。

2、以下能正確定義二維數組的是o

A、inta[][3]={l,2,3,4,5,6};

B、inta[][3]={2*3};

C、inta[][3]={};

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

【答案】A

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

main()

{

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

strcpy(a+1,b+2);

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

}

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

A、al2xyz

B、12yz

C>a2yz

D、bc2yz

【答案】C

4、若函數中有定義語句:intk;則

A、系統將自動給k賦初值0

B、這時k中的值無定義

C、系統將自動給k賦初值7

D、這時k中無任何值

【答案】B

5、對于以下變量定義,正確的賦值是oint*p[3],a[3];

A、p=a

B、*p=a[0]

C>p=&a[0]

D、p[0]=&a[0]

【答案】D

6、有以下程序段:charcl,c2,c3;scanf(H%c%c%c,f,&c1,&c2,&c3);若要給

cl、c2、c3分別輸入字母abe,則以下對輸入形式的描述正確的是o

A、字母ABC之間可以用空格分隔

B、字母ABC之間不能有分隔符

C、字母ABC之間可以用回車符分隔

D、字母ABC之間可以用Tab鍵分隔

【答案】B

【解析】在使用scanf函數時要注意,在用"枇"格式輸入字符時,分隔符(空格

符、制表符(Tab鍵)、回車符)和轉義字符都將作為有效字符進行輸入。題目中

要求以字符形式輸入三個數據,空格、回車符、Tab鍵均會被視為有效字符賦給

對應變量,所以字母ABC之間不能有分隔符,B選項正確。

7、要定義整型數組x,使之包括初值為0的三個元素,下列語句中錯誤的是

A、intx[3]=0,0,0;

B、intx[]=0;

C、staticintx[3]=0;

D、intx[]=

【答案】D

【解析】選項D中整型數組x的第一個元素是NULL不是0,故選D。

8、若有int*pl,*p2,k;不正確的語句是。

A、pl=&k

B、p2=pl

C、*pl=k+12

D、k=pl+p2

【答案】D

9、以下程序段完全正確的是o

A、int*p;scanf("%d",&p);

B、int*p;scanf("%d”,p);

C、intk,*p=&k;scanf("%d",p);

D、intk,*p:;*p=&k;scanf("%d",p);

【答案】C

10、c語言的基本構成單位是:。

A、函數

B、函數和過程

C、超文本過程

D、子程序

【答案】A

八、結構體(共10題,每小題1分,共10分)

1、下面賦值表達式不正確的是.

structstudent

longnum;

charname[20];

}stl,*p=&stl,st2={101,"tom"};

A、stl=st2

B、p->name=st2.name

C、p->num=st2.num

D、*p=st2

【答案】B

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

structst

intn;

char*ch;

?

structsta[3]

{

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

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

A、p++->n

B、p->n++

C、(*.n++

D、++p->n

【答案】D

【解析】根據結構變量的存儲特點,p+1意味著增加地址值為結構體數組a的

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

得到P指向的結構體變量中成員n的值使之加lo因為p指向數組a起始地

址,p->n的值為5,再執行自加1運行,結果為6。

3、有以下程序:

ttinclude<stdio.h>

structs

{

inta,b;

data[2]={10,100,20,200);

main()

structsp=data[l];

printf("%d\n",++(p.a));

)

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

A、10

B、11

C、20

D、21

【答案】D

【解析】聲明data是結構S數組。初始化data[0].a=10;,

data[0].b=100;,data[l].a=20:,data[l].b=200o主函數中

p=data[l];,即p.a=data[l].a;,p.b=data[lLb;?執行語句

printf("%d\n",++(p.a));打印輸出時p.a先增1再打印,即

p.a=data[l].a=20,先增1等于21。

4、設有如下定義:

structsk

(

inta;

floatb;

)

data,*p;

若有p=&data;

則對data中成員a的引用正確的是。

A、(*p),data,a

B、(*p).a

C、p->data.a

D、p.data,a

【答案】B

【解析】P是指向結構體的指針,用指針引用結構體成員有兩種格式:p->成

員、(*p).成員

5、enuma

{

sum=9,mon=-1,tue

)

>

定義了o

A、枚舉變量

B、3個標識符

C、枚舉數據類型

D、整數9和-1

【答案】C

6、有以下定義和語句:

structstudents{

intnum;

charname[20];

charc;

struct{

intgrade1;

intgrade2;

}S;

);

structstudentsw,*pw;

*pw=w;

下列賦值語句不正確的是o

A、num=1002;

B、w.grade1=85;

C、pw->num=1002;

D、w.s.grade2=85;

【答案】B

【解析】本題主要考查的是結構體變量的嵌套定義,也就是說一個結構體變量

也可以是一個結構體。在本題中student這個結構體中包含了結構體s。所以

對結構體變量w中grade1成員的引用是w.s.grade1或w->s->gradelo

7、有以下程序

structstu

(

charnum[10];

floatscore[3];

);

main()

(

structstu

s[3]={{M20021M,90,95,85},{n20022\95,80,75},{H20023M,100,95,90}},*p;

inti;

floatsum=0;

p=s+2;

for(i=0;i<3;i++)sum=sum+p->score[i];

printf(M%6.2f\nH,sum);

)

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

A、250.00

B、250

C、285.00

D、285

【答案】C

8、有以程序

ttinclude<stdio.h>

ttinclude<string.h>

typedefstruct

(

charname[9];

charsex;

floatscore[2];

}stu;

voidf(stua)

(

stub={"zhao",85.0,90.0};

inti;

strcpy(a.name,b.name);

a.sex=b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

)

main()

(

stuc={"qian",'p',95.0,92.0};

f(c);

printf(M%s,%c,%2.Of,%2.0f\nM,c.name,c.sex,c.score[0],c.scoreLl]);

)

程序的運行結果是o

A、Qian,f,95,92

B、Qian,m,85,90

C>Zhao,f,95,92

D>Zhao,m,85,90

【答案】A

9、若有下列說明和語句,則對結構體變量st中成員i的引用方式不正確的是

structstu

{

inti;

intname;

}st,*p;

p=&st;

A、si

B、*i

C、(*.i

D、p->i

【答案】B

【解析】本題主要考查結構指針:p二&st,訪問結構體的成員,可以通過結構變

量訪問,即st.i,也可以用等價的指針形式即(*p).i和p->i。

10、定義共用體的關鍵字是O

A、union

B、enum

C、struct

D、typedef

【答案】A

九、程序題(共10題,每小題1分,共10分)

1、執行語句printf("%u\n",+12345)的輸出結果是。

A、12345

B、0

C、-1

D、非定值

【答案】A

2、要求以下程序的功能是計算:s=

main()

|

intn;

floats;

s=l.0;

for(n=10;n>l;n-)s=s+l/n;

printf("%6.4f\n",s);

程序運行后輸出結果錯誤,導致錯誤結果的程序行是O

A,s=l.0;

B、for(n=10;n>l;n-)

C、s=s+l/n;

D、printf("%6.4f\n",s);

【答案】C

3、下列程序的運行結果是。inty=5,x=14;

y=((x=3*y,x+l),xT);

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

A、x=27,y=27

B、x=12,y=13

C、x=15,y=14

D、x=y=27

【答案】C

4、下列程序的輸出結果為o

main()

(

intm=7,n=4;

floata=38.4,b=6.4,x;

x=m/2+n*a/b+l/2;

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

)

A、27.000000

B、27.500000

C、28.000000

D、28.500000

【答案】A

5、設x,y均為int型變量,且x=10,y=3,則printf("%d,%d\n",x-,-y);

語句的輸出結果是______o

A、10,3

B、9,3

C、9,2

D、10,2

【答案】D

【解析】C語言的自減運算符有前置與后置兩種形式。當自減運算符前置時,

變量先自減一后再參與表達式運算;而后置時,變量先參與表達式運算后再自

身減一。

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

#include<stdio.h>

main()

inti,j,k;

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

(

for(j=l;j<=20-3*i;j++)printf("");

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

for(;k>0;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

7、有以下程序

#include<stdio.h>

main()

(

chars[]={"012xy");

inti,n=0;

for(i=0;s[i]!=0;i++)if(s[i]>'a'&&s[i]<=lzl)n++;

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

)

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

A、0

B、2

C、3

D、5

【答案】B

8、以下程序運行后的輸出結果是.

#include<stdio.h>

voidmain()

{

inti=10,j=0;

do

(

j=j+l;

while(i>2);

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

)

A、50

B、52

C、51

D、8

【答案】D

9、main()

(

intx=3,i;

for(i=0;i<3;i++)printf(""%d"",f(x));

)

intf(inta)

{

intb=0;

staticc=3;

b++;

C++;

return(a+b+c);

)

執行此程序后屏幕上顯示的結果是。

A、81010

B、7910

C、8911

D、8910

【答案】D

10、根據下面的程序及數據的輸入和輸出形式,程序中輸入語句的正確形式應該

main()

{

charchi,ch2,ch3;

輸入語句

printf("%c%c%c",chi,ch2,ch3);

輸出形式:abc輸入形式:abc

A、scanf(“%c%c%c”,&chl,&ch2,&ch3);

B、scanf("%c,%c,%c”,&chl,&ch2,&ch3);

C、scanf("%c%c%c”,&chl,&ch2,&ch3);

D、scanf(“%c%c”,&chl,&ch2,&ch3);

【答案】A

廣西藝術學院歷年C語言選擇題(二)

考試方式:【閉卷】考試時間:【90分鐘】總分:【100分】

一、理論基礎(共20題,每小題1分,共10分)

1、以下常量中,能夠代表邏輯"真"值的常量是。

A、\0'

B、0

C,'0'

D、NULL

【答案】C

2、在c語言中,以下一組運算符中,優先級最高的運算符是_____o

A、<=

B、=

C、%

D、&&

【答案】C

3、流程圖中判斷框是用()圖形來表示的

A、橢圓

B、矩形

C、菱形

D、平行四邊形

【答案】C

4、若運行下面程序時,給變量a輸入15,則輸出結果是o

A、5

B、25

C、15

D、10

【答案】A

5、char型常量在內存中存放的是o

A、二進制代碼值

B、十進制代碼值

C、十六進制代碼值

D、ASCII代碼值

【答案】D

6、以下條件表達式中能完全等價于條件表達式x的是.

A、(x==0)

B、(x!=0)

C、(x==l)

D、(x!=l)

【答案】B

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

A、0.1

B、0.2

C、0.4

D、0.8

【答案】D

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

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

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

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

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

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

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

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

【答案】A

9、使下列程序段輸出"123,456,78",鍵盤輸入數據,正確的輸入是。

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

D、123,*45678

【答案】C

10、有以下程序段intk=0,a=l,b=2,c=3;k=ac?c:k;執行該程序段后,k的

值是o

A、3

B、2

C、1

D、0

【答案】B

11、下列數據中數值最大的是O

A、(10000)2

B、(17)8

C、(17)10

D、(10)16

【答案】C

12、假設a和b為int型變量,則執行以下語句后b的值為—

a=l;b=10:

do

(

b-=a;a++;

)

while(b―<0)

A、9

B、-2

C、-1

D、8

【答案】D

13、表達式k=l*3?2:0的值是。

A、3

B、2

C、1

D、0

【答案】B

14、若已定義x和y為double類型,則表達式x=l,y=x+3/2的值是

A、1

B、2

C、2)0

D、2)5

【答案】C

15、若有代數式Jyx+loglOy,則正確的c語言表達式是

A、sqrt(fabs(pow(y,x)+log10(y)))

B、sqrt(abs(pow(y,x)+logl0(Y)))

C,sqrt(fabs(pow(x,y)+log10(y)))

D、sqrt(abs(pow(x,y)+log10(y)))

【答案】A

16、若以下變量均是整型,且num=sum=7;

則計算表達式sum=num++,sum++,++num后sum的值為.

A、7

B、8

C、9

D、10

【答案】B

17、在執行inta[][3]={1,2,3,4,5,6};語句后,2口][0]的值是。

A、4

B、1

C、2

D、5

【答案】A

18、設變量m為float類型,變量n為int類型,則以下能實現將m中的數

值保留小數點后兩位,第三位進行四舍五入運算的表達式是O

A、n=m*100+0.5,m=n/100.0

B、m=(m*100+0.5)/100.0

C、n=m/100+0.5,m=n*100.0

D、m=m*100+0.5/100.0

【答案】A

19、定義單精度實型變量的正確的語句是。

A、longf;

B、doublef=15.3;

C、realf=15.3;

D、floatf=15.3;

【答案】D

20、以下選項中正確的語句組是o

A、chars[J;s="BOOK!”;

B、char*s;s={"BOOK!"};

C、chars[10];s="BOOK!”;

D、char*s;s="BOOK!”;

【答案】D

二、控制結構(共10題,每小題1分,共10分)

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

A、對于邏輯表達式:a++||b++,設a的值為1,則求解表達式的值后,b的值

會發生改變

B、對于邏輯表達式:a++&&b++,設a的值為0,則求解表達式的值后,b的值

會發生改變

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

D、關系運算符的結果有三種:0,1,-1

【答案】C

【解析】B選項和A選項中,對于邏輯表達式,其中b的值不會因為表達式的

結果發生改變;D選項中,關系運算符的結果有真和假兩種。因此C選項正確

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

A、其之前最近的if配對

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

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

D、第一個if配對

【答案】B

3、若有定義:floatx=l.5;inta=l,b=3,c=2;則正確的switch語句是

A、switch(x){

case1.0:printf("*\n");

case2.0:printf("**\n");

)

B、switch((int)x);{

case1:printf("*\n");

case2:printf("**\n");

)

C>switch(a+b){

case1:printf("*\n");

case2+1:printf("**\n");

)

D、switch(a+b){

case1:

溫馨提示

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

評論

0/150

提交評論