c语言期末复习试题附答案.docx

上传人:b****8 文档编号:11208917 上传时间:2023-02-25 格式:DOCX 页数:20 大小:19.01KB
下载 相关 举报
c语言期末复习试题附答案.docx_第1页
第1页 / 共20页
c语言期末复习试题附答案.docx_第2页
第2页 / 共20页
c语言期末复习试题附答案.docx_第3页
第3页 / 共20页
c语言期末复习试题附答案.docx_第4页
第4页 / 共20页
c语言期末复习试题附答案.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

c语言期末复习试题附答案.docx

《c语言期末复习试题附答案.docx》由会员分享,可在线阅读,更多相关《c语言期末复习试题附答案.docx(20页珍藏版)》请在冰豆网上搜索。

c语言期末复习试题附答案.docx

c语言期末复习试题附答案

试卷编号:

11201

所属语言:

C语言

试卷方案:

C语言期末考试

试卷总分:

100分

共有题型:

4种

一、单项选择共30题(共计60分)

第1题(2.0分)

设有定义:

intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A).

A:

k++

B:

k+=1

C:

++k

D:

k+1

第2题(2.0分)

已知inti=5,执行语句i+=++i后,i的值是(C).

A:

10

B:

11

C:

12

D:

A、B、C都不对

第3题(2.0分)

以下程序的功能是:

给r输入数据后,计算半径为r的圆面积s.程序在编译时出错.

#include

voidmain()

/*Beginning*/

