C語(yǔ)言期末考試復(fù)習(xí)題_第1頁(yè)
C語(yǔ)言期末考試復(fù)習(xí)題_第2頁(yè)
C語(yǔ)言期末考試復(fù)習(xí)題_第3頁(yè)
C語(yǔ)言期末考試復(fù)習(xí)題_第4頁(yè)
C語(yǔ)言期末考試復(fù)習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語(yǔ)言期末考試復(fù)習(xí)題

給定程序中,函數(shù)fun的功能是:將形參n所指變量中,各位上為偶數(shù)

的數(shù)去除,剩余的數(shù)按原來(lái)從高位到低位的順序組成一個(gè)新的數(shù),并

通過(guò)形參指針n傳回所指變量。

例如,輸入一個(gè)數(shù):27638496,新的數(shù):為739。請(qǐng)?jiān)诔绦虻南聞澗€(xiàn)

處填入正確的內(nèi)容并把下劃線(xiàn)刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<stdio.h>

voidfun(unsignedlong*n)

{unsignedlongx=0,i;intt;

i=l;

while(*n)

{t=*n%—1—;

if(t%2!=_2_)

{x=x+t*i;i=i*10;}

*n=*n/10;

)

*n=3

main()

{unsignedlongn=-l;

while(n>99999999lln<0)

{printf("Pleaseinput(0<n<100000000):");scanf("%ld",&n);}

fun(&n);

printf("\nTheresultis:%ld\n",n);

)

解題思路:

第一處:t是通過(guò)取模的方式來(lái)得到*n的個(gè)位數(shù)字,所以應(yīng)填:10。

第二處:判斷是否是奇數(shù),所以應(yīng)填:0o

第三處:最后通形參n來(lái)返回新數(shù)x,所以應(yīng)填:xo

給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算n!。

例如,給n輸入5,則輸出120.000000。

請(qǐng)改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<stdio.h>

doublefun(intn)

{doubleresult=1.0;

ifn==0

return1.0;

while(n>1&&n<170)

result*=n—

returnresult;

)

main()

{intn;

printf("InputN:");

scanf("%d",&n);

printf("\n\n%d!=%If\n\n",n,fun(n));

)

解題思路:

第一處:條件語(yǔ)句書(shū)寫(xiě)格式錯(cuò)誤,應(yīng)改為:if(n==0)。

第二處:語(yǔ)句后缺少分號(hào)。

KJ*KJ*KJ*

請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整

數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸

入字符串"-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234o函數(shù)fun中給出的

語(yǔ)句僅供參考。

注意:部分源程序存在文件PROG1.C文件中。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括

號(hào)中填入你編寫(xiě)的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

#include<string.h>

longfun(char*p)

{inti,len,t;/*len為串長(zhǎng),t為正負(fù)標(biāo)識(shí)*/

longx=0;

len=strlen(p);

if(p[O]==--')

{t=-l;len--;p++;}

elset=l;

/*以下完成數(shù)字字符串轉(zhuǎn)換為一個(gè)數(shù)字*/

returnx*t;

)

main()/*主函數(shù)*/

{chars[6];

longn;

printf("Enterastring:\n");

gets(s);

n=fun(s);

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

NONO();

NONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文

件。*/

FILE*fp,*wf;

inti;

chars[20];

longn;

fp=fopen("c:\\test\\in.dat","r");

wf=fopen("c:\\test\\out.dat","w");

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

fscanf(fp,"%s",s);

n=fun(s);

fprintf(wf,"%ld\n",n);

)

fclose(fp);

fclose(wf);

)

解題思路:

本題是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)。

參考答案:

#include<stdio.h>

#include<string.h>

longfun(char*p)

(

inti,len,t;/*len為串長(zhǎng),t為正負(fù)標(biāo)識(shí)*/

longx=0;

len=strlen(p);

if(p[O]==--')

{t=-l;len--;p++;}

elset=l;

/*以下完成數(shù)字字符串轉(zhuǎn)換為一個(gè)數(shù)字*/

while(*p)x=x*10-48+(*p++);

returnx*t;

)

main。/*主函數(shù)*/

{chars[6];

longn;

printf("Enterastring:\n");

gets(s);

n=fun(s);

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

NONO();

)

NONO()

{/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文

件。*/

FILE*fp,*wf;

inti;

chars[20];

longn;

fp=fopen("c:\\test\\in.dat","r");

wf=fopen("c:\\test\\out.dat","w");

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

fscanf(fp,"%s",s);

n=fun(s);

fprintf(wf,"%ld\n",n);

)

fclose(fp);

fclose(wf);

)

注意:由于NONO()這個(gè)函數(shù)是改卷人用的,與考生沒(méi)有什么關(guān)系,

故下面從第2套試題開(kāi)始均省略NONO()

※※※※※※※※※※※※※※※※※※※※※※※※※

第02套:

給定程序中,函數(shù)fun的功能是將形參給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫(xiě)

到文本文件中,再用字符方式從此文本文件中逐個(gè)讀入并顯示在終

