版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年小學(xué)學(xué)校教學(xué)工作計(jì)劃范本(三篇)
- 2024年安全生產(chǎn)檢查制度樣本(五篇)
- 2024年室內(nèi)裝修施工合同范文(二篇)
- 2024年小河煤礦水害隱患排查治理制度范文(四篇)
- 2024年市場(chǎng)助理的職責(zé)說(shuō)明(二篇)
- 2024年幼兒園保教部門(mén)工作計(jì)劃范文(二篇)
- 【《債券市場(chǎng)違約對(duì)審計(jì)師的影響探究的國(guó)內(nèi)外文獻(xiàn)綜述》4700字】
- 2024年小學(xué)生學(xué)習(xí)計(jì)劃范例(四篇)
- 2024年小班幼師個(gè)人工作計(jì)劃范本(二篇)
- 教育集團(tuán)教師培養(yǎng)方案
- 一例登革熱合并凝血功能障礙患者的個(gè)案護(hù)理20190-7
- 小兒重癥肺炎課件
- 啤酒終端銷(xiāo)售培訓(xùn)課件
- 門(mén)診病歷書(shū)寫(xiě)模板全
- 汽車(chē)維修公司章程模板
- 環(huán)保、安全、消防、職業(yè)衛(wèi)生專(zhuān)項(xiàng)驗(yàn)收的內(nèi)容
- 二年級(jí)乘除法口算題大全500題(可直接打印)
- 六年級(jí)英語(yǔ)Unit1-How--can--I--get-there教材分析
- 起重吊裝作業(yè)PPT課件
- 新舊生活對(duì)比圖片.PPT
評(píng)論
0/150
提交評(píng)論