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

下载本文档

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

文档简介

《C程序设计》复习题

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

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

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*l/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=l,t+5,++t的值是

A)1B)6.0

C)7.oD)2.0

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

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

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

则输出结果是

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

08,8,10D)8,10,10

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

A)_12B)abc7C)a-2D)AS_88_mj

7.若有以下定义和语句

charcl-b',c2-e';

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

则输出结果是

A)2,MB)3fE

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

8.若有以下定义:

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

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

A)ps+2B)s[2]

C)ps⑵D)ps+=2,*ps

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

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

10.设a为int,不能正确表达数学关系:10<a<15的C语言表达式是()。

A)10<a<15B)a==ll||a二二12||a■二二13||a•二二14

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/z,&a,&b);

s=a;

if(s<b)s=b;

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=l,y=x+3/2的值是

A)1B)2

C)2.0D)2.5

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

A)\014B)\xabC)DD)”6"

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

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

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

环结构

17.已知a=l,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果是

A)4B)3

C)1D)2

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

main()

(inta,b,s;

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

s=a;

if(a<b)s=b;

else

s=s*s:

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

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

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

A)编译时出错

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

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

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

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

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

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

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

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

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

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

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

22.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则

该变量需要使用的存储类别是()。

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

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

A)<=B)=

C)%D)&&

24.有如下函数调用语句

func(recI,rec2+rec3,rec4);

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

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

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)intQ[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□二则对其元素的非法引用是()°

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+l)*n)

则执行语句:z=2*(N+Y(5+l));后,z的值为

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

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

structstudent

{

intnum;

chciriicinie[8];

doublescore;

union

{intclass;

charposition[10J;

}category;

Istu;

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连接到字符串strl后,应使用的函数是()。

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

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

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

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

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

37.定义以下结构体类型

structs

(

inta;

floatf;

}m[3];

语句pr句tfsizeof(m))的输出结果为()。

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

38.下面程序的输出是

main()

intx=32;

printf(z,%d\nz/,x=x«l);

)

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

39.不正确的转义字符是

A)R018”B)“rC)“\xaa”D)"\\"

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

voidniciiiiO

{inti,sum;

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

sum+=i;

printf(n%d\nH,sum);

1

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

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

1.以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以及平均分放

在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结

构体对应的域中,调用writrec函数输出3名学生的记录。请填空。

#include<stdio.h>

#dcfineN3

structstud

{charnum[5],namefl0];

ints[4];

intave;

}st[N];

writrec(structstud*s)

{intk,i;

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

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

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

primf("%d\l”,"N%/);

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

)

)

readrec(structstud*p)

{inti,j,sum;

for(j=0;j<N;j++,p++)

{gets(p->num);

gets(p->name);

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

scanf(n%d"):

getchar();

sum=0;

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

3UHl+=D->"i];

D・>ave=sum/4;

)

main()

readrec(st);

writrec(st);

)

2.求l!+3!+5!+7!+…+21!之和

4include<stdio.h>

voidmain()

{floats,t;

intn;

s=O:

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

(

t=t*n;

if(n%2!=0)s+=t;

)

printf(“l!+3!+5!+7!+-・・+21!=%e\n”,s);

)

3.用数组来处理求Fibonacci数列(即:1,1,2,3,5,8,13……)问题,每行控制输出

5个数据。

#include<stdio.h>

voidmain()

(

inti;

intf[20]=(I,1};

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

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

if(l%5==0)pr:ntf(“\n");

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

}

printf(“\n”);

)

4.以下程序调用readrec函数读入数据,把3名学生的学号、姓名、四门成绩以及平均分放

在一个结构体数组中,学生的学号、姓名和四门成绩由键盘输入,然后计算出平均分放在结

构体对应的域中,调用writrec函数输出3名学生的记录。请填空。

#include<stdio.h>

structstud

{charnum[5],name[10];

ints[4];

intave;

);

vvritrcc(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",

printf(',ave:%5d\n,)^->ave);

)

)

rcadrcc(structstud*rcc)

{inti,sum;

gets(rec->/zum);

^(rec->name)\

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

scanfC'%d'\&rec->sfif);

getchar();

sum=();

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

sum+=rec->sfi];