端屏幕上。請(qǐng)?jiān)诔绦虻南聞澗€(xiàn)處填入正確的內(nèi)容并把下劃線(xiàn)刪除,

使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<stdio.h>

voidfun(char*s,inta,doublef)

(

_1—fp;

charch;

fp=fopen("filel.txt","w");

fprintf(fp,"%s%d%f\n",s,a,f);

fclose(fp);

fp=fopen("filel.txt","r");

printf("\nTheresult:\n\n");

ch=fgetc(fp);

while(!feof(_2_)){

putchar(—3一);ch=fgetc(fp);}

putchar('\n');

fclose(fp);

)

main()

{chara[10]="Hello!";intb=12345;

doublec=98.76;

fun(a,b,c);

)

解題思路:

本題是考察先把給定的數(shù)據(jù)寫(xiě)入到文本文件中,再?gòu)脑撐募x出并顯

示在屏幕上。

第一處:定義文本文件類(lèi)型變量,所以應(yīng)填:FILE*。

第二處:判斷文件是否結(jié)束,所以應(yīng)填:fp。

第三處:顯示讀出的字符,所以應(yīng)填:Cho

KJ*K|>

給定程序MODILC中函數(shù)fun的功能是:依次取出字符串中所有數(shù)字

字符,形成新的字符串,并取代原字符串。

請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<stdio.h>

voidfun(char*s)

{

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

if(s[i]>='O'&&s[i]<='9')

s[j]=s[i];

s[j]="\O";

)

main()

{charitem[80];

printf("\nEnterastring:");gets(item);

printf("\n\nThestringis:\"%s\"\n",item);

fun(item);

printf("\n\nThestringofchangingis:\"%s\"\n",item);

)

解題思路:

第一處:要求是取出原字符串中所有數(shù)字字符組成一個(gè)新的字符串,

程序中是使用變量j

來(lái)控制新字符串的位置,所以應(yīng)改為:s[j++]=s[i];。

第二處:置新字符串的結(jié)束符,所以應(yīng)改為:s[j]='O;

KJ*KJ*KJ*KJ*

請(qǐng)編寫(xiě)函數(shù)fun,函數(shù)的功能是:將M行N列的二維數(shù)組中的字符數(shù)據(jù),

按列的

順序依次放到一個(gè)字符串中。

例如,二維數(shù)組中的數(shù)據(jù)為:

WWWW

SSSS

HHHH

則字符串中的內(nèi)容應(yīng)是:WSHWSHWSH。

注意:部分源程序在文件PROG1.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括

號(hào)中填入

你編寫(xiě)的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

#defineM3

#defineN4

voidfun(chars[][N],char*b)

inti,j,n=O;

for(i=0;i<N;i++)/*請(qǐng)?zhí)顚?xiě)相應(yīng)語(yǔ)句完成其功能*/

b[n]='\O';

)

main()

{char

a[lOO],w[M][N]={{'W'/W'/W'/W},{'S','S','S','S'},{}};

inti,j;

printf("Thematrix:\n");

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

{for(j=0;j<N;j++)printf("%3c",w[i][j]);

printf("\n");

)

fun(w,a);

printf("TheAstring:\n");puts(a);

printf("\n\n");

NONO();

)

解題思路:

本題是把二維數(shù)組中的字符數(shù)據(jù)按列存放到一個(gè)字符串中。

1.計(jì)算存放到一維數(shù)組中的位置。

2.取出二維數(shù)組中的字符存放到一維數(shù)組(已計(jì)算出的位置)中。

參考答案:

voidfun(chars[][N],char*b)

(

inti,j,n=O;

for(i=0;i<N;i++)/*請(qǐng)?zhí)顚?xiě)相應(yīng)語(yǔ)句完成其功能*/

(

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

b[n]=sU][i];

n=i*M+j+1;

)

)

b[n]='\0';

)

※※※※※※※※※※※※※※※※※※※※※※※※※

第03套:

程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和3門(mén)課的

成績(jī)。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能

是重寫(xiě)形參filename所指文件中最后一個(gè)學(xué)生的數(shù)據(jù),即用新的學(xué)生

數(shù)據(jù)覆蓋該學(xué)生原來(lái)的數(shù)據(jù),其它學(xué)生的數(shù)據(jù)不變。

請(qǐng)?jiān)诔绦虻南聞澗€(xiàn)處填入正確的內(nèi)容并把下劃線(xiàn)刪除,使程序得出

正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<stdio.h>

#defineN5

typedefstructstudent{

longsno;

charname[10];

floatscore[3];

}STU;

voidfun(char*filename,STUn)

{FILE*fp;

fp=fopen(_l_,"rb+");

fseek(_2_,-lL*sizeof(STU),SEEK_END);

fwrite(&n,sizeof(STU),1,_3_);

fclose(fp);

)

main()

{STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,

88),

{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87),

{10005,"ZhangSan",95,80,88});

STUn={10006,"ZhaoSi",55,70,68},ss[N];

inti,j;FILE*fp;

fp=fopen("student.dat","wb");

fwrite(t,sizeof(STU),N,fp);

fclose(fp);

