C语言期末复习题.docx

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

C语言期末复习题.docx

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

C语言期末复习题.docx

C语言期末复习题

《C程序设计》复习题

一、单项选择题(请从4个备选答案中选择最适合的一项,每小题1分,共20分)

1.算法具有5个特性,以下选项中不属于算法特性的是()。

A)有穷性B)简洁性C)有效性D)确定性

2.设有定义:

floata=2,b=4,h=3;,其中a为梯形的上底,b为梯形的下底,h为梯形的高,以下C语言表达式不能计算出梯形面积的()

A)(a+b)*h/2B)(1/2)*(a+b)*hC)(a+b)*h*1/2D)h/2*(a+b)

3.经inta=7;floatx=2.5,y=4.7;说明后,表达式x+a%3*(int)(x+y)%2/4的值是()。

A)2.500000B)2.750000C)3.500000D)0.000000

4.若t为double类型,表达式t=1,t+5,++t的值是

A)1B)6.0

C)7.0D)2.0

5.若有以下定义和语句:

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

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

则输出结果是

A)8,16,10B)10,10,10

C)8,8,10D)8,10,10

6.以下选项中不合法的用户标识符是 

  A)_12  B)abc7  C)a-2  D)AS_88_mj

7.若有以下定义和语句

charc1='b',c2='e';

printf("%d,%c\n",c2-c1,c2-'a'+"A");

则输出结果是

A)2,MB)3,E

C)2,ED)输出项与对应的格式控制不一致,输出结果不确定

8.若有以下定义:

chars[20]="programming",*ps=s;

则不能代表字符o的表达式是

A)ps+2B)s[2]

C)ps[2]D)ps+=2,*ps

9.设变量a为int,f为float,i为double,则表达式10+‘a’+i*f的数据类型是()。

A)int型B)float型C)double型D)不确定

10.设a为int,不能正确表达数学关系:

10

A)10

C)a>10&&a<15D)!

(a<=10)&&!

(a>=15)

11.语句for(x=0,y=0;(y!

=123)&&(x<4);x++);循环()。

A)是无限循环B)循环次数不定C)执行4次D)执行3次

12.下面的程序

main()

{inta,b,s;

scanf("%d%d",&a,&b);

s=a;

if(s

s=s*s;

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

}

运行时,若从键盘输入3和2,则输出()。

A)14B)16C)18D)9

13.若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是

for(i=5;i;i--)

for(j=0;j<4;j++){...}

A)20B)25

C)24D)30

14.若已定义x和y为double类型,则表达式:

x=1,y=x+3/2的值是

A)1B)2

C)2.0D)2.5

15.在C语言中,不合法的字符常量是

  A)\014  B)\xab  C)’D’  D)”e”

16.C语言中用于结构化程序设计的三种基本结构是

A)if、switch、whileB)for、while、do-while

C)if、while、continueD)顺序结构、选择结构、循环结构

17.已知a=1,b=2,c=3,d=4,则表达式a

a:

c

a:

d的结果是

A)4B)3

C)1D)2

18.若执行下面程序时,从键盘输入"3,4",则输出是()。

main()

{inta,b,s;

scanf("%d,%d",&a,&b);

s=a;

if(a

else

s=s*s;

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

A)4B)16C)18D)20

19.若函数的类型和return语句中的表达式的类型不一致,则()。

A)编译时出错

B)运行时出现不正确的结果

C)不会出错,且返回值的类型以return语句中表达式的类型为准

D)不会出错,且返回值的类型以函数类型为准

20.在C语言程序中,以下叙述正确的是()。

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

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

C)函数的定义和函数的调用均不能嵌套

D)函数的定义不能嵌套,但函数的调用可以嵌套

21.若用数组名作为函数调用的实参,则传递给形参的是()。

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

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

22.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()。

A)外部(extern)B)寄存器(register)C)自动(atuo)D)静态(static)

23.在下面一组运算符中,优先级最高的运算符是

A)<=B)=

C)%D)&&

24.有如下函数调用语句

   func(rec1,rec2+rec3,rec4);

   该函数调用语句中,含有的实参个数是

  A)3  B)4  C)5  D)有语法错

25.表示关系X<=Y<=Z的c语言表达式为

A)(X<=Y)&&(Y<=Z)B)(X<=Y)AND(Y<=Z) 

C)(X<=Y<=Z)D)(X<=Y)&(Y<=Z)

26.C语言中,若未说明函数的类型,则系统默认该函数的类型是()。

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

