《C程序设计》期末复习练习题及参考答案3.docx

上传人:b****3 文档编号:4000183 上传时间:2022-11-27 格式:DOCX 页数:17 大小:22.95KB
下载 相关 举报
《C程序设计》期末复习练习题及参考答案3.docx_第1页
第1页 / 共17页
《C程序设计》期末复习练习题及参考答案3.docx_第2页
第2页 / 共17页
《C程序设计》期末复习练习题及参考答案3.docx_第3页
第3页 / 共17页
《C程序设计》期末复习练习题及参考答案3.docx_第4页
第4页 / 共17页
《C程序设计》期末复习练习题及参考答案3.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《C程序设计》期末复习练习题及参考答案3.docx

《《C程序设计》期末复习练习题及参考答案3.docx》由会员分享,可在线阅读,更多相关《《C程序设计》期末复习练习题及参考答案3.docx(17页珍藏版)》请在冰豆网上搜索。

《C程序设计》期末复习练习题及参考答案3.docx

《C程序设计》期末复习练习题及参考答案3

《C程序设计》期末复习练习题及参考答案(3)

 

一、单项选择题

1.若有定义int(*p)[4],则标识符p是一个。

A)指向整型变量的指针变量

B)指向函数的指针变量

√C)指向有四个整型元素的一维数组的指针变量

D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针

2.下列对字符串的定义中,错误的是:

√A)charstr[7]="FORTRAN";

B)charstr[]="FORTRAN";

C)char*str="FORTRAN";

D)charstr[]={'F','O','R','T','R','A','N',0};

3.针对下面程序段,下面哪些说法是正确的?

#include

voidSwap(int*x,int*y);

main()

{inta,b;

a=5;

b=9;

Swap(&a,&b);

printf("a=%d,b=%d",a,b);

}

voidSwap(int*x,int*y)

{int*pTemp;

*pTemp=*x;

*x=*y;

*y=*pTemp;

}

A)程序运行结果为乱码;

B)程序运行后将导致程序崩溃;

C)程序编译时出错导致程序无法运行;

√D)程序执行了危险的操作;

4.已知学生记录描述为:

structstudent

{intno;

charname[20];

charsex;

struct

{intyear;

charmonth[15];

intday;

}birth;

};

structstudents;

设变量s中的生日是1984年11月11日,下列对生日的正确赋值方式是_____

A)s.birth.year=1984;s.birth.month="11";s.birth.day=11;

B)s.birth.year=1984;s.birth.month=11;s.birth.day=11;

√C)s.birth.year=1984;strcpy(s.birth.month,"11");s.birth.day=11;

D)s.birth.year=1984;strcpy(s.birth.month,11);s.birth.day=11;

5.要使下面程序的输出1,2,34,则从键盘输入的数据格式应为。

#include

main()

{chara,b;

intc;

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

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

}

A)1234B)1,2,34C)’1’,’2’,34√D)1234

6.以下选项中为合法整型常量的是()。

A)-080√B)-80C)-8e1.0D)-80.0e

7.若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。

A)4B)16√C)32D)52

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

#include

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5];

a=0;b[0]=3;

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

}

√A)6B)7C)8D)9

9.设有定义chargrade='A';则以下给出的程序运行结果或说法正确的是()。

switch(grade)

{case'A':

case'B':

case'C':

printf(">=60pass!

\n");

case'D':

printf("<60\n");

default:

printf("error!

\n");

}

A)>=60pass!

B)<60C)error!

√D)以上结果都不正确

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

#include

intmain()

{inti=1,j=1,k=2;

if((j++||k++)&&i++)

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

return0;

}

A)1,1,2B)2,2,1√C)2,2,2D)2,2,3

11.执行完循环语句for(i=1;i<10;i++);后,以下关于变量i的值及循环体的执行次数的说法正确的是()。

A)i的值是9,循环体执行9次B)i的值是9,循环体执行10次

√C)i的值是10,循环体执行9次D)i的值是10,循环体执行10次

12.以下程序的运行结果是()。

#include

intmain()

{intm,n;

for(m=0,n=10;m

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

return0;

}

A)6,7B)7,6√C)9,7D)7,9

13.以下程序的运行结果是()。

#include

intmain()

{inti;

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

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

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

return0;

}

A)159√B)753C)357D)591

14.下列可用于C语言用户标识符的一组是()。

A)void,define,WORD√B)a3_3,_123,Car

C)For,-abc,IFCaseD)2a,DO,sizeof

15.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()。

.