rec->ave=sun\/4;

)

main()

{structsludst[30];

intk;

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

readrec(&st[k]);

writrec(st);

)

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

#include<stdio.h>

FILE

main()

{charch;

if((fp1=fdpenftfile1,daf;V2))==NULL)exit(O);

if((fp2=fbpen(<4file2.dat,\^v3)==NULL)exit(O);

whi\e(fpl!=EOF){ch=fgetc(fpl);fputc(ch,fp2);}

fclose(fpl);fclose(fp2);

)

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

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

#include<stdio.h>

main()

{inta=4,b=7;

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

)

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

#include<stdio.h>

floatfun(intx,inty)

{return(x+y);J

main()

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

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

)

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

#include<stdio.h>

main()

{intk=017,g=lll;

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

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

)

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

#include<stdio.h>

main()

{intm=7,n=4;

floata=38.4,b=6.4,x;

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

printf(u%f\n,,,x);

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

#include<stdio.h>

main()

{inta=9;

a+=a-=a+a;

)

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

#include<stdio.h>

voidmainO

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

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

(

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

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

)

)

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

#include<stdio.h>

voidmain()

{chars口=〃after”,c;

inti,j=0;

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

if(s[j]<s[i])

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

printf(〃%s〃,s);

)

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

4include<stdio.h>

voidmain()

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

P=s[l];

printf(/z%c,%s\n/z,*(p+l),s[0]);

}

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

#include<sLdio.h>

#defineN20

fun(inta[],intn,intm)

{inti;

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

a[i+l]=a[i];

)

voidmain()