{intr;floats;

scanf("%d",&r);

s=p*r*r;printf("s=%f\n",s);

出错的原因是(D).

A:

注释语句书写位置错误

B:

存放圆半径的变量r不应该定义为整型

C:

输出语句中格式描述符非法

D:

计算圆面积的赋值语句中使用了非法变量

第4题(2.0分)

"\\\″ABC\″\\″的长度是(B).

A:

11

B:

7

C:

5

D:

3

第5题(2.0分)

已知intj,i=1;,执行语句j=–i++;后,j的值是(C).

A:

1

B:

2

C:

-1

D:

-2

第6题(2.0分)

有以下程序:

#include

voidmain()

{ints=0,a=1,n;

scanf("%d",&n);

do{

s+=1;a=a–2;

}while(a!

=n);

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

}

若要使程序的输出值为2,则应该从键盘输入给n的值是(B).

A:

-1

B:

-3

C:

-5

D:

0

第7题(2.0分)

执行以下程序后,输出的结果是(D).

#include

voidmain()

{inty=10;

do{

y––;

}while(––y);

printf("%d\n",y––);

}

A:

-1

B:

1

C:

8

D:

0

第8题(2.0分)

以下循环体的执行次数是(C).

#include

voidmain()

{inti,j;

for(i=0,j=1;i<=j+1;i+=2,j––)printf("%d\n",i);

}

A:

3

B:

2

C:

1

D:

0

第9题(2.0分)

有以下程序段:

intk=0;

while(k=1)k++;

while循环执行的次数是(A).

A:

无限次

B:

有语法错误,不能执行

C:

1次也不执行

D:

执行1次

第10题(2.0分)

有以下程序

#include

voidmain()

{intm,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

printf("%d%d%d\n",m,n,p);

}

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是(A).

A:

m=123n=456p=789

B:

m=123n=456p=789

C:

m=123,n=456,p=789

D:

123456789

第11题(2.0分)

设变量已正确定义,以下能正确计算f=n!

的程序段是(D)

A:

f=0;

for(i=1;i<=n;i++)f*=i;

B:

f=1;

for(i=1;i

C:

f=1;

for(i=n;i>1;i++)f*=i;

D:

f=1;

for(i=n;i>=2;i––)f*=i;

第12题(2.0分)

在下列程序中,没有构成死循环的程序段是(B).

A:

inti=100;

while

(1)

{i=i%100+1;

if(i>100)break;}

B:

intk=1000;

do

{++k;}while(k>=10000);

C:

for(;;);

D:

ints=36;while(s);--s;

第13题(2.0分)

有如下程序:

#include

voidmain()

{intn=9;

while(n>6)

{n--;printf("%d",n);}

}

该程序段的输出结果是(B).

A:

987

B:

876

C:

8765

D:

9876

第14题(2.0分)

以下程序的输出结果是(D).

#include

voidmain()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d%d",x––,y);

}

A:

10192

B:

9876

C:

10990

D:

101091

第15题(2.0分)

有如下程序:

#include

voidmain()

{intn[5]={0,0,0},i,k=2;

for(i=0;i

{printf("%d\n",n[k]);}

}

该程序的输出结果是(D).

A:

不确定的值

B:

2

C:

1

D:

0

第16题(2.0分)

下列程序执行后的输出结果是(A).

#include

voidmain()

{chararr[2][4];

strcpy(arr,"you");strcpy(arr[1],"me");

arr[0][3]='&';

printf("%s\n",arr);

}

A:

you&me

B:

you

C:

me

D:

err

第17题(2.0分)

以下程序的输出结果是(C).

#include

voidmain()

{inti,x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++)printf("%d,",x[i][2–i]);

}

A:

1,5,9,

B:

1,4,7,

C:

3,5,7,

D:

3,6,9,

第18题(2.0分)

以下数组定义中不正确的是(D).

A:

inta[2][3];

B:

intb[][3]={0,1,2,3};

C:

intc[100][100]={0};

D:

intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

第19题(2.0分)

以下能正确定义数组并正确赋初值的语句是(D).

A:

intN=5,b[N][N];

B:

inta[1][2]={{1},{3}};

C:

intc[2][]={{1,2},{3,4}};

D:

intd[3][2]={{1,2},{3,4}};

第20题(2.0分)

有以下程序:

inta=4;

intf(intn)

{

intt=0;staticinta=5;

if(n%2){inta=6;t+=a++;}

else{inta=7;t+=a++;}

returnt+a++;

}

main()

{

ints=a,i=0;

for(;i<2;i++)s+=f(i);

printf("d\n",s);

}

程序运行后的输出结果是(B)

A:

24

B:

28

C:

32

D:

36

第21题(2.0分)

以下正确的函数定义形式为(A)

A:

doublefun(intx,inty)

B:

doublefun(intx;y)

C:

doublefun(intx;inty)

D:

doublefun(intx,y)

第22题(2.0分)

C语言规定,函数返回值的类型是由(D)

A:

return语句中的表达式类型所决定的

B:

调用该函数时的主调函数类型所决定的

C:

调用该函数时系统临时决定的

D:

在定义该函数时所指定的函数类型所决定的

第23题(2.0分)

有以下程序:

输出结果是()(注:

5353)

voidswap1(intc0[],intc1[])

{intt;

t=c0[0];c0[0]=c1[0];c1[0]=t;

}

voidswap2(int*c0,int*c1)

{intt;

t=*c0;*c0=*c1;*c1=t;

}

main()

{inta[2]={3,5},b[2]={3,5};

swap1(a,a+1);swap2(&b[0],&b[1]);

printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);

}

A:

3553

B:

5335

C:

3535

D:

5353

第24题(2.0分)

以下程序的输出结果是(A).

amovep(int*p,int(*a)[3],intn)

{inti,j;

for(i=0;i

for(j=0;j

{*p=a[i][j];

p++;}

}

main()

{int*p,a[3][3]={{1,3,5},{2,4,6}};

p=(int*)malloc(100);

amovep(p,a,3);

printf("%d%d\n",p[2],p[5]);

free(p);

}

A)56

B)25

C)34

D)程序错误

第25题(2.0分)

有以下函数:

fun(char*a,char*b)

{while((*a!

='\0')&&(*b!

='\0')&&(*a==*b))

{a++;b++;}

return(*a–*b);}

该函数的功能是(D).

A:

计算a和b所指字符串的长度之差

B:

将b所指字符串复制到a所指字符串中

C:

将b所指字符串连接到a所指字符串后面

D:

比较a和b所指字符串的大小

第26题(2.0分)

有以下程序:

fun(charp[][10])

{intn=0,i;

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

if(p[i][0]=='T')n++;

returnn;

}

main()

{charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};

printf("%d\n",fun(str));

}

程序执行后的输出结果是(B).

A:

1

B:

2

C:

3

D:

0

第27题(2.0分)

有以下程序:

main()

{charstr[][10]={"China","Beijing"},*p=str;

printf("%s\n",p+10);

}

程序运行后的输出结果是(B).