27.若定义数组inta[3][4];,并以f(a)语句调用函数f,则在定义f函数时,对形参数组array错误的定义方式为()。

A)f(intarray[][6])B)f(intarray[3][])

C)f(intarray[][4])D)f(intarray[2][5])

28.下列一维数组初始化语句中,正确的是()。

A)inta[5]={0,2,0,3,5};B)inta[5]=0;

C)inta[5]={5*2};D)inta[]=(0,2,0,3,7);

29.现要定义一个二维字符型数组c[M][N]来存放字符串"China","Tianjin"和"Education",则常量M和N的合理取值应为()。

A)3和9B)2和10C)4和9D)3和10

30.若有说明charc[]={'N','a','n','K','a','i'};则对其元素的非法引用是()。

A)c[0]B)c[9-6]C)c[2*2]D)c[7]

31.在C语言中,运算对象必须是整型的运算符是

  A)*B)%C)/D)!

32.设有以下宏定义:

  #defineN3

  #defineY(n)((N+1)*n)

  则执行语句:

z=2*(N+Y(5+1));后,z的值为

A)出错B)42C)48D)54

33.以下结构体变量的字节数是

structstudent

{

intnum;

charname[8];

doublescore;

union

{intclass;

charposition[10];

}category;

}stu;

A)18B)30C)28D)32

34.若有代数式

,则错误的表达式是

A)a/b/c*eB)a*e/c/bC)a*e/b/cD)a*e/b*c

35.要将字符串str2连接到字符串str1后,应使用的函数是()。

A)strcpy(str1,str2);B)strcat(str2,str1);

C)strcat(str1,str2);D)strcmp(str2,str1);

36.若定义inta=8,b,*p=&b;则赋值语句p=&a执行后,结果为()。

A)p同时指向a和bB)p指向a,而不再指向b

C)p指向b,而b取a的值D)p指向a,a取b的值

37.定义以下结构体类型

structs

{

inta;

floatf;

}m[3];

语句printf("%d",sizeof(m))的输出结果为()。

A)4B)12C)18D)6

38.下面程序的输出是

main()

{

intx=32;

printf("%d\n",x=x<<1);

}

A)100B)160C)120D)64

39.不正确的转义字符是

A)“\018”B)“\’”C)“\xaa”D)“\\”

40.以下程序执行后sum的值是

voidmain()

{inti,sum;

for(i=1;i<6;i++)

sum+=i;

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

}

A)15B)14C)不确定D)0

二、程序填空题(每空1分)

1.以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以及平均分放在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writrec函数输出3名学生的记录。

请填空。

#include

#defineN3

structstud

{charnum[5],name[10];

ints[4];

intave;

}st[N];

writrec(structstud*s)

{intk,i;

printf("num\tname\tmark1\tmark2\tmark3\tmark4\tave\n");

for(k=0;k<3;k++,s++)

{printf("%s\t%s\t",s->num,s->name);

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

printf("%d\t",s->s[i]);

printf("%d\n",s->ave);

}

}

readrec(structstud*p)