(inti,a[N]={l,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<stdio.h>

intm=l;

intfun(intm)

{intn=l;

staticinti=l;

n++;i++;

returnm+n+i;

)

voidmain()

(

inti;

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

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

printf(〃\n〃);

)

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

main()

{charcl,c2;

cl='a'+'6'・'2';

c2='a'+'6'-'3';

printfC*%c,%d\nv,c2,c1);

1

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

chara=31;

printf("%d,%o,%x,%u\rf',a,a,a,a);

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

#include<stdio.h>

voidmain()

{intj,x=O;

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

{if(j%2)continue;

x++;

)

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

)

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

voidmain()

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

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

I

case2:a++;b++;break;

case3:a++;b++;

)

printf(*4\na=%d,b=%d,\a,b);

}

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

#include<stdio.h>

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

voidmain()

{intx,y,z;

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

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

)

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

ftinclude<stdio.h>

charfun(charx,chary)

(

if(x<y)returnx;

returny;

)

voidmain()

(

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

printf(〃枇\n〃,fun(fun(a,b),fun(b,c)));

}

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

ttinclude<stdio.h>

voidmain()

(

intp[7]={ll,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」={l,"china”,3,"USA",4,"England"};

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

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

#includc<stdio.h>

floatfun(intx,inty)

(

return(x-y);

}

main()

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

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

}

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

#include<stdio.h>

main()

(intk=015,g=l12;

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

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

1

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

#include<stdio.h>

intf(intn)

{if(n=l)retum1;

elsereturnf(n-l)+l;)

voidmain()

{inti,j=0;

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

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

)

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

#include<stdio.h>

voidmain()

{unsignedchara,b,c;

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

printf(u%d%d\n,\b,c);

I

23.以下程序的输出结果是

#include<stdio.h>

voidmain。

{inta=12,b=12;

printf(H%d%d\nH,-a,++b);

)

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

#include<stdio.h>

voidmain()

{inta=7;

a+=a-=a+a;

printfT%d\rT,a);

)

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

#include<stdio.h>

voidmain()

{charcl,c2;

cl=b+6-2;

c2='c'+'6'-'3';

printf(t<%c,%d\n,,,c2,cl);

)

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

#include<stdio.h>

voidmain()

(

chara=25;

printf{4t%d,%o,%x,%u\n,,,a,a,a,a);

)

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

#include<stdio.h>

voidmain()

{intj,x=O;

for(j=0;jv=4;j++)

{if(j%2)continue;

x++;

)

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

1

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

#include<stdio.h>

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

voidmain()

{intx,y,z;

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

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

I

29.在执行以下程序时,如果从键盘上输入:ABCdef<回车〉,则输出为

#include<stdio.h>

voidmain()

{charch;

while((ch=getchar())!-\n')

{if(ch>=A&&ch<=Z)ch=ch+32;

elseif(ch>='a'&&ch<*z*)ch=ch-32;

printf("%c",ch);

1

printf("\n");

)

30.以下程序运行后

#include<stdio.h>

voidmain()

(

inti;

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

switch(i)

(

case1:printfi);

case2:printfi);

default:printfi);

}

四、程序改错题(每错2分)

1.下面程序中函数fun的功能是:根据整型形参m,计算如下公式的值:

#include<stdio.h>

doublefun(intm);

voidmain()

(

intm;

printf("inputanumber:");

scanf("%d",&m);

printf("%f\n'\fun(m));

)

doublefun(intm)

(

inti,l;

doubley;〃改为:doubley=0;

t=l;

for(i=l;i<m;i+4-)M改为:for(i=l;i<=m;i+^-)

{

t=t+i;H改为:

y+=l/t;H改为:y+=1.0/t;

}

returny;;

)

2.函数imfun(floats[],inin),它的功能是:求高于平均分的人数,并作为函数值返回。数组

s中存放n位学生的成绩。数组s的值由主函数从键盘读入

#include<stdio.h>

#dcfincN10

intfun(floatsfl,intn)

(

floatsum=(),pj;

intnum,i;H改为:intnum=0,i;

for(i=0;i<n;i++);H改为:for(i=0;i<n;i++)

sum+=s[i];

pj=sum/n;

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

if(s[i]>pj)num++;

returnnum;

)

voidmain()

(

inti;

floats[N],x;

printf(n\nPleaseentermarksofstudent:");

for(i=0:i<N;i++)

scanf("%f,x);H改为:scanfClo/ofn,&X);

*(s+i)=x;

1

printf("numberofstudent:%d\n",fun(s[N]));//改为:printf(rfnUmberof

student:fun(s,N));

}

3.根据从键盘输入的整数m计算如下公式的值。t=

1x22x33x4

#include<stdio.h>

doublefun(n)

(

doublex;

x=1.0/(i*(i+l));//改为:x=l.0/(n*(n+l));

return(x);

)

main()

(

doublet;//改为:doublet=l.0;

intm,i;

scanf&m);

for(i=l;i<=m;i++);//改为:for(1=1;i<=m;i++)

t=t+fun(i);//改为:t=t-fun(i);

printf("t=%f\n”,t);

)

4.函数intfun(floats[],intn),它的功能是:求低于60分的人数,并作为函数值返回。数组

s中存放n位学生的成绩。数组s的值由主函数从键盘读入

#include<stdio.h>

#defineN10

intfun(floats[],intn)

(

intnum,i;H改为:intnum=0,i;

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

if(s[il<=60)num++;H改为:if(s[i]<60)

returnnum;

voidmain()

inti;

floats[N],x;

printf("\nPleaseentermarksofstudent:");

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

(

scanf("%r,X);H改为:scanf(t,o/of\&x);

*(s+i)=x;

1

printf("numberofstudent:%d\nu,fun(s[N]));//改为:printf(,limb

温馨提示

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

评论

0/150

提交评论