C语言期末考试复习题及答案.docx

上传人:b****2 文档编号:17388878 上传时间:2023-07-24 格式:DOCX 页数:21 大小:23.88KB
下载 相关 举报
C语言期末考试复习题及答案.docx_第1页
第1页 / 共21页
C语言期末考试复习题及答案.docx_第2页
第2页 / 共21页
C语言期末考试复习题及答案.docx_第3页
第3页 / 共21页
C语言期末考试复习题及答案.docx_第4页
第4页 / 共21页
C语言期末考试复习题及答案.docx_第5页
第5页 / 共21页
C语言期末考试复习题及答案.docx_第6页
第6页 / 共21页
C语言期末考试复习题及答案.docx_第7页
第7页 / 共21页
C语言期末考试复习题及答案.docx_第8页
第8页 / 共21页
C语言期末考试复习题及答案.docx_第9页
第9页 / 共21页
C语言期末考试复习题及答案.docx_第10页
第10页 / 共21页
C语言期末考试复习题及答案.docx_第11页
第11页 / 共21页
C语言期末考试复习题及答案.docx_第12页
第12页 / 共21页
C语言期末考试复习题及答案.docx_第13页
第13页 / 共21页
C语言期末考试复习题及答案.docx_第14页
第14页 / 共21页
C语言期末考试复习题及答案.docx_第15页
第15页 / 共21页
C语言期末考试复习题及答案.docx_第16页
第16页 / 共21页
C语言期末考试复习题及答案.docx_第17页
第17页 / 共21页
C语言期末考试复习题及答案.docx_第18页
第18页 / 共21页
C语言期末考试复习题及答案.docx_第19页
第19页 / 共21页
C语言期末考试复习题及答案.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言期末考试复习题及答案.docx

《C语言期末考试复习题及答案.docx》由会员分享,可在线阅读,更多相关《C语言期末考试复习题及答案.docx(21页珍藏版)》请在冰点文库上搜索。

C语言期末考试复习题及答案.docx

C语言期末考试复习题及答案

C语言期末考试复习题及答案

一、选择题:

下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确的选项涂写在答案纸上。

答在试卷上不得分。

(1)C语言规定:

在一个源程序中,main函数的位置D。

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

C)必须在最开始。

D)可以任意

(2)C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符A。

A)必须为字母或下划线。

B)必须为下划线。

C)必须为字母D)可以是字母、数字和下划线中的任一种字符。

(3)下面四个选项中,均是正确的八进制数或十六进制数的选项是B。

A)-100x8f-011B)010-0x110xf1

C)0abc-0170xcD)0a12-0x123-0xa

(4)C语言中int型数据在内存中占两个字节,则unsegnedint取值范围是A。

A)0~65535B)0~32767

C)-32767~32768D)-32768~327687

(5)若有定义:

inta=7;floax=,y=;

则表达式x+a%3*(int)(x+y)%2/4的值是D。

A)B)0.00000C)D)

(6)已知ch是字符型变量,下面不正确的赋值语句是B。

A)ch=5+9;B)ch='a+b';C)ch='\0';D)ch='7'+'6';

(7)设x,y和z是int型变量,且x=3,y=4,z=5则下面表达式中值为0的

是A。

A)!

((x

z||1)B)'x'&&'y'C)x||y+z&&y-zD)x<=y

(8)设有程序段

intk=10;

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

以下描述正确的是A。

A)循环体语句一次也不执行。

B)循环是无限循环。

C)while循环语句执行十次。

D)循环体语句执行一次。

(9)以下C程序正确的运行结果是A。

main()

{longy=23456;

printf("y=%3x\n",y);

printf("y=%8x\n",y);

printf("y=%#8x\n",y);

}

A)y=5ba0B)y=5ba0C)y=5ba0D)y=5ba0

y=5ba0y=5ba0y=bba0y=5ba0

y=0x5ba0y=0x5ba0y=0x5ba0y=####5ba0

(10)当a=1,b=3,c=5d=4时,则执行完下面一段程序后,x的值是C。

if(a

if(c

else

if(a

if(b

elsex=3;

elsex=6;

elsex=7;

A)1B)3C)2D)6

(11)下面程序的运行结果是D。

#include""

main()

{inta=1,b=10

do

{b-=a;a++;}

while(b--<0);

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

A)a=3,b=11B)a=4,b=9

C)a=1,b=-1D)a=2,b=8

(12)以下for循环的执行次数是B。

for(x=0,y=0;(y=123)&&(x<4);x++);

A)无限次。

B)4次。

C)0次。

D)3次。

(13)以下是死循环的程序段的是C。

A)for(i=1;;)B)i=32767

{if(++i%2==0)continue;do{if(i<0)break;}while(++i)

if(++i%3==0)break;}

C)for(i=1;;)D)i=1

if(++i<10)continue;while(i--);

(14)若有说明:

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

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

(15)根据定义和数据的输入方式,输入语句的正确形式为A。

已有定义:

floatf1,f2;数据输入方式:

