C语言期末考试复习题精选.docx

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

C语言期末考试复习题精选.docx

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

C语言期末考试复习题精选.docx

C语言期末考试复习题精选

二、C选择题

1.表达式“(a=4*5,b=a*2),b-a,a+=2”的值是()。

A.2B.20C.22D.42

2.以下是一个自定义函数的头部,其中正确的是()。

A.intfun(inta[],b)B.intfun(inta[],inta)

C.intfun(int*a,intb)D.intfun(chara[][],intb)

3.以下数组声明语句中正确的是()。

A.intn,a[n];B.inta[];

C.inta[2][3]={{l},{2},{3}};D.inta[][3]={{l},{2},{3}};

4.已知在某C语言编译系统中表达式sizeof(int)的值是2,如果希望将常量-70000正确地保存在一个变量a中,该变量声明语句应当是()。

A.inta;B.longinta;C.unsignedinta;D.unsignedinta;

5.以下声明语句中,用于声明一个行指针变量的是()。

A.int*p(int);B.int*p;C.int(*p)[3];D.int(*p)(int);

6.在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中()不能用做该变量的名字。

#include

inty;

main()

{inta=1;

fun(a);

}

intfun(intx)

{_______;/*int型变量声明语句位置*/

…/*若干执行语句*/

}

A.xB.yC.fabsD.fun

7.如有语句“intx,y=0,z,*p[3];p[0]=&x;p[1]=&y;p[2]=&z;”,以下表达式中有语法错误的是()。

A.y++B.p++C.*++p[0]D.(*p[0])++

8.设有声明语句“inta[3][3]={1,2,3,4,5,6,7,8,9};”,以下语句中除()外均能输出a[1][2]的值。

A.printf("%d",*(*(a+1)+2))B.printf("%d",*(&a[2][0]-1));

C.printf("%d",*(a[1]+2));D.printf("%d",*(a+1)[2]);

9.已知有声明语句intx=8,则下列表达式中,值为2的是()。

A.x+=x-=xB.x%=x-2C.x>8?

x=0:

x++D.x/=x+x

10.以下关于函数的叙述中正确的是()。

A.在函数体中可以o直接引用另一个函数中声明为static类别的局部变量的值

B.在函数体中至少必须有一个return语句

C.在函数体中可以定义另一个函数

D.在函数体中可以调用函数自身

11.若有声明语句“inta[10],b[3][3];”,则以下对数组元素赋值的操作中,不会出现越界访问的是()。

A.a[-1]=0B.a[10]=0C.b[3][0]=0D.b[0][2]=0

12.若有声明语句“charch=’a’,*pc=&ch;”,以下语句中有语法错误的是()。

A.(*pc)++;B.ch+=-‘a’+‘A’;

C.toupper(ch)=ch;D.ch++;

13.已知有声明语句“inta[5]={1,2,3,4,5},*p,i;”,以下语句中()不能正确输出a数组全部元素的值。

A.for(p=a,i=0;i<5;i++)printf("%d",*(p+i));