A:

China

B:

Beijing

C:

ng

D:

ing

第28题(2.0分)

有以下程序:

#definef(x)(x*x)

main()

{inti1,i2;

i1=f(8)/f(4)i2=f(4+4)/f(2+2)

printf("%d,%d\n",i1,i2);

}

程序运行后的输出结果是(C).

A:

64,28

B:

4,4

C:

4,3

D:

64,64

第29题(2.0分)

有以下程序:

结果是(A)

voidchange(intk[]){k[0]=k[5];}

main()

{intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;

while(n<=4){change(&x[n]);n++;}

for(n=0;n<5;n++)printf("%d",x[n]);

printf("\n");

}

A)678910

B)13579

C)12345

D)62345

A:

678910

B:

13579

C:

12345

D:

62345

第30题(2.0分)

在以下程序中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是(C).

A:

main()

int*p;

fun(p);…}

intfun(int*p)

{ints;

p=&s;}

B:

main()

{int*p;

fun(&p);…}

intfun(int**p)

{ints;

*p=&s;}

C:

#include

main()

{int*p;

fun(&p);…}

intfun(int**p)

{*p=(int*)malloc

(2);}…

D:

#include

main()

{int*p;

fun(p);…}

intfun(int*p)

{p=(int*)malloc(sizeof(int));}

二、程序填空共1题(共计10分)

第1题(10.0分)

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

功能:

计算平均成绩并统计90分以上人数。

-------------------------------------------------------*/

main()

{

intn,m;floatgrade,average;

/***********SPACE***********/

average=n=m=【?

】;//此处为:

0

while

(1)

{

/***********SPACE***********/

【?

】("%f",&grade);//此处为:

scanf

if(grade<0)break;

n++;

average+=grade;

/***********SPACE***********/

if(grade<90)【?

】;//此处为:

break

m++;

}

if(n)printf("%.2f%d\n",average/n,m);

}

三、程序改错共1题(共计10分)

第1题(10.0分)

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:

首先把b所指字符串中的字符按逆序存放,然后将a所指字

符串中的字符和b所指字符串中的字符,按排列的顺序交叉

合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。

例如:

当a所指字符串中的内容为“abcdefg”,b所指字符串中的

内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1

efg”;而当a所指字符串中的内容为“1234”,b所指字符

串中的内容为“abcdefg”时,c所指数组中的内容应该为

“1g2f3e4dcba”。

------------------------------------------------------*/

#include

#include

#include

voidfun(char*a,char*b,char*c)

{

inti,j;

charch;

i=0;

j=strlen(b)-1;

/**********FOUND**********/

while(i>j)//此处>改为<

{

ch=b[i];

b[i]=b[j];

b[j]=ch;

i++;j--;

}

/**********FOUND**********/

while(*a&&*b)//此处&&改为||(逻辑或)

{

if(*a)

{

*c=*a;

c++;

/**********FOUND**********/

a+;//此处a++

}

if(*b)

{

*c=*b;

c++;

b++;

}

}

*c=0;

}

main()

{

chars1[100],s2[100],t[200];

clrscr();

printf("\nEnters1string:

");

scanf("%s",s1);

printf("\nEnters2string:

");

scanf("%s",s2);

fun(s1,s2,t);

printf("\nTheresultis:

%s\n",t);

}

四、程序设计共1题(共计20分)

第1题(20.0分)

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:

判断一个整数w的各位数字平方之和能否被5整除,

可以被5整除则返回1,否则返回0。

------------------------------------------------*/

#include"stdio.h"

#include"conio.h"

intfun(intw)

{

/**********Program**********/

ints=0,m=w;

while(m){s+=(m%10)*(m%10);m/=10;}

if(s%5==0)return1;

elsereturn0;

/**********End**********/

}

main()

{

intm;

printf("Enterm:

");

scanf("%d",&m);

printf("\nTheresultis%d\n",fun(m));

yzj();

getch();

}

yzj()

{

FILE*IN,*OUT;

intc;

intt;

into;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("ReadFileError");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("WriteFileError");

}for(c=1;c<=5;c++)

{

fscanf(IN,"%d",&t);

o=fun(t);

fprintf(OUT,"%d\n",o);

}

fclose(IN);

fclose(OUT);

}

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

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1