{inti,j,sum;

for(j=0;j

{gets(p->num);

gets(p->name);

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

scanf("%d",&p->s[i]);

getchar();

sum=0;

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

sum+=p->s[i];

p->ave=sum/4;

}

}

main()

{

readrec(st);

writrec(st);

}

2.求1!

+3!

+5!

+7!

+…+21!

之和

#include

voidmain()

{floats,t;

intn;

s=0;

t=1;

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

{

t=t*n;

if(n%2!

=0)s+=t;

}

printf(“1!

+3!

+5!

+7!

+…+21!

=%e\n”,s);

}

3.用数组来处理求Fibonacci数列(即:

1,1,2,3,5,8,13……)问题,每行控制输出5个数据。

#include

voidmain()

 {

inti;

intf[20]={1,1};

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

f[i]=f[i-1]+f[i-2];

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

{

if(i%5==0)printf(“\n”);

printf(“%12d”,f[i]);

 }

 printf(“\n”);

}

4.以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以及平均分放在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writrec函数输出3名学生的记录。

请填空。

#include

structstud

{charnum[5],name[10];

ints[4];

intave;

};

writrec(structstud*s)

{intk,i;

for(k=0;k<3;k++,s++)

{printf("num:

%sname:

%s\n",s->num,s->name);

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

printf("mark:

%5d",s->s[i]);

printf("ave:

%5d\n",s->ave);

}

}

readrec(structstud*rec)

{inti,sum;

gets(rec->num);

gets(rec->name);

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

scanf("%d",&rec->s[i]);

getchar();

sum=0;

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

sum+=rec->s[i];

rec->ave=sum/4;

}

main()

{structstudst[30];

intk;

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

readrec(&st[k]);

writrec(st);

}

5.下面程序把文件file1.dat中的内容复制到一个名为file2.dat的新文件中,请填空。

#include

FILE*fp1,*fp2;

main()

{charch;

if((fp1=fopen(“file1.dat”,”r”))==NULL)exit(0);

if((fp2=fopen(“file2.dat”,”w”))==NULL)exit(0);

while(fp1!

=EOF){ch=fgetc(fp1);fputc(ch,fp2);}

fclose(fp1);fclose(fp2);

}

三、读程序写运行结果(每小题2分,共30分)

1.下面程序运行后,输出结果是

#include

main()

{inta=4,b=7;

printf(“%d\n”,(a=a+1,b+a,b+1));

}

2.下面程序运行后,输出结果是

#include

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf(“%3.0f\n”,fun((int)fun(a+c,b),a-c));

}

3.下面程序运行后,输出结果是

#include

main()

{intk=017,g=111;

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

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

}

4.下面程序运行后,输出结果是

#include

main()

{intm=7,n=4;

floata=38.4,b=6.4,x;

x=m/2+n*a/b+1/2;

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

}

5.下面程序运行后,输出结果是

#include

main()

{inta=9;

a+=a-=a+a;

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

}

6.以下程序运行后的输出结果是

#include

voidmain()

{inti,n[]={0,0,0,0,0};

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

{

n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

7.下面程序运行后,输出结果是

#include

voidmain()

{chars[]="after",c;

inti,j=0;

for(i=1;i<5;i++)

if(s[j]

{c=s[j];s[j]=s[i];s[i]=c;}

printf("%s",s);

}

8.以下程序执行后的输出结果是

#include

voidmain()

{char*s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

9.以下程序运行后的输出结果是

#include

#defineN20

fun(inta[],intn,intm)

{inti;

for(i=m;i>=n;i--)

a[i+1]=a[i];

}

voidmain()

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

fun(a,2,9);

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

printf("%d",a[i]);

}

10.写出下列程序结果

#include

intm=1;

intfun(intm)

{intn=1;

staticinti=1;

n++;i++;

returnm+n+i;

}

voidmain()

{

inti;

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

printf("%4d",fun(m++));

printf("\n");

}

11.已知字母a的ASCII码是为十进制的97,下面程序的输出是

main()

{charc1,c2;

c1=’a’+’6’-‘2’;

c2=’a’+’6’-‘3’;

printf(“%c,%d\n”,c2,c1);

}

12.下列语句的输出结果是

chara=31;

printf(“%d,%o,%x,%u\n”,a,a,a,a);

13.下面程序运行后,输出结果是

#include

voidmain()

{intj,x=0;

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

{if(j%2)continue;

x++;

}

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

}

14.下面程序运行后,输出结果是

voidmain()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:

a++;break;

case1:

b++;break;

}

case2:

a++;b++;break;

case3:

a++;b++;

}

printf(“\na=%d,b=%d”,a,b);

}

15.下面程序运行后,输出结果是

#include

#defineMAX(a,b,c)((a)>(b)?

((a)>(c)?

(a):

(c)):

((b)>(c)?

(b):

(c)))

voidmain()

{intx,y,z;

x=1,y=2,z=3;

printf("%d\n",MAX(x+y,y,y+x));

}

16.有以下程序程序的执行结果是

#include

charfun(charx,chary)

{

if(x

returny;

}

voidmain()

{

chara='9',b='8',c='7';

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

}

17.以下程序执行后输出结果是

#include

voidmain()

{

intp[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2)

{k=k+p[i];i++;}

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

}

18.定义以下结构体数组

struct

{intnum;

charname[10];

}s[3]={1,"china",3,"USA",4,"England"};

语句printf("\n%d,%s",s[0].num,s[1].name)的输出结果为。

19.以下程序执行后输出结果是

#include

floatfun(intx,inty)

{

return(x-y);

}

main()

{inta=2,b=5,c=8;

printf(“%3.0f\n”,fun((int)fun(a+c,b),a-c));

}

20.下面程序运行后,输出结果是

#include

main()

{intk=015,g=112;

printf("%d\t",++k);

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

}

21.下面程序运行后,输出结果是

#include

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

voidmain()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

22.下面程序运行后,输出结果是

#include

voidmain()

{unsignedchara,b,c;

a=0x3;b=a|0x8;c=b

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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