fp=fopen("student.dat","rb");

fread(ss,sizeof(STU),N,fp);

fclose(fp);

printf("\nTheoriginaldata:\n\n");

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

{printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);

(1)在C語(yǔ)言提供的合法的關(guān)鍵字是()【單詞拼寫(xiě)】

A)swicthB)cherC)CaseD)default

(2)在C語(yǔ)言中,合法的字符常,是()

A),\084'【不能有八】B)H43'C)'ab'D)30"

(3)若有定義和語(yǔ)句:

chars[10]:s="abcd";printf("%s\n",s);

則結(jié)果是(以下u代表空格)()

A)輸出abedB)輸出a

C)輸出abcduuuuuD)編譯不通過(guò)

(4)若有定義和語(yǔ)句:

int**pp,*p,a=10,b=20;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);

則輸出結(jié)果是:()

A)10,20B)10,10C)20,10D)20,20

(5)若有以下定義和語(yǔ)句:

intu=010,v=0x10,w=10;【這樣確實(shí)可以,'\010'效果一樣】

printf("%d,%d,%d\n",u,v,w);

則輸出結(jié)果是()

A)8,16,10B)10,10,10C)8,8,10D)8,10,10

(6)若有以下定義和語(yǔ)句

chard-b',c2='e';

printf("%d,%c\n",c2-c1,c2-'a'+"A");

則輸出結(jié)果是()

A)2,MB)3,E

C)2,E?D)輸出項(xiàng)與對(duì)應(yīng)的格式控制不一致,輸出結(jié)果不確定

(7)若有以下定義:

chars[20]="programming",*ps=s;

則不能代表字符o的表達(dá)式是()【Ps是一維地址】

A)ps+2B)s[2]C)ps[2]D)ps+=2,*ps

(8)若i,j已定義為int類(lèi)型,則以下程序段中內(nèi)循環(huán)體的總的執(zhí)行

次數(shù)是()

for(i=5;i;i-)

for(j=0;j<4;j++){...}

A)20B)25C)24D)30

(9)若有以下定義和語(yǔ)句:

char*s1=,,12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結(jié)果是()

A)4B)5C)9D)10

(10)若有以下定義和語(yǔ)句:

inta[10]={1,2,3,4,5,67,8,9,10},*p=a;

則不能表示a數(shù)組元素的表達(dá)式是()

A)*pB)a[10]C)*aD)a[p-a]

(11)下面程序的輸出是()

main()

{char*s="121";

intk=0,a=0,b=0;

do

{k++;

if(k%2==0){a=a+s[k]-'0';continue;}

b=b+s[k]-'0,;a=a+s[k]-'O';

}

while(s[k+1]);

printf("k=%da=%db=%d\n",k,a,b);

A)k=3a=2b=3B)k=3a=3b=2

C)k=2a=3b=2D)k=2a=2b=3

(12)下面程序的輸出是()

main()

{unsigneda=32768;

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

}運(yùn)行結(jié)果:-32768

A)a=-32768B)a=32767

C)a=-32767D)a=-1

(13)若有以下定義:

floatx;inta,b;則正確的switch語(yǔ)句是()

A)switch(x)B)switch(x)

{easel.0:printf("*\n");{easel,2:printf("*\n");

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

))

C)switch(a+b)D)switch(a+b);

{case1:printf("\n");{case1:printf("*\n");

case1+2:printf("**\n");case2:printf("**\n");

})

(14)以下程序輸出的結(jié)果是()

main()

,,,,',

{charw[][10]={ABCD","EFGH",IJKL","MNOP})k;

for(k=1;k<3;k++)

printf("%s\n",&w[k][k]);

)

A)ABCDB)ABCD

FGHEFG

KLIJ

M

C)EFGD)FGH

JKKL

O

(15)若數(shù)組名作實(shí)參而指針變■作形參,函數(shù)調(diào)用實(shí)參傳給形參的是()

A.數(shù)組的長(zhǎng)度B.數(shù)組第一個(gè)元素的值

C.數(shù)組所有元素的值D.數(shù)組第一個(gè)元素的地址

(16)若變■已正確定義并賦值,下面符合C語(yǔ)言語(yǔ)法的表達(dá)式是()

A)a:=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b

(17)C語(yǔ)言中運(yùn)算對(duì)象必須是整型的運(yùn)算符是()

A)%=B)/C)=D)<=

(18)若已定義x和y為double類(lèi)型,則表達(dá)式x=1,y=x+3/2的值是()

A)1B)2C)2.0D)2.5

(19)若變量a、i已正確定義,且i已正確賦值,合法的語(yǔ)句是()

A)a==1B)++i;C)a=a++=5;D)a=int(i);

(20)若有以下程序段,

intc1=1,c2=2,c3;

c3=1.0/c2*c1;

則執(zhí)行后,c3中的值是()

A)0B)0.5C)1D)2

(21)有如下程序

main()

{inty=3,x=3,z=1;

printf(u%d%d\n,,,(++x,y++),z+2);

}

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

A)34B)42C)43D)33