A)a<>0B)!

aC)a=0√D)a!

=0

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

#include

voidmain()

{intx=10,y=10;

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

}

A)99√B)109C)910D)1010

17.若有定义:

char*name[]={"Followme","BASIC","GreatWall","FORTRAN"};,则name[2]的值是()。

A)字符'G'B)字符串"GreatWall"

√C)字符串"GreatWall"的首地址D)不确定

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

#include

voidfun(char*p)

{char*q=p;

while(*q!

='\0')

{(*q)++;

q++;

}

}

intmain()

{chara[]={"Program"},*p;

p=&a[3];

fun(p);

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

return0;

}

√A)ProhsbnB)PrphsbnC)ProgsbnD)Program

19.下面列出的C语言提供的合法的数据类型关键字是()。

A)Double√B)shortC)integerD)Char

20.字符(char)型数据在微机内存中的存储形式是()。

A)反码B)补码C)EBCDIC码√D)ASCII码

21.设inta=12,则执行完语句a+=a-=a*a后,a的值是()。

A)552B)264C)144√D)-264

23.能够完成如下函数计算的程序段是()。

-1x<0

Y=0x=0

1x>0

A)y=1;√B)if(x>=0)

if(x!

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

if(x>0)y=1;elsey=0;

elsey=0;elsey=-1;

C)y=0;D)y=-1;

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

if(x>0)y=1;elsey=0;

elsey=-1;

 

24.有如下程序

#include

voidmain()

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

switch(x)

{

case0:

b++;

case1:

a++;

case2:

a++;b++;

}

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

}

该程序的输出结果是()。

√A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2

 

25.下面程序的输出结果是()。

#include

voidmain()

{inti;

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

{if(i%2!

=0){printf("#");continue;}

printf("*");

}

printf("\n");

}

√A)#*#*#B)#####C)*****D)*#*#*

26.C语言中while和do-while循环的主要区别是()。

.

√A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比do-while的循环控制条件严格

C)do-while允许从外部转到循环体内

D)do-while的循环体不能是复合语句

27.当对两个字符串进行比较时,应该使用的函数是()。

A)strcat√B)strcmpC)strcpyD)strlen

28.以下程序的运行结果是()。

#include

voidmain()

{int*p,a=1;

p=&a;

*p=10;

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

}

A)1√B)10C)不能确定D)11

29.设有定义inta[]={1,5,7,9,11,13},*p=a+3;则*(p-2),*(a+4)的值是()。

√A)511B)19C)59D)有错误

30.若i为整型变量,则以下循环的次数是()。

for(i=2;i==0;)printf(“%d”,i--);

A)无限次√B)0次C)1次D)2次

 

二、填空题

1.C语言标识符由___字母______、____数字______和______下划线_____来构造。

2.设有定义:

FILE*fp;,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。

fp=fopen("readme.txt",“a”);

3.若有说明和语句:

inta=25,b=60;b=++a;则b的值是   26     。

4.若intx=5;while(x>0)printf(“%d”,x--);的循环执行次数为  5     。

5.若有inta[5],*p=a;则p+2表示第   三    个元素的地址。

6.若有说明和语句:

inta=5,b=6,y=6;b-=a;y=a++则b和y的值分别是   1  、  5   。

7.已知整型变量a=3,b=4,c=5,写出逻辑表达式a||b+c>c&&b-c的值是   1   。

8.在C语言中,变量的存储类别有四种,它们是:

自动(auto)、寄存器(register)、静态(static)、外部(extern)。

9.如果一个变量在某个范围内是有效的,该范围就称为变量的作用域。

自动(auto)存储类别的局部变量,其作用域为:

从定义的位置起,到函数体(或复合语句)结束为止

10.设有定义inta,b;写出满足条件“a是3的倍数,或者b不是5的倍数”的逻辑表达式:

a%3==0||b%5!

=0。

 

三、程序运行结果分析题

1.

main()

{inti,j,x=0;

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

{

x++;

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

{

if(j%2)continue;

x++;

}

x++;

}

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

}

程序运行结果是:

x=8

2.

#include

structdate

{intyear;

intmonth;

intday;

};

structdatefunc(structdatep)

{p.year=2000;

p.month=5;

p.day=22;

returnp;

}

main()

{structdated;

d.year=1999;

d.month=4;

d.day=23;

printf("%d/%d/%d\n",d.year,d.month,d.day);

d=func(d);

printf("%d/%d/%d\n",d.year,d.month,d.day);

}

程序的运行结果是:

1999/4/23