A)scanf("%f%f",&f1,&f2);B)scanf("%f,%f",&f1,&f2);

C)scanf("%3.2f%2.1f",&f1,&f2);D)scanf("%2.1f%3.2f",&f1,&f2);

(16)已知ch是字符型变量,下面正确的赋值语句是C。

A)ch='123';B)ch='\08';C)ch='\xff';D)ch="\";

(17)以下if语句语法正确的是A。

A)if(x>0)B)if(x>0)printf("%f",-x)

{x=x+y;printf("%f",x);}elseprintf("%f",-x);

elseprintf("%f",-x);

C)if(x>0)D)if(x>0)

{x=x+y;printf("%f",x);};{x=x+y;peintf("%f",x)}

elseprintf("%f",-x);elseprintf("%f",-x);

(18)若W=1,X=2,Y=3,Z=4则条件式:

W

Y

Z的值是A。

A)1B)3C)4D)2

(19)以下程序段B。

x=-1;

do{x=x*x;}

while(!

x);

A)是死循环B)循环执行一次

C)循环执行二次D)有语法错误

(20)逻辑运算符两侧运算对象的数据类型B。

A)只能是0或1B)可以是任何类型的数据

C)只能是整型或字符型数据D)只能是0或非0正数

(21)下面程序中有错误的行是C。

(前面数字表示行号)

1、main()5、scanf("%d",&a);

2、{6、for(i=1;i<3;i++)a[0]=a[0]+a[i],

3、inta[3]={1};7、printf("a[0]=%d\n",a[0]);

4、inti;8、}

A)3B)6C)5D)7

(22)下面的程序段D。

for(t=1;t<=100,t++)

{scanf("%d",&x);

if(x<0)continue;

printf("%3d",t);

}

A)当x<0时整个循环结束B)当x>=0时什么也不输出

C)printf函数永远也不执行D)最多允许输出100个非负整数

(23)以下对一维整型数组a的正确说明是D。

A)inta(10)B)intn=10;a[n];

C)intn;D)#defineSIZE10

scanf("%d",&n);inta[SIZE];

inta[n];

(24)下面程序的运行结果是A。

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

while(a

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

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

(25)若有说明:

inta[3][4];则对数组元素的非法引用是B。

A)a[0][2*1]B)a[0][4]C)a[4-2][0]D)a[1][3]

(26)对以下说明的正确理解是B。

inta[10]={6,7,8,9,10}

A)将5个初值依此赋给a[1]至a[5]B)将5个初值依此赋给a[0]至a[4]

C)将5个初值依此赋给a[6]至a[10]D)因长度与初值个数不同,故语句错误

(27)若二维数组a有m列,则在a[i][j]前的元素个数为A

A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1

(28)以下程序段运行的结果是D。

charc[5]={'a','b','\0','c','\0'};

printf("%s",c);

A)'a''b'B)abcC)abcD)ab

(29)以下正确的函数定义形式是A。

A)doublefun(intx,inty)B)doublefun(intx;inty)

C)doublefun(intx,inty);D)doublefun(intx,inty);

(30)以下不正确的说法是D。

A)实参可以是常量、变量或表达式。

B)形参应与其对应的实参类型一致。

C)实参可以为任意类型。

D)形参可以是常量、变量或表达式。

(31)有两个字符数组a,b,则以下正确的输入格式是C。

A)scanf("%s%s",&a,&b)B)gets(a,b)

C)scanf("%s%s",a,b)D)gets("a");gets("b")

(32)以下程序正确的运行结果是C。

main()

{inta=2,i;

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

}

f(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);}

A)777B)71013C)789D)7911

(33)#define能做简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的函数f,正确的宏定义是C。

A)#definef(x)4*x*x+3*x+2B)#definef4*x*x+3*x+2

C)#definef(a)(4*a*a+3*a+2)D)#define(4*a*a+3*a+2)f(a)

(34)当运行以下程序时,从键盘输入:

ab

c

def

表示回车)则下面程序的运行结果是D。

#include""

#defineN6

main()

{charc(N);

inti=0;

for(;i

for(i=0;i

}

A)abcdefB)aC)bD)ab

bcc

cdd

d

e

f

(35)请读程序:

#defineAD(x)x+x

main()

{intm=1,n=2,k=3;

intsum=AD(m+n)*k;

printf("sum=%d",sum);}

上面程序的运行结果是B。

A)sum=9B)sum=10C)sum=12D)sum=18

(36)对下面程序段正确的判断是:

_____C______

#defineA3

#defineB(a)((A+1)*a)

x=3*(A+B(7));

A)程序错误,不许嵌套宏定义。

B)x=21

C)x=93D)程序错误,宏定义不许有参数。

(37)执行以下程序后,a,b的值为

main()

{inta,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(-*p1)/(*p2)+7;

printf("a=%d\n",a);

printf("b=%d\n",b);}

A)-1B)0C)1D)4

57610

(38)以下程序中调用scanf函数给变量a输入数值的方法是错误的,因为。

main()

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

p=&a;

printf("inputa:

");

scanf("%d",*p);

…}