(22)能正確表示邏輯關(guān)系:“aW=10或awo”的c語(yǔ)言表達(dá)式是()

A)a>=10ora<=0B)a>=0|a<=10

C)a>=10&&a<=0D)a>=10||a<=0

(23)有如下程序

main()

{intx=1,a=0,b=0;

switch(x)

{case0:b++;

case1:a++;

case2:a++;b++;}

printf(<ta=%d,b=%d\n,,,a,b);}

該程序的輸出結(jié)果是()

A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2

(24)有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf(,,%f\n,,,y);}

該程序的輸出結(jié)果是()

A)0.000000B)0.250000C)0.500000D)1.000000

(26)有如下程序

main()

{inti,sum;

for(i=1;i<=3;sum++)sum+=i;

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

}

該程序的執(zhí)行結(jié)果是()

A)6B)3C)死循環(huán)D)0

(27)有如下程序

main()

{intx=23;

do

{printf(<t%d,,,x-);}while(!x);}

該程序的執(zhí)行結(jié)果是()

A)321B)23C)不輸出任何內(nèi)容D)陷入死循環(huán)

(28)有如下程序

main()

{intn=9;

while(n>6){n-;printf(u%d,,,n);}}

該程序段的輸出結(jié)果是()

A)987B)876C)8765D)9876

(29)設(shè)有說(shuō)明語(yǔ)句:chara=\72,;則變量a()

A)包含1個(gè)字符B)包含2個(gè)字符

C)包含3個(gè)字符D)說(shuō)明不合法

(30)有如下函數(shù)調(diào)用語(yǔ)句

func(rec1,rec2+rec3,(rec4,rec5);

該函數(shù)調(diào)用語(yǔ)句中,含有的實(shí)參個(gè)數(shù)是()

A)3B)4C)5D)有語(yǔ)法錯(cuò)

(31)有如下程序

intfunc(inta,intb)

{return(a+b);}

main()

{intx=2,y=5,z=8,r;

r=func(func(x,y),z);

printf(<t%\d\n,,,r);}

該程序的輸出的結(jié)果是()

A)12B)13C)14D)15

(32)有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

執(zhí)行該程序段后,a的值為()

A)12B)11C)10D)編譯出錯(cuò)

(33)對(duì)于基類(lèi)型相同的兩個(gè)指針變■之間,不能進(jìn)行的運(yùn)算是()

A)<B)=C)+D)-

(34)有如下程序

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn(2);

)

main()

u,,

{printf(%d\nJfib(3));}

該程序的輸出結(jié)果是()

A)2B)4C)6D)8

(35)在C語(yǔ)言中,函數(shù)的隱含存儲(chǔ)類(lèi)別是()

A)autoB)staticC)externD)無(wú)存儲(chǔ)類(lèi)別

(36)有如下程序

#defineN2

#defineMN+1

#defineNUM2*M+1

main()

{inti;

for(i=1;i<=NUM;i++)printf(,*%d\n,,,i);

}

該程序中的for循環(huán)執(zhí)行的次數(shù)是()

A)5B)6C)7D)8

(37)有以下函數(shù)

charfun(char*p)

{returnp;}

該函數(shù)的返回值是()

A)無(wú)確切的值B)形參p中存放的地址值

B)一個(gè)臨時(shí)存儲(chǔ)單元的地址D)形參p自身的地址值

(38)有如下程序段

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<,B,);

執(zhí)行該程序段后,x的值為()

A)trueB)falseC)0D)1

(39)有如下說(shuō)明

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

則數(shù)值為9的表達(dá)式是()

A)*p+9B)*(p+8)C)*p+=9D)p+8

(40)若有以下的定義:intt[3][2];能正確表示t數(shù)組元素地址的表達(dá)式是()

A)&t[3][2]B)t[3]C)t[1]D)t[2]

(41)有如下程序

main()

{charch[2][5]={“6937”,“8254”},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i]U]>,\0,;j+=2)

s=10*s+p[i][j]-,0,;

printf(,t%d\n,,,s);}

該程序的輸出結(jié)果是()

A)69825B)63825C)6385D)693825

(42)若有以下的定義:

inta[]={1,2,3,4,5,6,7,88,9,10},*p=a;

則值為3的表式是()

A)p+=2,*(p++)B)p+=2,*++p

C)p+=3,*p++D)p+=2,++*p

(43)假定所有變■均已正確說(shuō)明,下列程序段運(yùn)行后x的值是()

a=b=c=0;x=35;

if(!a)x-;

elseif(b);if(c)x=3;elsex=4;

A)34B)4C)35D)3

(44)在以下一組運(yùn)算符中,優(yōu)先級(jí)最高的運(yùn)算符是()

A)<=B)=C)%D)&&

(45)若有以下定義和語(yǔ)句:

intw[2][3],(*pw)[3];pw=w;

則對(duì)W數(shù)組元素非法引用是()

A)*(w[0]+2)=*w[0][2]B)*(pw+1)[2]

C)pw[O][O]=*w[0][0]D)*(pw[1]+2)=*w[1][2]

(46)若有以下程序片段:

charstr[]="ab\n\012\\\"";

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

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

A)3B)4C)6D)12

(47)函數(shù)調(diào)用strcat(strcpy(str1,st⑵,str3)的功能是()

A)將串str1復(fù)制到串str2中后再連接到串str3之后

B)將串str1連接到串str2之后再?gòu)?fù)制到串str3之后

C)將串str2復(fù)制到串str1中后再將串str3連接到串str1之后

D)將串str2連接到串str1之后再將串str1復(fù)制到串str3中

(48)以下對(duì)C語(yǔ)言函數(shù)的有關(guān)描述中,正確的是()

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

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

解釋?zhuān)篊函數(shù)可以遞歸調(diào)用,但不允許嵌套定義

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

D)C程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個(gè)源程序文件中

(49)以下敘述中不正確的是()

A)在C中,函數(shù)中的自動(dòng)變■可以賦初值,每調(diào)用一次,賦一次初值.

B)在C中,調(diào)用函數(shù)時(shí),實(shí)在參數(shù)和對(duì)應(yīng)形參在類(lèi)型上只需賦值兼容.

C)在C中,外部變量的隱含類(lèi)別是自動(dòng)存儲(chǔ)類(lèi)別.

D)在C中,函數(shù)形參可以說(shuō)明為register變量.

(50)以下程序的輸出結(jié)果是()

#definesub1(chara,charb){charc;c=a;a=b;b=c;}

#definesub2(char*a,charb){charc;c=*a;*a=b;b=c;}

#definesub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}

main()

{chara,b;

a='A,;b='B';sub3(&a,&b);putchar(a);putchar(b);

a='A';b='B';sub2(&a,b);putchar(a);putchar(b);

a-A';b='B';sub1(a,b);putchar(a);putchar(b);

)

A)BABBABB)ABBBBA

C)BABABAD)BAABBA

(51)錯(cuò)誤的轉(zhuǎn)義字符是()

A),\091'B),WC)'\0'D)V

(52)設(shè)inta,b,c;執(zhí)行表達(dá)式a=b=1,a++,b+1,c=a+b--后,a,b

和c的值分別是()

A)2,1,2B)2,0,3C)2,2,3D)2,1,3

(53)在C語(yǔ)言中,錯(cuò)誤的常數(shù)是()

A)1E+0.0B)5C)OxafD)OL

(54)設(shè)intk;則語(yǔ)句for(k=0;k=1;k++);和

語(yǔ)句for(k=0;k==1;k++);執(zhí)行的次數(shù)分別是()

A)無(wú)限和0B)0和無(wú)限C)都是無(wú)限D(zhuǎn))都是0

(55)某文件中定義的靜態(tài)全局變■(或稱(chēng)靜態(tài)外部變量)其作用域是()

A)只限某個(gè)函數(shù)B)本文件C)跨文件D)不限制作用域

二、程序填空題:

(10)函數(shù)pi的功能是根據(jù)以下近似公式求IT值:

(K*TT)/6=1+1/(2*2)+1/(3*3)+...+1/(n*n)

現(xiàn)在請(qǐng)你在下面的函數(shù)中填空,完成求TT的功能。

#include"math.h”

doublepi(longn)

{doubles=0.0;longi;

for(i=1:i〈=n:i++)s=s+1.0/(i*i);

return(sqrt(6*s));}

(14)以下函數(shù)用來(lái)在w數(shù)組中插入x,w數(shù)組中的數(shù)已按由小到大順

序存放,n所指存儲(chǔ)單元中存放數(shù)組中數(shù)據(jù)的個(gè)數(shù).插入后數(shù)組中的

數(shù)仍有序.請(qǐng)?zhí)羁?

voidfun(int*w,intx,int*n)

{inti,p;

p=0;

w[*n]=x;

while(x>w[p])p++;

for(i=*n;i>p;i--)w[i]=w[i-1];

w[p]=x;

++*n;

)

(15)fun1函數(shù)的調(diào)用語(yǔ)句為:fun1(&a,&b,&c);它將三個(gè)整數(shù)按由

大到小的順序調(diào)整后依次放入a,b,c三個(gè)變■中,a中放最大數(shù)。

請(qǐng)?zhí)羁?

voidfun2(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

)

voidfun1(int*pa,int*pb,int*pc)