2000/5/22

3.

#include

main()

{

chara[]="Hello";

char*p=NULL;

for(p=a;p

{

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

}

}

程序运行结果是:

Hello

ello

llo

lo

o

4.

#include

intfun(intx,inty)

{returnx>y?

x:

y;}

main()

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

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

}

程序运行结果是:

10

5.

#include

voidFunc(void);

main()

{inti;

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

{Func();}

}

voidFunc(void)

{staticinta=1;

intb=2,c;

c=a+b;

a++;

b++;

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

}

程序运行结果是:

3

4

5

6

7

6.当运行以下程序时,从键盘输入如下内容并回车:

ADescriptor,则下面程序的运行结果是v0=13,v1=4,v2=12。

#include

intmain()

{charc;

intv0=1,v1=0,v2=0;

do

{switch(c=getchar())

{

case'a':

case'A':

case'e':

case'E':

case'i':

case'I':

case'o':

case'O':

case'u':

case'U':

v1+=1;

default:

v0+=1;v2+=1;

}

}while(c!

='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);

printf("\n");

return0;

}

7.当运行以下程序时,运行结果是_______。

#include

voidfun(char*t,char*s)

{while(*t!

=0)t++;

while((*t++=*s++)!

=0);

}

intmain()

{charss[3][20]={"I","don’t","know"};

inti;

for(i=2;i>0;i--)

fun(ss[i-1],ss[i]);

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

printf("%s\n",ss[i]);

return0;

}

Idon’tknow

don’tknow

know

8.当运行以下程序时,运行结果是___1,5,3,8,____。

#include

intmain()

{inta[][4]={{2,9,1,8},{8,9,7,2},{4,3,2,1},{1,5,3,5}},i,j,k,t;

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

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

{for(k=j+1;k<4;k++)

if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}

}

}

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

return0;

}

 

9.有以下程序

#include

#include

typedefstruct{charname[9];charsex;floatscore[2];}STU;

voidf(STUa)

{STUb={"Zhao",′m′,85.0,90.0};inti;

strcpy(a.name,b.name);

a.sex=b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

}

main()

{STUc={"Qian",′f′,95.0,92.0};

f(c);

printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);

}

程序的运行结果是_____Qian,f,95,92_______。

 

四、程序填空题

阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。

1.先按学号由小到大的顺序从键盘输入学生的学号和成绩,然后从键盘任意输入一个学生的学号,查找并打印具有该学号的学生的成绩。

#include

#defineARR_SIZE40

intBinSearch(longa[],intn,longx);

main()

{floatscore[ARR_SIZE];

intn,i,pos;

longnum[ARR_SIZE],x;

printf("Pleaseentertotalnumber:

");

scanf("%d",&n);

printf("Pleaseenterthenumberandscore:

\n");

for(i=0;i

{

scanf("%ld%f",&num[i],&score[i]);

}

printf("Pleaseenterthesearchingnumber:

");

scanf("%ld",&x);

pos=BinSearch(num,n,x);

if(pos!

=-1)

{

printf("score=%4.0f\n",score[pos]);

}

else

{

printf("Notfound!

\n");

}

}

intBinSearch(longa[],intn,longx)

{

intlow,high,mid;

low=0;

high=n-1;

while(low<=high)

{

mid=(high+low)/2;

if(x>a[mid])

{

low=mid+1;

}

elseif(x

{

high=mid-1;

}

else

{

return(mid);

}

}

return(-1);

}

2.输入一行字符,统计其中的英文字符、数字字符、空格及其它字符的个数。

#include

#include

#defineARR_SIZE80

main()

{

charstr[ARR_SIZE];

intlen,i,letter=0,digit=0,space=0,others=0;

gets(str);

for(i=0;str[i]!

='\0';i++)

{

if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')

letter++;

elseif(str[i]>='0'&&str[i]<='9')

digit++;

elseif(str[i]=='')

space++;

elseothers++;

}

printf("Englishcharacter:

%d\n",letter);

printf("digitcharacter:

%d\n",digit);

printf("space:

%d\n",space);

printf("othercharacter:

%d\n",others);

}

3.以下程序为求出并打印1000以内所有水仙花数,请补齐代码。

所谓水仙花数是指一个3位正整数,其各位数字的立方和等于该正整数。

例如407=4*4*4+0*0*0+7*7*7,故407是一个水仙花数.

#include

intmain()

{

intx,y,z,a[100],m,i=0,j=

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

当前位置:首页 > 工程科技 > 能源化工

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

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