C语言期末考试复习题_第1页
C语言期末考试复习题_第2页
C语言期末考试复习题_第3页
C语言期末考试复习题_第4页
C语言期末考试复习题_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论