02级C语言试题B.docx

上传人:b****1 文档编号:15032806 上传时间:2023-06-29 格式:DOCX 页数:18 大小:22.53KB
下载 相关 举报
02级C语言试题B.docx_第1页
第1页 / 共18页
02级C语言试题B.docx_第2页
第2页 / 共18页
02级C语言试题B.docx_第3页
第3页 / 共18页
02级C语言试题B.docx_第4页
第4页 / 共18页
02级C语言试题B.docx_第5页
第5页 / 共18页
02级C语言试题B.docx_第6页
第6页 / 共18页
02级C语言试题B.docx_第7页
第7页 / 共18页
02级C语言试题B.docx_第8页
第8页 / 共18页
02级C语言试题B.docx_第9页
第9页 / 共18页
02级C语言试题B.docx_第10页
第10页 / 共18页
02级C语言试题B.docx_第11页
第11页 / 共18页
02级C语言试题B.docx_第12页
第12页 / 共18页
02级C语言试题B.docx_第13页
第13页 / 共18页
02级C语言试题B.docx_第14页
第14页 / 共18页
02级C语言试题B.docx_第15页
第15页 / 共18页
02级C语言试题B.docx_第16页
第16页 / 共18页
02级C语言试题B.docx_第17页
第17页 / 共18页
02级C语言试题B.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

02级C语言试题B.docx

《02级C语言试题B.docx》由会员分享,可在线阅读,更多相关《02级C语言试题B.docx(18页珍藏版)》请在冰点文库上搜索。

02级C语言试题B.docx

02级C语言试题B

东莞理工学院试题(B)

科目:

C语言姓名:

学号:

成绩:

注意:

所有的答案全答在答题卡上,

答在其它地方不得分。

答题卡在最后一页上。

一、单选题(共60分,每小题1.5分)

1、若有以下定义和语句:

intu=010,v=0x10,w=10;

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

则输出结果是:

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

2、若有以下定义和语句:

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

则对w数组元素的非法引用是.

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

3、以下程序的输出是

#include

main()

{inta=3,b=2;

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

}

(A)3,2,3(B)3,2,4(C)4,2,3(D)4,2,4

4、若k为整数,则while循环

k=10;

while(k=0)k=k-1;

(A)执行10次(B)无限循环(C)一次也不执行(D)执行一次

5、以下程序的输出结果是

main()

{char*s="12134211";

intv[4]={0,0,0,0},k,i;

for(k=0;s[k];k++){switch(s[k])

{case'1':

i=0;

case'2':

i=1;

case'3':

i=2;

case'4':

i=3;

}

v[i]++;

}

for(k=0;k<4;k++)printf("%d",v[k]);

}

A)4211B)0008C)4678D)8888

6、以下程序的运行时从键盘上输入Thisisabook!

后,结果是

#include

main()

{charch;

do

{ch=getchar();

if(ch<='z'&&ch>='a')ch+='A'-'a';

elseif(ch==’‘)ch=’\0’;

else;

putchar(ch);}while(ch!

=’\n’);

return0;

}

(A)THISISABOOK!

(B)Thisisabook!

(C)THISISABOOK!

(D)Thisisabook!

7、下列符号中,合法的C语言常量是

(A)1E-2.4(B)0137(C)0xfg9(D)'computer'

8、字符'\r'表示

(A)回车(B)换行(C)回车换行(D)换行回车

9、下面程序段

main()

{inta=65,b=66;

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

}

的输出是

(A)AB(B)A,B(C)65,66(D)a,b

10、循环语句while((c=getchar())!

='a')可从键盘读入字符,以下哪个按键方法能使循环结束?

(A)输入任何字符后按回车(B)输入字符a

(C)输入中含有字符a后按回车(D)按Ctrl/D

11、下面的程序中哪行有错误?

1#include

2main()

3{

4floata[3]={0.0};

5inti;

6for(i=0;i<3;i++)scanf("%d",&a[i]);

7for(i=1;i<3;i++)a[0]=a[0]+a[1];

8printf("%f\n",a[0]);

9}

(A)没有(B)第4行(C)第6行(D)第8行

12、以下程序的输出结果是

main()

