




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言期末考試復習題
給定程序中,函數fun的功能是:將形參n所指變量中,各位上為偶數
的數去除,剩余的數按原來從高位到低位的順序組成一個新的數,并
通過形參指針n傳回所指變量。
例如,輸入一個數:27638496,新的數:為739。請在程序的下劃線
處填入正確的內容并把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#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的個位數字,所以應填:10。
第二處:判斷是否是奇數,所以應填:0o
第三處:最后通形參n來返回新數x,所以應填:xo
給定程序MODI1.C中函數fun的功能是:計算n!。
例如,給n輸入5,則輸出120.000000。
請改正程序中的錯誤,使程序能輸出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
給定源程序:
#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));
)
解題思路:
第一處:條件語句書寫格式錯誤,應改為:if(n==0)。
第二處:語句后缺少分號。
KJ*KJ*KJ*
請編寫一個函數fun,它的功能是:將一個數字字符串轉換為一個整
數(不得調用C語言提供的將字符串轉換為整數的函數)。例如,若輸
入字符串"-1234”,則函數把它轉換為整數值-1234o函數fun中給出的
語句僅供參考。
注意:部分源程序存在文件PROG1.C文件中。
請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括
號中填入你編寫的若干語句。
給定源程序:
#include<stdio.h>
#include<string.h>
longfun(char*p)
{inti,len,t;/*len為串長,t為正負標識*/
longx=0;
len=strlen(p);
if(p[O]==--')
{t=-l;len--;p++;}
elset=l;
/*以下完成數字字符串轉換為一個數字*/
returnx*t;
)
main()/*主函數*/
{chars[6];
longn;
printf("Enterastring:\n");
gets(s);
n=fun(s);
printf("%ld\n",n);
NONO();
NONO()
{/*本函數用于打開文件,輸入數據,調用函數,輸出數據,關閉文
件。*/
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);
)
解題思路:
本題是將一個數字字符串轉換為一個整數。
參考答案:
#include<stdio.h>
#include<string.h>
longfun(char*p)
(
inti,len,t;/*len為串長,t為正負標識*/
longx=0;
len=strlen(p);
if(p[O]==--')
{t=-l;len--;p++;}
elset=l;
/*以下完成數字字符串轉換為一個數字*/
while(*p)x=x*10-48+(*p++);
returnx*t;
)
main。/*主函數*/
{chars[6];
longn;
printf("Enterastring:\n");
gets(s);
n=fun(s);
printf("%ld\n",n);
NONO();
)
NONO()
{/*本函數用于打開文件,輸入數據,調用函數,輸出數據,關閉文
件。*/
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()這個函數是改卷人用的,與考生沒有什么關系,
故下面從第2套試題開始均省略NONO()
※※※※※※※※※※※※※※※※※※※※※※※※※
第02套:
給定程序中,函數fun的功能是將形參給定的字符串、整數、浮點數寫
到文本文件中,再用字符方式從此文本文件中逐個讀入并顯示在終
端屏幕上。請在程序的下劃線處填入正確的內容并把下劃線刪除,
使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#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);
)
解題思路:
本題是考察先把給定的數據寫入到文本文件中,再從該文件讀出并顯
示在屏幕上。
第一處:定義文本文件類型變量,所以應填:FILE*。
第二處:判斷文件是否結束,所以應填:fp。
第三處:顯示讀出的字符,所以應填:Cho
KJ*K|>
給定程序MODILC中函數fun的功能是:依次取出字符串中所有數字
字符,形成新的字符串,并取代原字符串。
請改正函數fun中指定部位的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
給定源程序:
#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);
)
解題思路:
第一處:要求是取出原字符串中所有數字字符組成一個新的字符串,
程序中是使用變量j
來控制新字符串的位置,所以應改為:s[j++]=s[i];。
第二處:置新字符串的結束符,所以應改為:s[j]='O;
KJ*KJ*KJ*KJ*
請編寫函數fun,函數的功能是:將M行N列的二維數組中的字符數據,
按列的
順序依次放到一個字符串中。
例如,二維數組中的數據為:
WWWW
SSSS
HHHH
則字符串中的內容應是:WSHWSHWSH。
注意:部分源程序在文件PROG1.C中。
請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括
號中填入
你編寫的若干語句。
給定源程序:
#include<stdio.h>
#defineM3
#defineN4
voidfun(chars[][N],char*b)
inti,j,n=O;
for(i=0;i<N;i++)/*請填寫相應語句完成其功能*/
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();
)
解題思路:
本題是把二維數組中的字符數據按列存放到一個字符串中。
1.計算存放到一維數組中的位置。
2.取出二維數組中的字符存放到一維數組(已計算出的位置)中。
參考答案:
voidfun(chars[][N],char*b)
(
inti,j,n=O;
for(i=0;i<N;i++)/*請填寫相應語句完成其功能*/
(
for(j=0;j<M;j++){
b[n]=sU][i];
n=i*M+j+1;
)
)
b[n]='\0';
)
※※※※※※※※※※※※※※※※※※※※※※※※※
第03套:
程序通過定義學生結構體變量,存儲了學生的學號、姓名和3門課的
成績。所有學生數據均以二進制方式輸出到文件中。函數fun的功能
是重寫形參filename所指文件中最后一個學生的數據,即用新的學生
數據覆蓋該學生原來的數據,其它學生的數據不變。
請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出
正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
給定源程序:
#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語言提供的合法的關鍵字是()【單詞拼寫】
A)swicthB)cherC)CaseD)default
(2)在C語言中,合法的字符常,是()
A),\084'【不能有八】B)H43'C)'ab'D)30"
(3)若有定義和語句:
chars[10]:s="abcd";printf("%s\n",s);
則結果是(以下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);
則輸出結果是:()
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);
則輸出結果是()
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");
則輸出結果是()
A)2,MB)3,E
C)2,E?D)輸出項與對應的格式控制不一致,輸出結果不確定
(7)若有以下定義:
chars[20]="programming",*ps=s;
則不能代表字符o的表達式是()【Ps是一維地址】
A)ps+2B)s[2]C)ps[2]D)ps+=2,*ps
(8)若i,j已定義為int類型,則以下程序段中內循環體的總的執行
次數是()
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)));
則輸出結果是()
A)4B)5C)9D)10
(10)若有以下定義和語句:
inta[10]={1,2,3,4,5,67,8,9,10},*p=a;
則不能表示a數組元素的表達式是()
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);
}運行結果:-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)以下程序輸出的結果是()
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)若數組名作實參而指針變■作形參,函數調用實參傳給形參的是()
A.數組的長度B.數組第一個元素的值
C.數組所有元素的值D.數組第一個元素的地址
(16)若變■已正確定義并賦值,下面符合C語言語法的表達式是()
A)a:=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b
(17)C語言中運算對象必須是整型的運算符是()
A)%=B)/C)=D)<=
(18)若已定義x和y為double類型,則表達式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;
則執行后,c3中的值是()
A)0B)0.5C)1D)2
(21)有如下程序
main()
{inty=3,x=3,z=1;
printf(u%d%d\n,,,(++x,y++),z+2);
}
運行該程序的輸出結果是()
A)34B)42C)43D)33
(22)能正確表示邏輯關系:“aW=10或awo”的c語言表達式是()
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);}
該程序的輸出結果是()
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);}
該程序的輸出結果是()
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);
}
該程序的執行結果是()
A)6B)3C)死循環D)0
(27)有如下程序
main()
{intx=23;
do
{printf(<t%d,,,x-);}while(!x);}
該程序的執行結果是()
A)321B)23C)不輸出任何內容D)陷入死循環
(28)有如下程序
main()
{intn=9;
while(n>6){n-;printf(u%d,,,n);}}
該程序段的輸出結果是()
A)987B)876C)8765D)9876
(29)設有說明語句:chara=\72,;則變量a()
A)包含1個字符B)包含2個字符
C)包含3個字符D)說明不合法
(30)有如下函數調用語句
func(rec1,rec2+rec3,(rec4,rec5);
該函數調用語句中,含有的實參個數是()
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);}
該程序的輸出的結果是()
A)12B)13C)14D)15
(32)有如下程序段
int*p,a=10,b=1;
p=&a;a=*p+b;
執行該程序段后,a的值為()
A)12B)11C)10D)編譯出錯
(33)對于基類型相同的兩個指針變■之間,不能進行的運算是()
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));}
該程序的輸出結果是()
A)2B)4C)6D)8
(35)在C語言中,函數的隱含存儲類別是()
A)autoB)staticC)externD)無存儲類別
(36)有如下程序
#defineN2
#defineMN+1
#defineNUM2*M+1
main()
{inti;
for(i=1;i<=NUM;i++)printf(,*%d\n,,,i);
}
該程序中的for循環執行的次數是()
A)5B)6C)7D)8
(37)有以下函數
charfun(char*p)
{returnp;}
該函數的返回值是()
A)無確切的值B)形參p中存放的地址值
B)一個臨時存儲單元的地址D)形參p自身的地址值
(38)有如下程序段
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<,B,);
執行該程序段后,x的值為()
A)trueB)falseC)0D)1
(39)有如下說明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
則數值為9的表達式是()
A)*p+9B)*(p+8)C)*p+=9D)p+8
(40)若有以下的定義:intt[3][2];能正確表示t數組元素地址的表達式是()
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);}
該程序的輸出結果是()
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)假定所有變■均已正確說明,下列程序段運行后x的值是()
a=b=c=0;x=35;
if(!a)x-;
elseif(b);if(c)x=3;elsex=4;
A)34B)4C)35D)3
(44)在以下一組運算符中,優先級最高的運算符是()
A)<=B)=C)%D)&&
(45)若有以下定義和語句:
intw[2][3],(*pw)[3];pw=w;
則對W數組元素非法引用是()
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));
上面程序片段的輸出結果是()
A)3B)4C)6D)12
(47)函數調用strcat(strcpy(str1,st⑵,str3)的功能是()
A)將串str1復制到串str2中后再連接到串str3之后
B)將串str1連接到串str2之后再復制到串str3之后
C)將串str2復制到串str1中后再將串str3連接到串str1之后
D)將串str2連接到串str1之后再將串str1復制到串str3中
(48)以下對C語言函數的有關描述中,正確的是()
A)在c中,調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B)C函數既可以嵌套定義又可以遞歸調用
解釋:C函數可以遞歸調用,但不允許嵌套定義
C)函數必須有返回值,否則不能使用函數
D)C程序中有調用關系的所有函數必須放在同一個源程序文件中
(49)以下敘述中不正確的是()
A)在C中,函數中的自動變■可以賦初值,每調用一次,賦一次初值.
B)在C中,調用函數時,實在參數和對應形參在類型上只需賦值兼容.
C)在C中,外部變量的隱含類別是自動存儲類別.
D)在C中,函數形參可以說明為register變量.
(50)以下程序的輸出結果是()
#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)錯誤的轉義字符是()
A),\091'B),WC)'\0'D)V
(52)設inta,b,c;執行表達式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語言中,錯誤的常數是()
A)1E+0.0B)5C)OxafD)OL
(54)設intk;則語句for(k=0;k=1;k++);和
語句for(k=0;k==1;k++);執行的次數分別是()
A)無限和0B)0和無限C)都是無限D)都是0
(55)某文件中定義的靜態全局變■(或稱靜態外部變量)其作用域是()
A)只限某個函數B)本文件C)跨文件D)不限制作用域
二、程序填空題:
(10)函數pi的功能是根據以下近似公式求IT值:
(K*TT)/6=1+1/(2*2)+1/(3*3)+...+1/(n*n)
現在請你在下面的函數中填空,完成求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)以下函數用來在w數組中插入x,w數組中的數已按由小到大順
序存放,n所指存儲單元中存放數組中數據的個數.插入后數組中的
數仍有序.請填空.
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函數的調用語句為:fun1(&a,&b,&c);它將三個整數按由
大到小的順序調整后依次放入a,b,c三個變■中,a中放最大數。
請填空.
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)后,若能構成三角形且為等腰、等邊和直
角,則分別輸出DY、DB和ZJ,若不能構成三角形則輸出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);
三、程序分析題
閱讀下列程序,將輸出結果分別寫到各題右側的空白處。
16.main()
{inta=3,b=9,c=2;
if(a)if(b)printf("%5d%5d%5d\n",a,b,c);}
程序運行結果:*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);}
程序運行結果: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");
}程序運行結果:一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行結果:—一一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");
)
程序運行結果:一一一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));
)
程序運行結果:-6一一一10
22.假設在DOS提示符下顯示源程序如下(PROG.exe程序也在C
盤中):
C:\>typePROC.c
main(intargc.char*argv[])
{while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
)
寫出執行下列命令后的輸出結果
C:\>PROG2008OLYMPICBEIJING〈回車〉
程序運行結果:BEIJINGOLYMPIC2008
2004年4月二級C語言筆試試題及參考解答
一、選擇題:
1、1MB等于()
A)1000字節B)1024字節
C)1000*1000字節D)1024*1024字節
2、與十六進制數200等值的十進制數為()
A)256B)512C)1024D)2048
3、所謂“裸機”是指()
A)單片機B)單板機
C)不裝備任何軟件的計算機D)只裝備操作系統的計算機
4、能將高級語言編寫的源程序轉換為目標程序的是()
A)鏈接程序B)解釋程序C)編譯程序D)編輯程序
5、在64位計算機中,一個字長所占字節數為()
A)64B)8C)4D)1
6、在Windows環境下,當一個應用程序窗口被最小化后,該應用程序()
A)繼續在后臺運行B)繼續在前臺運行C)終止運行D)暫停運行
7、在Windows環境下,能實現窗口移動的操作是()
A)用鼠標拖動窗口中的任何部位B)用鼠標拖動窗口的邊框
C)用鼠標拖動窗口的控制按鈕D)用鼠標拖動窗口的標題欄
8、在Windows環境下,PrintScreen鍵的作用是()
A)打印當前窗口的內容B)打印屏幕內容
C)復制屏幕到剪貼板D)復制當前窗口到剪貼板
9^Internet的通信協議是()
A)TCP/IPB)BBSC)WWWD)FTP
10、下列敘述中正確的是()
A)計算機病毒只感染可執行文件B)計算機病毒只感染文本文件
C)計算機病毒只能通過軟件復制的方式進行傳播
D)計算機病毒可以通過網絡或讀寫磁盤方式進行傳播
11、一個算法應該具有“確定性”等5個特性,下面對另外4個特性
的描述中錯誤的是()
A)有零個或多個輸入B)有零個或多個輸出C)有窮性D)可行性
12、以下敘述中正確的是()
A)C語言的源程序不必通過編譯就可以直接運行
B)C語言中的每條可執行語句最終都將被轉換成二進制的機器指令
C)C源程序經編譯形成的二進制代碼可以直接運行
D)C語言中的函數不可以單獨進行編譯
13、以下符合C語言語法的實型常量是()
A)1.2E0.5B)3.14.159EC).5E-3D)E15
14、以下4組用戶定義標識符中,全部合法的一組是。
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、設有以下定義
inta=0;
doubleb=1.25;
charc='A';
#defined2
則下面語句中錯誤的是()
A)a++;B)b++C)c++;D)d++;
17、設有定義:floata=2,b=4,h=3;,以下C語言表達式與代數式計算
結果不相符的是()
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);
)執行后輸出結果是()
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、設有定義:inta,*pa=&a;以下scanf語句中能正確為變量a讀
入數據的是()
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");
)
})
程序運行時,從鍵盤輸入:01<回車〉,程序執行后的輸出結果是()
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);
}
程序執行后的輸出結果是()
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);
}
程序執行后的輸出結果是。
A)自然數1?9的累加和B)自然數1?10的累加和
C)自然數1?9中的奇數之和D)自然數1?10中的偶數之
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);
}
程序執行后的輸出結果是()
A)n=5B)n=2C)n=3D)n=4
26、若程序中定義了以下函數
doublemyadd(doublea,doubleb)
{return(a+b);}
并將其放在調用語句之后,則在調用之前應該對該函數進行說明,
以下選項中錯誤的說明是()
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)));
)
程序的執行結果是()
A)函數調用出錯B)8C)9D)7
28^設有定義: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);
)
執行后輸出結果是()
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));}
執行后輸出結果是()
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]);
)
其輸出結果是()
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]);}
執行后的輸出結果是()
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));}
執行后的輸出結果是()
A)12B)11C)18D)16
35、有以下定義
#include<stdio.h>
chara[10],*b=a;
不能給數組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]));}
執行后輸出結果是()
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);
}
執行后輸出結果是()
A)10B)9C)7D)8
38、有以下程序
#definef(x)x*x
main()
{inti;
i=f(4+4)/f(2+2);
printf("%d\n",i);
)
執行后輸出結果是()
A)28B)22C)16D)4
39、設有以下語句
typedefstructS
{intg;charh;}T;
則下面敘述中正確的是()
A)可用S定義結構體變量B)可以用T定義結構體變量
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);}
執行后的輸出結果是()
A)20412044B)20412043020422044D)20422043
41、有以下程序
main()
{unsignedchara,b;
a=4|3;
b=4&3;
printf("%d%d\n",a,b);
}
執行后輸出結果是()
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");
}}
在下劃線處應填入的是()
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");
}
其輸出結果是。
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、以下程序段中,不能正確賦字符串(編譯時系統會提示錯誤)
的是()
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);
)經編譯鏈接后生成的可執行文件是ex.exe,若運行時輸入以下帶
參數的命令行exabedefgh3k44
執行后輸出結果是()
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");
}
執行后輸出結果是()
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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織祈福活動方案
- 公司歡送會策劃方案
- 公司水療團建活動方案
- 公司聯誼旅游活動方案
- 公司福利回饋活動方案
- 公司端午尋寶活動方案
- 公司結對幫扶活動方案
- 公司禮盒自營活動方案
- 公司消夏晚會策劃方案
- 公司文藝宣傳活動方案
- 2025年 云南省危險化學品經營單位安全管理人員考試練習題附答案
- 高中化學新課標解讀-北師大王磊2024-3-20
- 2022年長沙市燃氣實業有限公司校園招聘筆試試題及答案解析
- 2023年包頭市工會系統招聘考試筆試題庫及答案解析
- 二級評茶技師知識考核試題題庫與答案
- 消防工程擬投入主要施工設備機具表
- T∕CFA 0203141-2021 綠色鑄造設計產品 球墨鑄鐵管水冷金屬型離心機通用技術要求
- 【2020-2021自招】江蘇蘇州實驗中學初升高自主招生數學模擬試卷【4套】【含解析】
- 監理報審表(第六版)-江蘇省建設工程監理現場用表
- 圓通快遞借殼上市案例分析(課堂PPT)
- 配電網工程典型設計10kV電纜分冊
評論
0/150
提交評論