{if(*pc>*pb)fun2(pc,Pb_);

if(*pa<*pc)fun2(pa,pc_);

if(*pa<*pb)fun2(pa,pb一);

16.任意輸入三條邊(a,b,c)后,若能構(gòu)成三角形且為等腰、等邊和直

角,則分別輸出DY、DB和ZJ,若不能構(gòu)成三角形則輸出NOo

main()

{floata,b,c,a2,b2,c2;

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

,

printf("%5.1f,%5.1f1%5.1f)a,b,c);

if(a+b>c&&b+c>a&&a+c>b)

{if(a==b||a==c||b==c)printf("DY");

if(a==b&&b==c)printf("DB");

a2=a*a;b2=b*b;c2=c*c;

if(a2+b2==c2||a2+c2==b2||b2+c2==a2)printf("ZJ");

printf("\n");}

elseprintf("NO\n");

)

17.輸出下列圖形。

123456789

23456789

3456789

456789

56789

6789

789

89

9

main()

{inti,j;

for(i=1;i<=9;i++)

{for(j=i;j<=9;j++)printf("%2d",j);

三、程序分析題

閱讀下列程序,將輸出結(jié)果分別寫(xiě)到各題右側(cè)的空白處。

16.main()

{inta=3,b=9,c=2;

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

程序運(yùn)行結(jié)果:*9士-2

17.voidchange(int*x,inty)

{intt;

t=*x;*x=y;y=t;}

main()

{inta=3,b=5;

change(&a,b);

,,

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

程序運(yùn)行結(jié)果:a=5,b=5

18.main()

{intj;

for(j=4;j>=2;j--)

switch(j)

{case0:printf(,,%4s",',ABC");

case1:printf("%4s","DEF");

',

case2:printf("%4s"I"GHI);break;

case3:printf("%4s","JKL");

default:printf("%4s","MN0");

)

printf("\n");

}程序運(yùn)行結(jié)果:一MNOiJKLMVINO-GHI

19.main()

{staticintj,a[6]={1,2};

for(j=3;j<6;j++)

aO]=a[i/2]+aD%3]-aO-2];

for(j=O;j<6;j++)

printf("%5d",aO];;

printf("\n");}

程序is行結(jié)果:—一一1一一-2一一一一0一14^^1一一一一2一一一

20.inta=10;

intf(inta)

{intb=0;staticintc=3;

a++;++c;++b;

returna+b+c;}

main()

{inti;

for(i=0;i<2;i++)print("%5d",f(a));

printf("\n");

)

程序運(yùn)行結(jié)果:一一一16*77

21.#defineN2

#defineMN+1

#defineNUM2*M+1

intfib(intn)

(

returnn<3?2:fib(n-1)+fib(n-2);

)

main()

(

printf("%5d%5d\n",NUM,fib(5));

)

程序運(yùn)行結(jié)果:-6一一一10

22.假設(shè)在DOS提示符下顯示源程序如下(PROG.exe程序也在C

盤(pán)中):

C:\>typePROC.c

main(intargc.char*argv[])

{while(--argc>0)

printf("%s",argv[argc]);

printf("\n");

寫(xiě)出執(zhí)行下列命令后的輸出結(jié)果

C:\>PROG2008OLYMPICBEIJING〈回車(chē)〉

程序運(yùn)行結(jié)果:BEIJINGOLYMPIC2008

2004年4月二級(jí)C語(yǔ)言筆試試題及參考解答

一、選擇題:

1、1MB等于()

A)1000字節(jié)B)1024字節(jié)

C)1000*1000字節(jié)D)1024*1024字節(jié)

2、與十六進(jìn)制數(shù)200等值的十進(jìn)制數(shù)為()

A)256B)512C)1024D)2048

3、所謂“裸機(jī)”是指()

A)單片機(jī)B)單板機(jī)

C)不裝備任何軟件的計(jì)算機(jī)D)只裝備操作系統(tǒng)的計(jì)算機(jī)

4、能將高級(jí)語(yǔ)言編寫(xiě)的源程序轉(zhuǎn)換為目標(biāo)程序的是()

A)鏈接程序B)解釋程序C)編譯程序D)編輯程序

5、在64位計(jì)算機(jī)中,一個(gè)字長(zhǎng)所占字節(jié)數(shù)為()

A)64B)8C)4D)1

6、在Windows環(huán)境下,當(dāng)一個(gè)應(yīng)用程序窗口被最小化后,該應(yīng)用程序()

A)繼續(xù)在后臺(tái)運(yùn)行B)繼續(xù)在前臺(tái)運(yùn)行C)終止運(yùn)行D)暫停運(yùn)行

7、在Windows環(huán)境下,能實(shí)現(xiàn)窗口移動(dòng)的操作是()

A)用鼠標(biāo)拖動(dòng)窗口中的任何部位B)用鼠標(biāo)拖動(dòng)窗口的邊框

C)用鼠標(biāo)拖動(dòng)窗口的控制按鈕D)用鼠標(biāo)拖動(dòng)窗口的標(biāo)題欄

8、在Windows環(huán)境下,PrintScreen鍵的作用是()

A)打印當(dāng)前窗口的內(nèi)容B)打印屏幕內(nèi)容

C)復(fù)制屏幕到剪貼板D)復(fù)制當(dāng)前窗口到剪貼板

9^Internet的通信協(xié)議是()

A)TCP/IPB)BBSC)WWWD)FTP

10、下列敘述中正確的是()

A)計(jì)算機(jī)病毒只感染可執(zhí)行文件B)計(jì)算機(jī)病毒只感染文本文件

C)計(jì)算機(jī)病毒只能通過(guò)軟件復(fù)制的方式進(jìn)行傳播

D)計(jì)算機(jī)病毒可以通過(guò)網(wǎng)絡(luò)或讀寫(xiě)磁盤(pán)方式進(jìn)行傳播