A)*p表示的是变量a的值,而不是变量a的地址。

B)*p表示的是指针变量p的地址。

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

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

(39)以下程序的运行结果是。

#defineMIN(x,y)(x)<(y)(x):

(y)

main()

{inti=10,j=15,k;

k=10*MIN(i,j);

printf("%d\n",k);

}

A)15B)10C)100D)150

(40)以下正确的函数形式是

B)doublefun(intx,inty)B)fun(intx,y)

{z=x+y;returnz;}{intz;returnz;}

C)fun(x,y)D)doublefun(intx,inty)

{intx,y;doublez;}{doublez;z=x+y;returnz;}

(41)以下不正确的说法是。

A)在不同函数中可以使用相同名字的变量。

B)形式参数是局部变量。

C)在函数内的复合语句中定义的变量在本函数范围内有效。

D)在函数内定义的变量只在本函数范围内有效。

(42)C语言提供的预处理功能包括条件编译,其基本形式为:

#XXX标识符

程序段1

#else

程序段2

#endif

这里XXX可以是。

A)define或include.B)ifdef或ifndef或if

C)ifdef或ifndef或defineD)ifdef或include

(43)以下程序的正确运行结果是。

#include""

main()

{intk=4,m=1,p;

p=func(k,m);printf("%d,",p);

p=func(k,m);printf("%d\n",p);}

func(inta,intb)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;return(m);}

A)8,16B)8,17C)8,20D)8,8

(44)已有定义intk=2;int*p1,*p2,且p1和p2均已指向变量k,下面不能正确执行的赋值语句是。

A)k=*p1+*p2;B)p1=p2;

C)p2=k;D)k=*p1*(*p2);

(45)若有说明int*p,m=5,n;以下正确的程序段是。

A)p=&n;B)p=&n;

Scanf("%d",&p);Scanf("%d",*p);

C)Scanf("%d",&n)D)p=&n;

*p=n;*p=m;

(46)以下scanf函数调用语句中,对结构体成员的不正确引用为。

structpupil

{charname[20];

intage;

intsex;

}pup[5],*p;

p=pup;

A)scanf("%s",pup[0].name);B)scanf("%d",&pup[0].age);

C)scanf("%d",p->sex);D)scanf("%d",&(p->age));

(47)若有定义:

inta[3][4];则对a数组的第i行第j列(假设i,j已正确说明并赋

值)元素值的正确引用为。

A)*(*(a+i)+j)B)(a+j)[j]

C)*(a+i+j)D)*(a+i)+j

(48)若已定义charS[10];则在下面表达式中不表示S[1]的地址的是。

A)S+1B)&S[1]C)&S[0]+1D)S++

(49)若有定义:

inta[2][3]则对a数值的第i行,第j列元素地址的正确引用为。

A)*(a[i]+j)B)a[i]+jC)*(a+j)D)(a+i)

(50)若有以下定义,且0<=i<6,则正确的赋值语句是。

ints[4][6],t[6][4],(*p)[6];

A)p=t;B)p=s[i];C)p=s;D)p=t[i];

(51)以下程序的运行结果是。

#include""

main()

{union{longa;

intb;

charc;

}m;

printf("%d\n",sizeof(m));}

A)4B)2C)6D)8

(52)当顺利执行了文件,关闭操作时,fclose函数的返回值是。

A)0B)TURNC)-1D)1

(53)已知学生记录描述为

structstudent

{intno;

charname[20];

charsex;

struct

{intyear;

intmonth;

intday;}birth;

}s;

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

A)year=1984;B)birth.year=1984;

month=6;birth.month=6;

day=6;birth.day=6;

C)s.year=1984;D)s.birth.year=1984;

s.month=6;s.birth.month=6;

s.day=6;s.birth.day=6;

(54)表达式a

A)~,&,<,||B)~,<,&,||

C)~,&,||,

(55)设有以下语句:

charx=3,y=6,z;

z=x^y<<2;

则z的二进制值是.

A)00010100B)00011000C)00011100D)00011011

(56)已知函数的调用形式:

fread(buffer,size,count,fp),其中buffer代表的是。

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

B)一个文件指针,指向要读的文件.

C)一个存储器,存放要读的数据项.

D)一个指针,指向要读入数据的存放地址

(57)若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是。

A)(*p)max(a,b);B)*pmax(a,b);

C)*p(a,b)D)(*p)(a,b)

(58)在16位IBM-PC机上使用C语言,若有如下定义:

uniondata

{inti;

charch;

doublef;

}b;

则其共用体变量b占用内存字节数是。

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

(59)若有以下程序段

intx=1,y=2;

x=x^y;

y=y^x;

x=x^y;

则执行以上语句后x和y的值分别是。

A)x=1B)x=2C)x=2D)x=1

y=2y=2y=1y=1

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

A)"w+"B)"ab+"C)"wb+"D)"ab"

二.填空(每空2分,共40分):

请在[]处添上正确答案。

(1)条件"2

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

当前位置:首页 > 农林牧渔 > 林学

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

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