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

下載本文檔

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

文檔簡介

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

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

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

通過形參指針n傳回所指變量。

例如,輸入一個數(shù):27638496,新的數(shù):為739。請在程序的下劃線

處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(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是通過取模的方式來得到*n的個位數(shù)字,所以應(yīng)填:10。

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

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

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

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

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

注意:不要改動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īng)改為:if(n==0)。

第二處:語句后缺少分號。

KJ*KJ*KJ*

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

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

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

語句僅供參考。

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

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

號中填入你編寫的若干語句。

給定源程序:

#include<stdio.h>

#include<string.h>

longfun(char*p)

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

longx=0;

len=strlen(p);

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

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

elset=l;

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

returnx*t;

)

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

{chars[6];

longn;

printf("Enterastring:\n");

gets(s);

n=fun(s);

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

NONO();

NONO()

{/*本函數(shù)用于打開文件,輸入數(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);

)

解題思路:

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

參考答案:

#include<stdio.h>

#include<string.h>

longfun(char*p)

(

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

longx=0;

len=strlen(p);

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

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

elset=l;

/*以下完成數(shù)字字符串轉(zhuǎn)換為一個數(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ù)用于打開文件,輸入數(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()這個函數(shù)是改卷人用的,與考生沒有什么關(guān)系,

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

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

第02套:

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

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

端屏幕上。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,

使程序得出正確的結(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ù)寫入到文本文件中,再從該文件讀出并顯

示在屏幕上。

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

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

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

KJ*K|>

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

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

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

注意:不要改動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ù)字字符組成一個新的字符串,

程序中是使用變量j

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

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

KJ*KJ*KJ*KJ*

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

按列的

順序依次放到一個字符串中。

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

WWWW

SSSS

HHHH

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

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

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

號中填入

你編寫的若干語句。

給定源程序:

#include<stdio.h>

#defineM3

#defineN4

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

inti,j,n=O;

for(i=0;i<N;i++)/*請?zhí)顚懴鄳?yīng)語句完成其功能*/

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ù)按列存放到一個字符串中。

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

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

參考答案:

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

(

inti,j,n=O;

for(i=0;i<N;i++)/*請?zhí)顚懴鄳?yīng)語句完成其功能*/

(

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

b[n]=sU][i];

n=i*M+j+1;

)

)

b[n]='\0';

)

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

第03套:

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

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

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

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

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出

正確的結(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語言提供的合法的關(guān)鍵字是()【單詞拼寫】

A)swicthB)cherC)CaseD)default

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

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

(3)若有定義和語句:

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

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

A)輸出abedB)輸出a

C)輸出abcduuuuuD)編譯不通過

(4)若有定義和語句:

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)若有以下定義和語句:

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

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

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

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

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

chard-b',c2='e';

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

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

A)2,MB)3,E

C)2,E?D)輸出項與對應(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類型,則以下程序段中內(nèi)循環(huán)體的總的執(zhí)行

次數(shù)是()

for(i=5;i;i-)

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

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

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

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

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

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

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

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

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語句是()

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ù)調(diào)用實參傳給形參的是()

A.數(shù)組的長度B.數(shù)組第一個元素的值

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

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

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

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

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

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

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

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

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語言表達(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è)有說明語句:chara=\72,;則變量a()

A)包含1個字符B)包含2個字符

C)包含3個字符D)說明不合法

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

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

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

A)3B)4C)5D)有語法錯

(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)編譯出錯

(33)對于基類型相同的兩個指針變■之間,不能進(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語言中,函數(shù)的隱含存儲類別是()

A)autoB)staticC)externD)無存儲類別

(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)無確切的值B)形參p中存放的地址值

B)一個臨時存儲單元的地址D)形參p自身的地址值

(38)有如下程序段

inta=14,b=15,x;

charc='A';

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

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

A)trueB)falseC)0D)1

(39)有如下說明

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)假定所有變■均已正確說明,下列程序段運(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)先級最高的運(yùn)算符是()

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

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

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

則對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之后再復(fù)制到串str3之后

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

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

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

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

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

解釋:C函數(shù)可以遞歸調(diào)用,但不允許嵌套定義

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

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

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

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

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

C)在C中,外部變量的隱含類別是自動存儲類別.

D)在C中,函數(shù)形參可以說明為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)錯誤的轉(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語言中,錯誤的常數(shù)是()

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

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

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

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

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

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

二、程序填空題:

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

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

現(xiàn)在請你在下面的函數(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ù)用來在w數(shù)組中插入x,w數(shù)組中的數(shù)已按由小到大順

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

數(shù)仍有序.請?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)用語句為:fun1(&a,&b,&c);它將三個整數(shù)按由

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

請?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é)果分別寫到各題右側(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

盤中):

C:\>typePROC.c

main(intargc.char*argv[])

{while(--argc>0)

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

printf("\n");

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

C:\>PROG2008OLYMPICBEIJING〈回車〉

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

2004年4月二級C語言筆試試題及參考解答

一、選擇題:

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ī)D)只裝備操作系統(tǒng)的計算機(jī)

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

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

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

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

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

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

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

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

C)用鼠標(biāo)拖動窗口的控制按鈕D)用鼠標(biāo)拖動窗口的標(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ī)病毒只感染可執(zhí)行文件B)計算機(jī)病毒只感染文本文件

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

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

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

的描述中錯誤的是()

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

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

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

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

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

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

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

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

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

A)_mainB)IfC)txtD)int

enclude-maxREALk_2

sinturbo3COM_001

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

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

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

inta=0;

doubleb=1.25;

charc='A';

#defined2

則下面語句中錯誤的是()

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

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

結(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個選項中,不能看作一條語句的是()

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語句中能正確為變量a讀

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

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

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

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

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)行時,從鍵盤輸入:01<回車〉,程序執(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)用語句之后,則在調(diào)用之前應(yīng)該對該函數(shù)進(jìn)行說明,

以下選項中錯誤的說明是()

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)用出錯B)8C)9D)7

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

語句是()

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輸入字符串的語句是()

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è)有以下語句

typedefstructS

{intg;charh;}T;

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

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

C)S是struct類型的變量D)T是structS類型的變量

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

}}

在下劃線處應(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、以下程序段中,不能正確賦字符串(編譯時系統(tǒng)會提示錯誤)

的是()

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ù)的命令行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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論