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

下载本文档

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

文档简介

C语言期末练习题

一、选择题

1.____是C语言合法的常量。

(A).45(B)078(025.6e3.4(D)'xy'

2.一个程序的执行是从o

(A)本程序的main函数开始,到main函数结束

(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结

W.束.

耕(C)本程序的main函数开始,到本程序文件的最后一个函数结束。

(D)本程序文件的第一个函数开始,到main函数结束。

3.以下叙述正确的是o

(A)在C程序中,main函数必须位于程序的最前面。

(B)C程序每行中只能写一条语句。

N(C)C语言本是没有输入输出语句。

(D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。

4.以下叙述不正确的是。

(A)逗号运算符的运算级最低。

(B)ABC和abc是两个不同的变量。

S(C)若a和b类型相同,在执行a二b后,b的自身值不变。

(D)匕'和"a”是完全等价的常量。

5.intx=3,y=2;则表达式x+=x*=y+8的值为。

(A)28(B)30(C)60(D)17

6.设x=2.7,a=8,y=4.9,算术表达式x+a%3*(int)(x+y)%5/3的值为。

(A)2.7(B)3.7(C)4.7(D)4.03

7.执行下面两个语句后,输出的结果为o

charcl=98;

printf("%d%c",cl,cl-32);

(A)9766(B)98b(C)b66(D)98B

8.执行下面语句后的结果为。

y=10;x=y++;

(A)x=10,y=10(B)x=l1,y=l1(C):《=10,y=ll(D)x=ll,y=10

9.Charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型是。

(A)double(B)char(C)int(D)float

10.C语言中要求操作数必须是整数的运算符是o

(

浦(A)/(B)%(O!=(D)=

,11.用scanf("%d,%d”,&a,&b)输入数据时,下面输入法中正确的是。

)(A)123,4(B)1234(C)123;4(D)

鉴12.以下关于运算符优先顺序的描述中正确的是

(A)关系运算符〈算术运算符〈赋值运算符〈逻辑与运算符

(B)逻辑与运算符〈关系运算符V算术运算符V赋值运算符

地(O赋值运算符<逻辑与运算符V关系运算符V算术运算符

外(D)算术运算符V关系运算符V赋值运算符V逻辑与运算符

y

d13.下列程序段中,功能与其它程序段不同的是o

(A)for(i=l,p=l;i<=5;i++)p*=i;

(B)for(i=l;i<=5;){p=l;p*=i;i+-;}

(C)i=l;p=l;while(i<=5){p*=i;i++;)

(D)i=l;p=l;do{p*=i;i++;}while(i<=5);

14.C语言规定else总是与配对。

(A)缩进位置相同的if(B)同一行上的if

(C)其之前最近的if(D)其之后最近的if

15.以下程序的运行结果为o

main()

{intn;

for(n=1;n<=10;n++)

{if(n%3==0)continue;printf("%d",n);}

)

(A)12457810(B)369(C)12(D)12345678910

16.设x和y均为ini型变量,则语句x+二y;y二x—y;x—=y;的功能是—

(A)把x和y按从大到小排列(B)把x和y按从小到大排列

(C)无确定结果(D)交换x和y中的值

17.变量的指针,其含义是指该变量的

(A)值(B)地址(C)名(D)一个标志

18.以下函数调用语句中含有个实参。

func((el,e2),(e3,c4,c5));

(A)2(B)3(C)5(D)语法错误

19.以下正确的描述是

(A)continue语句的作用是结束整个循环的执行

(B)只能在循环体内和switch语句体内使月break语句

(C)在循环体内使用break语句或continue语句的作用相同

(D)goto语句只能用于退出多层循环

20.以下程序运行的结果是o

main()

{inta=2,b=3,c=2;

if(a<b)

if(a<c)

c--;

else

c+=l;

printf(a%d\nv,c);

I

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

21.inta[4]={2,3,4},I;

i=a[0]*a[l]+a[2]*a[3];

i的值为O

(A)2(B)4(C)6(D)10

22.以下正确的函数定义形式是o

(A)doublefun(intx,inty);

(B)doublefun(intx;inty)

(C)doublefun(intx,inty)

(D)doublefun(intx,y)

23.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。

(A)float型(B)int型(C)long型(D)double型

24.若有定义inta[4]={l,2,3};

请问a[a[a[0川的值是。

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

25.以下正确的描述是___________

(A)函数的定义可以嵌套,函数的调用不可以嵌套

(B)函数的定义不可以嵌套,函数的调用可以嵌套

(C)函数的定义和函数的调用均不可以嵌套

(D)函数的定义和函数的调用均可以嵌套

26.以下不正确的说法是___________

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

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

(C)形参是局部变量

(D)函数调用结束后,静态局部变量的值仍然保留。

27.已有定义:intx=3,y=4,z=5;

则表达式!(xiy)+z-l&&yiz/2的值是。

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

28.main()

{intn[4]={l,2,3,4},k;

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

{if(k/2)break;

n[k]++;

}

printf(<t%d\n,\n[++k]);

)

执行后输出的结果是。

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

29.判断字符串是否相等,应当使用。

(A)if(a==b)(B)if(a=b)(C)if(strcpy(a,b))(D)if(!strcmp(a,b))

3().以下程序运行结果是o

voidsub(intx,inty,int*z)

{*z=y-x;}

main()

{inta,b,c;

sub(11,7,&a);sub(5,a,&b);sub(a,b,&c);

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

}

(A)-4,-9,-5(B)-4,9,5(C)4,-9,-5(D)-4,9,-5

31.以下程序运行结果是o

main()

{inta[2][3]={l,3,5,4,7,6},i,j,b=a[0][0];

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

for(j=0;j<3;j++)

if(b<a[i][j])

b=a[i]U];

printf("%d\n”,b);

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

32.以下程序运行结果是o

main()

{chars[50]=MIamastudent,c;

inti,num=0,word=0;

for(i=0;c=s[i];i++)

jf(c==")word=0;

elseif(word==0)

{word=l;num++;}

printf("%d'n'',num);

)

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

33.以下程序运行结果是o

#include<string.h>

main()

{chars[50]=,,1234567n,*p=s;

inti;

i=*(p+5)-*(p+2);

printf(<t%d\n,\i*strlen(s));

)

(A)21(B)24(C)14(D)28

34.以下程序运行结果是o

main()

{inta[]={l,2,3,4,5,6,7,8,9),i,j,k;

for(i=0,j=8;i<j;i++j-)

{k=a[i];a[i]=a[j];a[j]=k;}

primf("%d\n”,a[l]+a[5]);

)

(A)11(B)12(C)13(D)14

35.以下程序运行结果是o

main()

{intx[]={l,2,3},s,*p=x,i;

for(i=0,s=l;i<3;i+4-,p++)

s*=*p;

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

)

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

36.设有语句:inta[:0]={0,l,2,3,4,5,6,7,8,9},*p二a;以下对数组a

中的数组元素的不正确引用是()0

Aa[p-a]B*(&a[i])Cp[i]D*&(a+i))

37.下列程序的输出结果是()

#include<stdio.h>

^defineMIN(x,y>(x)<(y)?(x):(y)

main()

{inti,j,k;

i=10;j=15;

k=10*MIN(i,j);printf("%d\n”,k);}

A15B100C10D150

38.以下描述中不正确的是()o

A数组是一批类型相同的若干个元素的集合

B数组的各个元素的类型可以不同

C数组在内存中占用一块连续的存储空间

D数组是一种构造类型

39.可用作C语言用户标识的一组标识符()。

AviodBa3_b3CForD2a

define_123-abcDO

WORDIFCasesizeof

40.已知i,j,k为int型变量,若从键盘输入1,2,3回车,使i的值为

1,j的值为2,k的值为3,以下选项中正确的输入语句是()。

Ascanf(<<%2d%2d%2dw

Bscanf(“%d%d%d",&i,&j,&k);

Cscanf(^%d,%d,%dw,&i,&j,&k);

Dscanf(i=%d,j=%d,k=%dw,&i,&j,&k);

41.与y=(x>0?l:x<0?1:0);的功能相同的if语句是()o

Aif(x>0)y=l;Bif(x)

elseif(x<0)y=-l;if(x>0)y=l;

elsey=0;elseif(x<0)y=-l;

elsey=0;

Cy=-l;0y=0;

if(x)if(x>=0)

if(x>0)y=l;if(x>0)y=l;

elseif(x-0)y=0;elsey=-l;elsey=-l;

42.下列程序输出的结果是()o

main()

{inta=0,i;for(i=l;i<5;i++){

switch(i)

{case0:

case3:a-=2;

case1:

case2:a+=3;

default:a+=5;}}

printf["%d\n",a);

A31B13C10D20

43.下列程序中,whih循环次数是()o

main()

{inti=0;

while(i<10){

if(i<l)continue;

if(i==5)break;

i++;}}

A1B10C6D死循环,不能确定次数

44.以下说法中正确的是()。

AC语言程序总是从第一个函数开始执行

B在C语言程序中,要调用的函数必须在main。函数中定义

CC语言程序总是从main。函数开始执行

DC语言程序中的main。函数必须放在程序的开始部分

45.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是

()。

A地址传递B值传递C由用户指定传递方式

D由实参传给形参,并由形参传回来给实参

46.设有:int[10],i=5;,以下对数组元素引用不正确的是()。

Aa[9]BA[0]Ca[i]Da[i-5]

47.若有定义:inti,j,*p二&i,则与i=j等价的语句是()。

Ai=*p;B*p=4j;Ci=&j;Di=**p;

48.设a,b和c都是整型变量,且a=3,b=4,c=5;则以下表达式中,值为0

的表达式是()o

Aa&&bBa<=bCa||b+c&&b-cD!;(a<b)&&!cI1)

49、下面标识符中,不合法的用户标识符为()

A)PadB)a_10C)_12abD)int

50、调用scanf("%d,%d”,&a,&b);时,正赢的键盘输入是()

A)10,20B)a=10,b=20

C)10:20D)1()20

51、能表示条件0<xW100的表达式是()

A)()<=x<=100B.x>=0,x<=100

C)0WxW100D)x>=0&&x<=100

52、设有:inta=l,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后n的值为()

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

53、下面不正确的字符串常量是()

A)'abc'B)"12,12HC)"0”D)"”

54、对字符串“Cat”进行完整赋值的操作是()

A)chars[3]={'C,B)charsfl="Cat”;

C)chars[3]={"Cat"};D)chars[3J;s="Cat";

55、若a为int类型,且其值为3,则执行完表达式a4-=a-=a*a后,a的值是

()

A)-3B)9C)-12D)6