11、一個(gè)算法應(yīng)該具有“確定性”等5個(gè)特性,下面對(duì)另外4個(gè)特性

的描述中錯(cuò)誤的是()

A)有零個(gè)或多個(gè)輸入B)有零個(gè)或多個(gè)輸出C)有窮性D)可行性

12、以下敘述中正確的是()

A)C語(yǔ)言的源程序不必通過(guò)編譯就可以直接運(yùn)行

B)C語(yǔ)言中的每條可執(zhí)行語(yǔ)句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令

C)C源程序經(jīng)編譯形成的二進(jìn)制代碼可以直接運(yùn)行

D)C語(yǔ)言中的函數(shù)不可以單獨(dú)進(jìn)行編譯

13、以下符合C語(yǔ)言語(yǔ)法的實(shí)型常量是()

A)1.2E0.5B)3.14.159EC).5E-3D)E15

14、以下4組用戶(hù)定義標(biāo)識(shí)符中,全部合法的一組是。

A)_mainB)IfC)txtD)int

enclude-maxREALk_2

sinturbo3COM_001

15、若以下選項(xiàng)中的變量已正確定義,則正確而賦值語(yǔ)句是()

A)x1=26.8%3B)1+2=x2C)x3=0x12D)x4=1+2=3;

16、設(shè)有以下定義

inta=0;

doubleb=1.25;

charc='A';

#defined2

則下面語(yǔ)句中錯(cuò)誤的是()

A)a++;B)b++C)c++;D)d++;

17、設(shè)有定義:floata=2,b=4,h=3;,以下C語(yǔ)言表達(dá)式與代數(shù)式計(jì)算

結(jié)果不相符的是()

A)(a+b)*h/2B)(1/2)*(a+b)*hC)(a+b)*h*1/2D)h/2*(a+b)

18、有以下程序

main()

{intx=102,y=012;

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

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

A)10,01B)002,12C)102,10D)02,10

19、以下4個(gè)選項(xiàng)中,不能看作一條語(yǔ)句的是()

A){;}B)a=0,b=0,c=0;C)if(a>0);D)if(b==0)m=1;n=2;

20、設(shè)有定義:inta,*pa=&a;以下scanf語(yǔ)句中能正確為變量a讀

入數(shù)據(jù)的是()

A)scanf("%d",pa);B)scanf("%d",a);

C)scanf("%d",&pa);D)scanf("%d",*pa);

21、以下程序段中與語(yǔ)句k=a>b?(b>c?1:0):0;功能等價(jià)的是()

A)if((a>b)&&(b>c))k=1;elsek=0;

B)if((a>b)||(b>c))k=1;elsek=0;

C)if(a<=b)k=0;

D)if(a>b)k=1;

elseif(b<=c)k=1;

elseif(b>c)k=1;

elsek=0;

22、有以下程序

main()

{chark;inti;

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

{scanf("%c",&k);

switch(k)

{case'O':printf(',another\n**);

case}r:printf("number\n");

)

})

程序運(yùn)行時(shí),從鍵盤(pán)輸入:01<回車(chē)〉,程序執(zhí)行后的輸出結(jié)果是()

A)anotherB)anotherC)anotherD)number

numbernumbernumbernumber

anothernumber

23、有以下程序

main()

{intx=0,y=5,z=3;

while(z->0&&++x<5)y=y-1;

printf(',%d,%d,%d\n",x,y,z);

}

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

A)3,2,0B)3,2,-1C)4,3,-1D)5,-2,-5

24、有以下程序

main()

{inti,s=0;

for(i=1;i<10;i+=2)s+=i+1;

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

}

程序執(zhí)行后的輸出結(jié)果是。

A)自然數(shù)1?9的累加和B)自然數(shù)1?10的累加和

C)自然數(shù)1?9中的奇數(shù)之和D)自然數(shù)1?10中的偶數(shù)之

25、有以下程序

main()

{inti,n=0;

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

{do

{if(i%3)continue;

n++;

}while(!i);

n++;

)

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

}

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

A)n=5B)n=2C)n=3D)n=4

26、若程序中定義了以下函數(shù)

doublemyadd(doublea,doubleb)

{return(a+b);}

并將其放在調(diào)用語(yǔ)句之后,則在調(diào)用之前應(yīng)該對(duì)該函數(shù)進(jìn)行說(shuō)明,

以下選項(xiàng)中錯(cuò)誤的說(shuō)明是()

A)doublemyadd(doublea,b);

B)doublemyadd(double,double);

C)doublemyadd(doubleb,doublea);

D)doublemyadd(doublex,doubley);

27、有以下程序

charfun(charx,chary)

{if(x<y)returnx;

returny;

}

main()

{inta='9',b='8',c='7';

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

)

程序的執(zhí)行結(jié)果是()

A)函數(shù)調(diào)用出錯(cuò)B)8C)9D)7

28^設(shè)有定義:intn=O,*p=&n,**q=&p;則以下選項(xiàng)中,正確的賦值

語(yǔ)句是()

A)p=1;B)*q=2;C)q=p;D)*p=5;