{char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};

char**p;

inti;

p=alpha;

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

printf("%s",p[i]);

printf("\n");

}

(A)ABCDEFGHIJKL(B)ABCD

(C)ABCDEFGHIJKLMNOP(D)AEIM

13、以下程序的输出结果是

#include

#defineFUDGE(y)y*y

main()

{intx=2,y=1,t;

t=FUDGE(x+y);

printf(“%d\n”,t);

}

(A)5(B)9(C)1(D)4

14、表达式ch&=0377的作用是

(A)将变量ch的低字节保留,其它字节清除

(B)将变量ch的高字节保留,其它字节清除

(C)变量ch的高字节置为0xFF,其它字节不变

(D)将变量ch的低字节置为0xFF,其它字节不变

15、具有相同类型的指针变量p与数组a,不能进行的操作是

(A)p=a;(B)*p=a[0];(C)p=&a[0];(D)p=&a;

16、已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是

(A)读入数据项的大小

(B)一个指向所读文件的文件指针

(C)存放读入数据的地址或指向此地址的指针

(D)一个整型变量,代表要读入的数据项总数

17、若x、i、j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为

(A)4(B)l6(C)32(D)52

18、下面给字符串赋值的方法中,正确的是

(A)char*str={Iamastudent.}(B)charch[80];strcmp(ch,”Iamastudent.”);

(C)char*str;str=”Iamastudent.”(D)char*ch;strcpy(ch,”Iamatudent.”);

19、以下C程序正确的运行结果是

main()

{unionun

{charc;

inta;

}b;

b.c=’A’;

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

return(0);

}

(A)编译时出现语法错误(B)输出一个随机数

(C)输出字符A(D)输出整数65

20、设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是

(A)0至255(B)0至65535

(C)-32768至32767(D)-256至255

21、下列可以正确表示字符型常数的是

(A)"a"(B)'\t'

(C)"\n"(D)297

22、已知:

chara;intb;floatc;doubled;执行语句c=a+b+c+d;后,变量c的数据类型是

(A)int(B)char

(C)float(D)double

23、下列四组字符串中都可以用作c语言程序中的标识符的是

(A))print(B)I\am(C)Pxq(D)str_1

_3done_halfMy->bookCpp

oodbstar$itline#pow

aBc3paiHis.agewhile

24、若w=l,x=2,y=3,z=4;则条件表达式"w>x?

w:

y

y:

z"的结果为

(A)4(B)3

(C)2(D)l

25、已知:

intx;floaty;所用的scanf调用语句格式为:

scanf("x=%d,y=%f",&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应当是

(A)x=10,y=66.6<回车>(B)10,66.6<回车>

(C)10<回车>66.6<回车>(D)x=10<回车>y=66.6<回车>

26、系统的标准输入文件是指

(A)键盘(B)显示器(C)软盘(D)硬盘

27、以下运算符中优先级最低的是

(A)&&(B)&(C)||(D)|

28、已知学生记录描述为

structstudent

{intno;

charname[20];

charsex;

struct

{intyear;

intmonth;

intday;

}birth;

};

structstudents;

设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是

(A)year=1984;month=11;day=11;

(B)birth.year=1984;birth.month=11;birth.day=11;

(C)s.year=1984;s.month=11;s.day=11;

(D)s.birth.year=1984;s.birth.month=11;s.birth.day=11;

29、若有说明:

inta[10];则对a数组元素的正确引用是

(A)a[10](B)a[3,5](C)a(5)(D)a[10-10]

30、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是

(A)"ab++"(B)"wb+"(C)"rb+"(D)"ab"

31、以下正确的叙述是

(A)在C程序中,每行中只能写一条语句

(B)字符型变量不能和整型数据进行算术运算

(C)在C程序中,任何整数和实数,都能被毫无误差地表示

(D)在C程序中,%是只能用于整数运算

32、C语言规定,在一个源程序中,main函数的位置

(A)必须在最开始(B)必须在系统调用的库函数的后面

(C)可以任意(D)必须在最后

33、以下叙述不正确的是

(A)一个C源程序可由一个或多个函数组成

(B)一个C源程序必须包含一个main函数

(C)C程序的基本组成单位是函数

(D)在C程序中,注释说明只能位于一条语句的后面

34、以下程序有错,错误原因是

main()

{int*p,i;char*q,ch;

p=&i;

q=&ch;

*p=40;

*p=*q;

......

}

(A)p和q的类型不一致,不能执行*p=*q;语句

(B)*p中存放的是地址值,因此不能执行*p=40;语句

(C)q没有指向具体的存储单元,所以*q没有实际意义

(D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;

35、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是

main()

{int*p,*q,a,b;

p=&a;*p=a

printf("inputa:

");

scanf("%d",*p);

}

(A)*p表示的是指针变量p的地址

(B)*p表示的是变量a,而不是变量a的地址

(C)*p表示的是指针变量p的值

(D)*p只能用来说明p是一个指针变量

36、charstr1[20],str2[20];可用来比较str1和str2中内容相等的条件是

(A)if(str1=str2)(B)if(str1==str2)

(C)if(strcpy(str1,str2)==0)(D)if(strcmp(str1,str2)==0)

37、在位运算中,操作数每左移一位,其结果相当于

(A)操作数乘以2(B)操作数除以2

(C)操作数除以4(D)操作数乘以4

38、表达式x>y?

x

x>y的输出结果是

(A)xy(C)0(D)1

39、下面程序段的运行结果是

a=1;b=2;c=2;

while(a

printf("%d,%d,%d",a,b,c);

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

40、请读程序片段:

intx=20;

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

上面程序片段的输出结果是

(A)020(B)x20(C)24(D)14

二、填空(共30分,每空1.5分)

1、指针操作符有

(1)__*&__.

2、feof函数可用于二进制文件和ASCII文件,它用来判断即将读入的是否为文件结束标志,若是,函数的返回值为

(2)__"真"________.

3、C语言程序由(3)____函数____构成。

4、C语言规定标识符只能由(4)____字母数字下划线_____三种字符组成。

5、我们把在定义函数时使用的参数称为(5)__形式参数________,而在引用函数时使用的参数称为(6)_实在参数_。

6、有以下函数:

f(inta)

{intb=0;

staticintc=3;

b++;c++;

return(a+b+c);

}

如果在下面的程序中调用该函数,则输出结果是(7)___789__

main()

{inta=2,i;

for(i=0;i<3;i++)printf("%d",f(a));

}

7、已知abc+cba=1333,其中a,b,c均为一位数,例如:

617+716=1333

518+815=1333

下面的程序用于求出一组符合上述条件的a,b,c,其中:

a,b,c互不相等。

请在空白处填上合适的语句,以使程序正确运行。

(提示:

分别作a,b,c从1到9步长为1的循环,满足条件(a*100+b*10+c)+(c*100+b*10+a)=1333)

main()

{

inta,b,c,k=1333;

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

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

{

if(a==b)

continue;

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

{

if((a==c)||(b==c))

continue;

if((8)_a*100+b*10+c)+(c*100+b*10+a)=1333_____)

printf("%d%d%d+%d%d%d=%d\n,(9)_a,b,c,c,b,a,k_);

}

}

}

8、组合问题(C(m,n)表示m个元素中取出n个的组合),由组合的基本性质可知:

(l)C(m,n)=C(m,m-n)

(2)C(m,n)=C(m-1,n-1)+C(m-l,n)

公式

(2)是一个递归公式,一直到满足C(m,1)=m为止。

当m<2*n时,可

先用公式

(1)进行简化,填写程序中的空白,使程序可以正确运行。

#include"stdio.h"

main()

{intm,n;

printf("Inputm,n=");

scanf("%d%d",&m,&n);

printf("Thecombinationnumbersis%d\n",combin(m,n));

}

combin(intm,intn)

{intcom;

if(m<2*n)n=m-n;

if(n==0)com=l;

elseif(n==1)__(10)_com=m______;

else______(11)_com=combin(m-1,n)+combin(m-1,n-1);

retum(com);

}

9、程序的功能:

从键盘输入10个数,从中找出其最大值和最小值。

在程序留空的位置填入恰当的语法成分,使程序能正常运行并实现指定的功能。

intmax,min;

find_max_min(p,n)

int*p,n;

{int*q;

max=min=*p;

for(q=p;__(12)q<=p+n______;q++)

if(max<*q)max=*q;

elseif(min>*q)min=*q;

}

main()

{inti,num[10];

printf("input10numbers:

\n");

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

scanf("%d",&num[i]);

_(13)_find_max_min(num,10)________;

printf("\n\nmax=%d;min=%d\n",max,min);

}

10、从键盘输入100个数(从小到大)存入数组中,然后输入一个数,要求按原来的顺序规律,将它插入到数组中。

算法是:

假设排列顺序为从小到大,对输入的数,检查它在数组中哪一个之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。

最后输出新得到的数组,输出时,每行5个数。

#defineN100

main()

{floata[N+1],x;

inti,p;

for(i=0;i

{printf("pleaseinput%d-thnumber:

",i);

scanf("%f",&a[i]);

}

printf("pleaseinputthenumberyouwanttoinsert:

\n");

scanf("%f",&x);

for(i=0,p=N;i

if(___(14)x

{p=i;

break;}

for(i=N-1;i>=p;i--)

______(15)___a[i+1]=a[i]________;

a[p]=x;

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

{printf("%8.2f",a[i]);

if(_____(16)_i%5==0___)

printf("\n");}

return;

}

11、将一个磁盘文件的内容复制到另一个磁盘文件。

#include"stdio.h"

voidmain()

{FILE*in,*out;

charch;

charinfile[10],outfile[10];

printf("Entertheinfilename\n");

scanf("%s",infile);

printf("Entertheoutfilename\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{printf("cannotopeninfile%s\n",infile);

exit(0);

}

if(__(17)__(out=fopen(outfile,"w"))==NULL_)

{printf("cannotopenoutfile%s\n",outfile);

exit(0);

}

while(!

feof(in))fputc(_____(18)_fgetc(in),out);

fclose(in);fclose(out);

}

12、有四个学生,每个学生包括学号、姓名、成绩。

要求找出成绩最高者的姓名和成绩。

main()

{structstudent

{intnum;

charname[20];

floatscore;

};

structstudentstu[4];

structstudent*p;

inti,temp=0;

floatmax;

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

scanf("%d%s%f",&stu[i].num,stu[i].name,&stu[i].score);

for(max=stu[0].score,i=1;i<4;i++)

if(stu[i].score>max)

{___(19)__max=stu[i].score_;temp=i;}

p=stu+temp;

printf("\nThemaximumscore:

\n");

printf("No.:

%d\nname:

%s\nscore:

%4.1f\n",_____(20)__p->num,p->name,p->score_);

return(0);

}

三、编程题(10分)

要将一张100元的大钞票,换成等值的10元、5元、2元、1元的小钞票。

要求每次换成40张小钞票,每种至少一张。

编程输出各种可能的换法,程序应尽量考虑减少重复的次数。

答题卡

科目:

C语言姓名:

学号:

成绩:

一、单选题

1-----5:

6----10:

11---15:

16---20:

21---25:

26---30:

31---35:

36---40:

二、填空题

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(17)

(18)

(19)

(20)

三、编程题(将程序写在下面)

参考答案

一、单选题

1、A2、C3、C4、C5、B

6、A7、B8、A9、B10、B

11、C12、C13、A14、A15、D

16、C17、C18、D19、D20、B

21、B22、C23、A24、B25、A

26、A27、C28、D29、D30、B

31、D32、C33、D34、D35、B

36、D37、A38、C39、D40、D

二、填空

(1)*&

(2)"真"

(3)函数

(4)字母数字下划线

(5)形式参数

(6)实在参数

(7)789

(8)(a*100+b*10+c)+(c*100+b*10+a)==1333

(9)a,b,c,c,b,a,k

(10)com=m

(11)com=combin(m-1,n)+combin(m-1,n-1)

(12)q<=p+n;

(13)find_max_min(num,10);

(14)x

(15)a[i+1]=a[i]

(16)i%5==0

(17)(out=fopen(outfile,"w"))==NULL

(18)fgetc(in)

(19)max=stu[i].score

(20)p->num,p->name,p->score

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2