56、设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是

printf("%d,%d\n”,x--,--y);()

A)10,3B)9,3C)9,2D)IO,2

57、在TurboC中,设inta[10];假设数组a开始于内存2000单元,则a⑵狗存

储始于()

A)2002B)2004C)2006D)2008

58、在C语言中,引用数组元素时,其数组下标的数据类型允许是()

A)整型常量B)整型表达式

C)整型常量或整型表达式D)任何类型的表达式

59、若有若ts[4]={1,2,3,4};,则s[s[0]+2*s[2]-s⑶]的值是()

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

60、用数组名作为函数的实参时,传递给形参的是()

A)数组的首地址B)数组的第1个元素

C)数组中的全部元素D)数组的元素个数

61、以下程序的输出结果是()

main()

{charch[3][5]={

A)“AAAA"B)“BBB”C)"BBBCC"D)"CCM

62、有以下程序段

intk=0;

while(k=l)k++;

while循环执行的次数是()

A)无限次B)有语法错,不能执行

C)一次也不执行D)执行1次

63、设有以下说明语句

structstu

{inta;

floatb;

}slulype;

则下面的叙述不正确的是()

A)struct是结构体类型的关键字B)struclslu是用户定义的结构体类型

C)stutypc是用户定义的结构体类型名D)a和b都是结构体成员名