29、有以下程序

voidf(intv,intw)

{intt;

t=v;v=w;w=t;

}

main()

{intx=1,y=3,z=2;

if(x>y)f(x,y);

elseif(y>z)f(y,z);

elsef(x,z);

printf("%d,%d,%d\nn,x,y,z);

)

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

A)1,2,3B)3,1,2C)1,3,2D)2,3,1

30、有以下程序段

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;

b=p[5];

b中的值是()

A)5B)6C)8D)9

31、有以下程序

main()

{chara[]="abcdefg",b[10]="abcdefg";

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

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

A)77B)88C)810D)1010

32、有以下程序

voidswap1(intc[])

{intt;

t=c[0];c[0]=c[1];c[1]=t;

)

voidswap2(intcO,intc1)

{intt;

t=c0;c0=c1;c1=t;

)

main()

{inta[2]={3,5},b[2]={3,5};

swap1(a);swap2(b[0],b[1]);

printf("%d%d%d%d\n,,,a[0],a[1],b[0],b[1]);

)

其輸出結(jié)果是()

A)5353B)5335C)3535D)3553

33、有以下程序

voidsum(int*a)

{a[0]=a[1];}

main()

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

for(i=2;i>=0;i--)sum(&aa[i]);

printf("%d\n",aa[0]);}

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

A)4B)3C)2D)1

34、有以下程序

intf(intbQ[4])

{inti,j,s=O;

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

(i=j;

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

s+=b[i]U];}

returns;}

main()

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

printf("%d\nH,f(a));}

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

A)12B)11C)18D)16

35、有以下定義

#include<stdio.h>

chara[10],*b=a;

不能給數(shù)組a輸入字符串的語(yǔ)句是()

A)gets(a)B)gets(a[O])C)gets(&a[O]);D)gets(b);

36、有以下程序

main()

,',

{char*p[10]={"abc,"aabdfg","dcdbe",'abbd")"cd"};

printf("%d\n,,,strlen(p[4]));}

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

A)2B)3C)4D)5

37、有以下程序

inta=2;

intf(int*a)

{return(*a)++;}

main()

{ints=0;

{inta=5;

s+=f(&a);}

s+=f(&a);

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

}

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

A)10B)9C)7D)8

38、有以下程序

#definef(x)x*x

main()

{inti;

i=f(4+4)/f(2+2);

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

)

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

A)28B)22C)16D)4

39、設(shè)有以下語(yǔ)句

typedefstructS

{intg;charh;}T;

則下面敘述中正確的是()

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

C)S是struct類(lèi)型的變量D)T是structS類(lèi)型的變量

40、有以下程序

strucSTU{

charname[10];

intnum;

);

voidf1(structSTUc)

{structSTUb={"LiSiGuo",2042);

c=b;}

voidf2(structSTU*c)

{structSTUb={"SunDan",2044);

*c=b;}

main()

{structSTUa={nYangSan",2041},b={"WangYin",2043};

f1(a);f2(&b);

printf("%d%d\n",a.num,b.num);}

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

A)20412044B)20412043020422044D)20422043

41、有以下程序

main()

{unsignedchara,b;

a=4|3;

b=4&3;

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

}

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

A)70B)07C)11D)430

42、下面程序的功能是輸出以下形式的金字塔圖案是:

*

***

*****

*******

main()

{inti,j;

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

{for(j=1;j<=4-i;j++)printfC'");

for(j=1;j<=;j++)printf("*");

printf(n\n");

}}

在下劃線(xiàn)處應(yīng)填入的是()

A)iB)2*i-1C)2*i+1D)i+2

43、有以下程序

voidsort(inta[],intn)

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

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

if(a[i]<aU]){t=a[i];a[i]=aU];aU]=t;}

)

main()

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

sort(aa,10);

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

printf("\n");

}

其輸出結(jié)果是。

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

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

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

的是()

A)chars[10]="abcdefg";B)chart[]="abcdefg",*s=t;

C)chars[10];s="abcdefg";D)chars[10];strcpy(s,"abcdefg");

45、有以下程序

#include<string.h>

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i<argc;i+=2)len+=strlen(argv[i]);

printf("5d'n",len);

)經(jīng)編譯鏈接后生成的可執(zhí)行文件是ex.exe,若運(yùn)行時(shí)輸入以下帶

參數(shù)的命令行exabedefgh3k44

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

A)14B)12C)8D)6

46、有以下程序

voidf(inta[],inti,intj)

{intt;

if(G)

{t=a[i];a[i]=a[j];a[j]=t;

f(a,i+1,j-1);

}

)

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++)printf("%d,"Jaa[i]);printf("\n");

}

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

A)5,4,3,2,1,B)5,2,3,4,1,C)1,2,3,4,5,D)1,2,3,4,5,

47、有以下程序

structSTU

{charname[10];

intnum;

intScore;

};

main()

{structSTUs[5]={{"YangSan",20041,703),

{"LiSiGuo",20042,580},{"wangYin",20043,680

溫馨提示

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

評(píng)論

0/150

提交評(píng)論