B.for(p=a;p

C.for(p=a,i=0;p

D.for(p=a;p

14.已知某程序如下:

floatp=1.5;

#definep2.5

main()

{printf("%f",p);}

则main函数中标识符p代表的操作数是()。

A.float型变量B.double型变量

C.float型常量D.double型常量

15.已有声明“intS[2][3]”,以下选项中()正确地引用了数组S中的基本元素。

A.S[1>2][!

1]B.S[2][0]C.S[1]D.S

16.逻辑“异或”运算可描述为“axorb”,其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。

以下表达式中()可以正确表示逻辑“异或”运算。

A.a||bB.a&&bC.(a&&b)&&!

(a||b)D.(a||b)&&!

(a&&b)

17.若有声明“inta[5],*b=a,(*c)[3],*d[3];”,则在以下表达式中有语法错误的是()。

A.a[0]=0B.b[0]=0C.c[0]=0D.d[0]=0

18.若有声明:

intk,a,b;

unsignedlongy=5;

doublex=1.23;

则以下表达式中正确的是()。

A.x%(-5)B.x=y[6]C.k=(a=1,b=2,&a+&b)D.a+=a-=(b=2)*(a=3)

19.一个用C语言编写的源程序中,()是必不可少的。

A.取名为main的函数定义B.#include

C.变量声明D.注释

20.以下声明中正确的是()。

A.intn=2,a[n]={10};B.intn=10,*p[2]=&n;

C.intn=10,a[2]={n};D.inta[2][2]={10},(*p)[2]=a+1;

21、若有函数fun的定义为

voidfun(…)

{staticinta=1;

}

则下列叙述中不正确的是()。

A.在每次调用fun函数时,变量a的值是上次调用结束时a的值

B.在fun函数之外,可以用变量名a直接引用a的值

C.在其他函数中,可以出现声明doublea=2.5;

D.fun函数的形式参数不能取名为a

22.以下单目运算符均只需要一个操作数,其中要求操作数的类型只能是指针型的是()。

A.&B.++C.!

D.*

23.已知有声明“intgood=l;”,若要使得表达式“p="good"+good”无语法错误(包括警告错误),p应当声明为()。

A.charp;B.char*p;C.intp;D.int*p;

24.以下全局变量声明中正确的是()。

A.autointi=1;B.floata=1,b=0.5,c=a+b;

C.charfor=1;D.staticcharch;

25.若已有声明“doublea[2][3]={1,2,3,4,5,6};”,则下列表达式中不能正确引用a[1][1]值的是()。

A.*(a[0]+4)

B.*(a[1]+1)

C.*(*(a+3)+1)

D.*(*a+4)

26、已有声明“inta[5];”,以下表达式中不能正确取得a[1]指针的是()。

A.&a[1]

B.++a

C.&a[0]+1

D.a+l

27.以下关于语句的说法中正确的是()。

A.do-while语句的循环体至少会被执行1次

B.while语句的循环体至少会被执行1次

C.for语句的循环体至少会被执行1次

D.在C语言中只能用do、do-while或for语句实现循环结构

28.已知函数f的定义如下:

voidf(void)

{printf("That’sgreat!

");}

则调用f函数的正确形式是()。

A.f;

B.f();

C.f(void);

D.f

(1);

29.以下程序在编译时在第三行报错“Redeclarationof‘a’infunctiond”,如果决定修改该行声明中出现的局部变量a的名字,则下列选项中不能用来替换变量名a的是()。

intb;

voidd(inta)

{intf;doublea=1;

printf("%d",a);

}

main()

{inte=1;d(e);}

A.fB.eC.dD.b

30、以下语句中不包含关键字的是()。

A.x=sqrt

(2);

B.while(x!

=0)x--;

C.if(x<0)x=-x;

D.returnx;

31.在main函数体内部和外部均允许出现的实体是()。

A.预处理命令

B.语句

C.另一函数的定义

D.函数形式参数声明

32、已知有声明intx=2:

,以下表达式中值不等于8的是()。

A.x+=2,x*2

B.x+=x*=X

C.(x+7)/2*((x+1)%2+1)

D.x*7.2/x+1

33、执行以下程序时,

#include

main()

{inta;floatb;

scanf("%3d%f",&a,&b);printf("%d\t%f",ab);

}

若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中(代表“空格”键,代表“回车”键),不能达到该要求的输入数据是()。

A.45678

B.45678

C.45,678

D.045678

34.下列程序段中,能将变量x、y中值较大的数保存到变量a、值较小的数保存到变量b的程序段是()。

A.if(x>y)a=x;b=y;elsea=y;b=x;

B.if(x>y){a=x;b=y;}elsea=y;b=x;

C.if(x>y){a=x;b=y;}else{a=y;b=x;}

D.if(x>y){a=x;b=y;}else(x

35.已知函数fun的定义如下:

voidfun(intx[],inty)

{intk;

for(k=0;k

x[k]+=y;

}

若main函数中有声明inta[10]={10}及调用fun函数的语句,则正确的fun函数调用形式是()。

A.fun(a[],a[0]);

B.fun(a[0],a[0]);

C.fun(&a[0],a[0]);

D.fun(a[0],&a[0]);

36.设有下列程序段:

staticcharb=2;

voidY()

{staticfloatd=4;……}

inta=1;

voidX()

{intc=3;……}

关于程序段中各变量的属性,以下叙述中错误的是()。

A.a是全局变量,函数X可以访问,函数Y不能访问

B.b是全局变量,函数X和函数Y都可以访问

C.c是动态变量,函数X可访问,函数Y不可访问

D.d是静态变量,函数X和函数Y都可以访问

37、若有如下声明和语句:

intt[3][3],*pt[3],k;

for(k=0;k<3;k++)pt[k]=&t[k][0];

则表达式*(*(pt+1)+2)所引用的是()。

A.t[2][0]B.&t[2][0] C.t[1][2]D.&t[1][2]

38.设有声明floata=1.23456;inti;,欲将a中的数值保留小数点后两位,第三位进行四舍五入运算,能实现该功能的表达式是()。

A.i=a*100+0.5,a=i/100.0B.a=(a*100+0.5)/100.0

C.a=((int)a*100+0.5)/l00.0D.a=(a/100+0.5)/100.0

39.若已有声明“intx=4,y=3;”,则表达式x

x++:

y++的值是()。

A.2B.3C.4D.5

40.设有变量声明“charc;”,执行“for(;c=(getchar()!

=’\n’);)printf("%c",c);”时,从键盘上输入“ABCDEFG↙”之后,输出的结果是()。

A.ABCDEFGB.AABBCCDDEEFFGG

C.非字母数字字符D.语句不能执行

41.以下表示数学式“a

A.a

(a>=b)&&!

(b>=c)D.!

(a>=b||b>=c)

42.下面关于循环语句for、while、do_while的叙述中,正确的是()。

A.三种循环语句的循环体都必须放入一对花括号中

B.三种循环语句中都可以缺省循环终止条件表达式

C.三种循环语句的循环体都至少被无条件地执行一次

D.三种循环语句都可能出现无穷循环

43、若有声明“inta[]={l,2,3,4},*p,i;”,则以下程序段中不能输出13的是()。

A.for(i=0;i<4;i+=2)printf("%d",a[i]);

B.for(p=0;p<4;p+=2)printf("%d",a[p]);

C.for(p=a;p

D.for(p=a,i=0;i<4;i+=2)printf("%d",p[i]);

44、下列叙述中正确的是()。

A.main函数必须出现在其他函数之前

B.main函数中至少必须有一条语句

C.C程序总是从main函数的第一条语句开始执行

D.C程序总是在执行完main函数的最后一条语句后结束

45.已知有结构定义和变量声明如下:

structstudent

{charname[20];

intscore;

structstudent*h;

}stu,*p;int*q;

以下选项中错误的是()。

A.p=&stu;B.q=&stu.score;C.scanf("%s%d",&stu);D.stu.h=p;

46、设有声明“intp[10]={1,2},i=0;”,以下语句中与“p[i]=p[i+1],i++;”等价的是()。

A.p[i]=p[i+1];B.p[++i]=p[i];C.p[++i]=p[i+1];D.i++,p[i-1]=p[i];

47.设有结构定义及变量声明如下:

structproduct

{char[5];

floadtprice;

}y[4]={"100",100};

以下表达式中错误的是()。

A.(*y).code[0]=’2’;B.y[0].code[0]=’2’C.y->price=10;D.(*y)->price=10;

48.若有声明“inta=3,b=4,c=5;”,则下列表达式中值为0的是()。

A.a&&b=0B.a<=bC.a||b&&cD.!

(!

c||1)

49.已知有声明“longx,y;”,且x中整数的十进制表示有n位数字(4

A.y=x/(10*(n-1))

B.y=x%(10*(n-1))

C.y=x%(long)pow(10,n-1)

D.y=x%(10^(n-1))

50.已知有声明“intx,y;”,若要求编写一段程序实现“当x大于等于0时y取值1,否则y取值-1”,则以下程序段中错误的是()。

A.if(x>=0)y=1;elsey=-1;

B.y=x>=0?

1:

01;

C.switch()

{ casex>=0:

y=1;break;

default:

y=-1;

}

D.switch(x-abs(x))

{case0:

y=1;break;

default:

y=-1;

}

51、已知有声明“intm[]={5,4,3,2,1},i=0;”,下列对m数组元素的引用中,错误的是()。

A.m[++i]

B.m[5]

C.m[2*2]=0

D.m[m[4]]

52、若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是()。

A.实参和其对应的形参占用同一存储单元

B.形参不占用存储单元

C.同名的实参和形参占用同一存储单元

D.形参和实参占用不同的存储单元

53.C语言规定,在一个源程序中main函数的位置()。

A.必须在最开始

B.必须在最后

C.必须在预处理命令的后面

D.可以在其他函数之前或之后

54、已知有声明“inta=3,b=4,c;”,则执行语句“c=1/2*(a+b);”后,c的值是()。

A.0

B.3

C.3.5

D.4

55、已知字母A的ASCII码是65,字母a的ASCII码是97,变量c中存储了一个大写字母的编码。

若要求将c中大写字母编码转换成对应小写字母编码,则以下表达式中不能实现该功能的是()。

A.c=tolower(c)

B.c=c+32

C.c=c-‘A’+’a’

D.c=(c+’A’)%26-‘a’

56.已知有定义和声明:

structstudent

{intno;

charname[20];

struct{intyear,month,day;}birth;

}s;

若要求将日期“1989年11月12日”保存到变量s的birth成员中,则能实现这一功能的程序段是()。

A.year=1989;month=11;day=12;

B.s.year=1989;s.month=11;s.day=12;

C.birth.year=1989;birth.month=11;birth.day=12;

D.s.birth.year=1989;s.birth.month=11;s.birth.day=12;

57、执行以下程序后的结果是()。

#include

voidmain()

{intx=3;

Do

{

printf("%d\t",x=x-3);

}while(!

x);

}

A.输出一个数:

0

B.输出一个数:

3

C.输出两个数:

0和-3

D.无限循环,反复输出数

58.设有声明“inta=4,b=3,c=5;”,以下4个程序段中有3个程序段的执行效果是相同的,另一个执行效果不同的是()。

A.if(a>b)c=a,a=b,b=c;

B.if(a>b){c=a,a=b,b=c;}

C.if(a>b)c=a;a=b;b=c;

D.if(a>b){c=a;a=b;b=c;}

59、以下关于if语句和switch语句的叙述中错误的是()。

A.if语句和switch语句都可以实现算法的选择结构

B.if语句和switch语句都能实现多路(两路以上)选择

C.if语句可以嵌套使用

D.switch语句不能嵌套使用

60.若有声明语句“chars1[10]={0},s2[10]="books";”,则能将字符串"books"赋给数组s1保存的表达式是()。

A.s1="books";B.strcpy(s2,s1);

C.s1=s2;D.strcat(sl,s2);

61.已知A盘根目录下的一个文本数据文件data.dat中存储了100个int型数据,若需要修改该文件中已经存在的若干个数据的值,只能调用一次fopen函数,已有声明语句“FILE*fp;”,则fopen函数的正确调用形式是()。

A.fp=fopen("a:

\\data.dat","r+");

B.fp=fopen("a:

\\data.dat","w+");

C.fp=fopen("a:

\\data.dat","a+");

D.fp=fopen("a:

\\data.dat","w");

62.数组和链表都可以用于存储一组彼此有关联的数据,以下说法中不正确的是()。

A.数组占用一块连续的存储区域,链表可能占用若干块不连续的存储区域

B.数组和链表所占用的存储区域均不能在程序运行期间动态地分配

C.数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取

D.数组的长度是固定的,链表的长度是不固定的

63.设有定义和声明语句:

typedefstructdtype

{inta;

structdtype*b;

}node;

staticnodex[3]={5,&x[1],7,&x[2],9,’\0’},*prt=&x[0];

下列选项中,表达式值不为5的是()。

A.x[1].b->a-2

B.Ptr->b->a-2

C.(ptr+1)->a-2

D.ptr->a

64.在以下程序中,需要在main函数之后定义一个函数,以下选项中()可以用做该函数的名字。

#defineP3.14

inty;

main()

{inta=1;

函数名(a);

…/*若干执行语句*/

}

int函数名(intx)

{returnx*x;}

A.mainB.yC.PD.print

65.已知有语句“FILE*fp;intx=123;fp=fopen("out.dat","w");”,如果需要将变量x的值以文本形式保存到一个磁盘文件out.dat中,则以下函数调用形式中正确的是()。

A.fprintf("%d",x);B.fprintf(fp,"%d",x);

C.fprinff("%d",x,fp);D.fprintf("out.dat","%d",x);

66.已知有声明语句“chars1[10]="12345",s2[10]="abcde",s3[10];”,以下语句中能将s1中存储的字符串和s2中存储的字符串正确交换的是()。

A.s3=s1,s1=s2,s2=s3;

B.s3[0]=s1[0],s1[0]=s2[0],s2[0]=s3[0];

C.strcpy(s3[0],s1[0]),strcpy(s1[0],s2[0]),strcpy(s2[0],s3[0]);

D.strcpy(s3,s1),strcpy(sl,s2),strcpy(s2,s3);

67.在定义任何一个函数时,下列选项中()是不可缺少的。

A.函数名之前的数据类型B.函

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

当前位置:首页 > 求职职场 > 简历

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

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