二、填空题

1、C语言程序的三种基本结构是、、。

2、一个C程序有且仅有一个函数。

3、C语言描述“x和y都大于或等于z”的表达式是。

4、C语言可以用来实现循环的结构化语句是、、o

5、数组名表示数组在内存的o

6、inta=3,*p=&a;*p+2的值是。

7、变量的作用域是指变量的有效范围,在作用域内可以引用该变量。

按作用域来说,变量可以分为变量和变量。

8、如果程序中已有定义:intk;通过指针变量,将数值10赋值给k的

句是o

9、设a,b,c,d,m,n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则

逻辑表达式(m=a〈b)&&(n二c<d)运算后,m,n的值分别为。

10、当函数的返回值的类型与函数定义的类型不一致时,系统

11、C语言中,变量是指________________________________________

12、指针变量是把内存中另一个数据的作为其值的变量。

13、C语言源程序文件的后缀是,经过编译后,生成文件的后缀是

经过连接后,生成文件的后缀是o

14、若x为double型变量,请写出运算x=3.2,++x后表达式的值_______和

变量的值________。_

15>若有定义:intx,a;则语句x=(a=3,a+l);运行后,x=,a=。

16、有下列程序段:

s=l.0;

for(k=l;k<=10;k++)

s=s+l.0/(k*(k+1));

printf(“%f\n”,s);

试填空,使下列的程序段的功能完全与之等同。

s=0.0;

d=0.0;

do{s=s+d;;

d=l.0/Ik*(k+1));}while();

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

17、如果不指定精度,格式字符e,E和f默认输出小数点后位小数。

18、下列程序的输出结果是()。

#include<string>

main()

{charb[30];

strcpy(&b[0],wAB");

strcpy(&b[l],wCDE");

strcpy(&b[2],vFGH");

printf("%s\n",b);}

n

19、下列程序的功能是计算s二Ek!,请填空。

k=0

longf(intn)

{inti;longs;

s=l;

for(i=l;;i++)s*=i;

return;}

main()

{longs;intk,n;

scanf(“机1",&n);

for(k=0;k<=n;k++)s+=;

printf(“机d\n",s);}

20、下列程序的输出结果是

ffdefineN20

#defines(x)x^x

ftdefinef(x)(x*x)

main()

{inti1,i2;

il=800/s(N);i2=800/f(N);

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

21、下列程序由两个文件组成,其运行结果是。

/*文件1*//*文件2*/

intx;staticintx=5;

sub()main()

sub()

printf(<<x=%d\nw,x);

}

22、补充以下缺省的程序,实现求两个整型数的和:

intsum(intx,inty)

(

intz;

z=x+y;

return;

}

main()

(

inta,b,s;

printf("pleaseenteraandb:“);

scanf(“刎%d”,&a,&b);

s二________

printf(w%d+%d=%d\n?,,a,b,s);

)

三、阅读题(每小题5分,共20分)

1.写出下列程序的运行结果()。

main()

{inta=100;

if(a<=50)

printf(,a<=50);

elseif(a>50)

printf(<<%d\nw,a>50);}

2.写出下列程序的输出结果()。

main()

{intn=b;

switch(n)

{default:printf(<<error\nn);break:

case'a':case'b'printf("good'n");break;

case'c':printf("pass\n");break;

case'd':printf("warn\n");break;})

3.写出下列程序的运行结果()o

#include<stdio.h>

main()

{inti,s=0;

for(i=l;i<3;i++)

s+=i;

printf(“%d\n”,s);}

4.写出下列程序的输出结果()o

main()

{inti=10,j=0;

do

{j=j+l;i—;}

while(i>2);

printf(u%d\nv,j);

5.有下列程序段,请写出运行结果。

func(intx)

{inty=13;

x=x+y;

returnx;

)

main()

{intx=3;

func(x);

printf("%d",x+x);

)

输出:

6.有下面程序段,请写出运行结果

main()

{intsum,j;

for(j=1;j<=100;j++){sum=0;sum=sum+j;}

printf(4tsumis%d”,sum);

)

输出:

7.有下面程序段,请写出运行结果

main()

{

floata=3.4;

intb;

b=a*3;

printft'%d”,b);

)

输出:

8.有以下程序,请写出运行结果。

main()

{intx,n;

for(n=1;n<=50;n++)

{x=n;

if(x%2==0)

if(x%3==0)

if(x%7==0)

printf(n%dn,n);

)

)

输出:

9.以下程序,请写出运行结果

main()

{chargrade;

grade='B';

switch(grade)

{case'A':priiHf("excellenl‘');

case'B':printf("pass'>

case'C':primfCfailure");

)

)

输出:

10.运行以下程序片段,输出的结果是:()

#include<stdio.h>

main()

{inta=l,b=2;

printf(z,%d,〃,func;a,b));

printf(z/%d/z,func(aib));

}

func(intx,y)

{staticinta=0,b=l;

a=b*2;

b=a+x+y;

return(b);

}

11.下面程序的输出结果是:()

^defineMAX5

inta[MAX],k;

main()

{fun1();fun3();

fun2();fun3();

printfC\nz,);

)

funl()

{for(k=0;k<MAX;k++)a[k]=k+k;}

fun2()

{inta[MAX],k;

for(k=0;k<5;k++)a[k]=k;

)

fun3()

{intk;

for(k=0;k<MAX;k++)printf("%d”,*(a+k));

)

12.请写出以下程序的瑜出结果:()

#iclude<stdio.h>

main()

{inta□二{1,2,3,4},i;

intx=0;

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

{sub(a,x);printfx);

)

printf(〃\n〃);

)

sub(s,x)

int*s,x;

{staticintt=3;

x=s[t];t—;

return(x);

13.请写出以下程序的瑜出结果:()

#include<stdio.h>

fun(s,nl,n2)

int*s,nl,n2;

{inti,j,t;

i二nl;j=n2;

while(i<j)

{L-*(s+i);*(s+i)-*(s+j)

i++;j—;

}

)

main()

{inta[10]={l,2,3,4,5,6,7,8,9,0),i,*p=a;

fun(p,0,3);fun(p,4,9);fun(p,0,9);

for(i=0;i<10;i++)printfC%d",*(a+i));

printf(〃\n〃);

)

四、改错题(每处4分,共12分)

请把/*......*/内的错误改正。写在旁边的横线上。

1.以下程序用来统计字符串s中的空格的个数,改正其中的错误。

#include<stdio.h>

/*Main()*/_____________________

(

charstr[255];

gets(str);

printf("空格个数为:%d\n,,,fun(str));

I

intfun(char*s)

(

intn=();

char*p=s;

while(*(p++))

if(*p=='')n++;

retucnn;

)

2.求1到10的和。改正其中的错误。

main()

(

/*inti;s=O;*/_____________________

for(i=l;i<=IO;i++)

s=s+i;

/*prinlf("%L,s);_____________________

3:将一个字符串中的大写字母转换成小写字母。

例如:输入aSdFG输出为asdfg。

#include<stdio.h>

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

chafun(char*c)

if(*c<-Z*&&*c>-A^^c--A'-'a';

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

returnc;

main()

chars[81l,*p=s;

gets(s);

while(*p)

*p=fun(p);

printf(H%cn,p);

P++;

)

puichar('\n');

4:下列给定程序中,函数fun的功能是:判断m是否为素数,

若是返回1,否则返回0。主函数的功能是:按每行5个输

出1・100之间的全部素数。

请改正程序中的4个错误,使它能得出正确的结果。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

.....................................*/

main()

inim,k=0;

for(m=l;m<1()();m++)

if(fun(m)==l)

printf(',%4d',,m);k++;

if(k%5==0)printf(H\n");

/**********FOUND**+*******/

voidfun(intm)

inti,k=1;

if(m<=l)k=0;

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

fbr(i=l;i<m;i++)

/**********FC)UND**********/

if(m%i=0)k=0;

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

returnm;

5:函数fun的功能是:求1到20的阶乘的和。

请改正程序中的错误,使它能得出正确的结果。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

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

fun()

intn,j;

floats=O.O,t=l.O;

for(n=1;n<=20;n++)

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

s=l;

for(j=l;jv=n;j++)

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

t=t*n;

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

s+t=s;

I

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

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

main()

fun();

6:函数fun的功能是:实现交换两个整数的值。例如给a和b

分别输入3和6,输出为a=6b=3

请改正程序中的4个错误,使它能得出正确的结果。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

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

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

voidfun(inta,b)

intt;

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

t=a;

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

a=b;

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

b=t;

main()

{

inta,b;

printf("entera,b:");scanf(n%d%d",&a,&b);

fun(&a,&b);

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

7:在一个一维整型数组中找出其中最大的数及其下标。

程序中共有4条错误语句,请改正错误。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

...................................*/

#defineN10

/****

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论