《C语言程序设计》综合练习题与答案.docx

上传人:b****7 文档编号:10135079 上传时间:2023-02-08 格式:DOCX 页数:27 大小:25.16KB
下载 相关 举报
《C语言程序设计》综合练习题与答案.docx_第1页
第1页 / 共27页
《C语言程序设计》综合练习题与答案.docx_第2页
第2页 / 共27页
《C语言程序设计》综合练习题与答案.docx_第3页
第3页 / 共27页
《C语言程序设计》综合练习题与答案.docx_第4页
第4页 / 共27页
《C语言程序设计》综合练习题与答案.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》综合练习题与答案.docx

《《C语言程序设计》综合练习题与答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》综合练习题与答案.docx(27页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》综合练习题与答案.docx

《C语言程序设计》综合练习题与答案

《C语言程序设计》综合练习题与答案

一、简要问答下列问题

1.什么是源程序?

2.C语言源程序的编译过程是怎样的?

3.简述C语言的特点

4.C/C++程序都是由函数组成的,其中最主要的、不可缺少的函数是哪一个?

举例说明该函数的结构。

5.函数的返回值是通过什么语句来实现的,它的格式是什么?

6.在编写C程序时,为什么要把库函数的头文件包含到用户源程序中?

如何把用户的头文件包含到用户源程序?

7.在计算机中,存储的数据为什么要分成多种不同的数据类型?

8.什么是常量?

什么是变量?

9.C语言的五种基本数据类型有哪些?

它们的关键字和所占的字节数分别是什么?

10.判断标识符是否合法的三条规则是什么?

11.什么是C语言的关键字?

关键字对标示符有何影响?

12.全局变量和局部变量有什么区别?

13.什么是空语句,什么是语句块?

14.结构化程序设计的三种基本结构是什么?

15.三种循环语句各有什么特点?

16.什么叫多重循环结构?

17.Continue语句与break语句有什么区别?

18.字符与字符串有什么区别?

‘b’与“b”相同吗?

19.什么是数组?

一维数组的定义形式是怎样的?

20.字符串的结束标记是什么?

21.什么是按位操作?

C语言对按位操作有哪些要求?

22.什么是指针?

指针的两个操作符表示什么意义?

23.指针和数组有什么关系?

24.指针有那几种算术运算?

说明指针变量的算术运算与一般变量的算术运算有何区别?

25.函数是由哪三部分组成的?

函数定义的一般形式是什么?

26.函数原型是什么情况下使用?

有什么作用?

27.形参和实参有什么关系,函数的两种调用方式是什么?

28.什么是函数的递归调用?

29.什么是函数指针?

说明定义函数指针的一般形式。

30.什么是内部函数?

什么是外部函数?

31.C语言的四种用户定义数据类型是什么?

32.C系统提供的三种主要预处理功能是什么?

33.什么是文件包含?

34.什么是文件?

什么是流?

 

二、写出下列程序段的输出结果

(1)inta,b,c=1;

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

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

c=c+1;

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

(2)inti=1;

do{

if(i%10){

i=i+1;

continue;

}

printf(“%5d”,i);

i++;

}While(i<=50);

(3)intx=2;

there:

x=x+1;

if(x<6)gotothere;

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

printf("Endofprogram.");

(4)intx=1,y=1;

while(y<6)

{

x=x*y;

y=y+1;

}

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

(5)inti,j,x[2][2];

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

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

x[i][j]=i十j;

printf("x[%d][%d]=%d",i,j,x[i][j]);

}

printf("\n");

}

(6)inta[5]={5,4,3,2,1},i=0,x=0;

whi1e(i<5)

{

x=a[i]十x;

i++;

}

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

}

(7)main()

{

intx=10,y=20;

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

return0;

}

abc(inta,intb)

{

intc;

if(b)

{c=a/b+a;

returnc;}

e1se

return0;

}

(8)main()

{

intx=10;

inti;

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

printf(“%d”,fun(x));

return0;

}

fun(intx)

{

staticintZ=3;

Z=Z+x;

returnZ;

}

(9)main()

{

inta,b;

a=50;b=90;

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

return0;

}

(10)main()

{

inta[10]={19,23,44,17,37,28,49,36},*P;

P=a;

printf("%d\n",(P+=3)[3]);

return0;

}

(11)main()

{

inti=3,j=2;

char*a="DCBA";

printf("%c%c\n",a[i],a[j])";

return0;

}

(12)#include

fun(intx)

{

intk;

if(x==0||x==1)return(3);

k=x-fun(x-2);

returnk;

}

main()

{

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

return0;

}

(13)#include

voidmyFunc();

voidrnain()

{

intX=5;

cout<<"\nInmainXis:

"<

myFunc();

cout<<"\nBackinmain,Xis:

"<

}

voidmyFunc()

{

intX=8;

cout<<"\nInmyFunc,localX:

"<

{

cout<<"\nInblockinmyFunc,Xis:

"<

intX=9;

cout<<"\nVerylocal,X:

”<

}

cout<<"\nOutofblock,inmyFunc,Xis:

"<

}

(14)#include

f(inta[])

{

inti=0;

while(a[i]<=10)

{

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

i++;

}

}

main()

{

inta[]={1,5,10,9,11,7};

f(a+1);

}

(15)#include

swap(int*p1,int*p2)

{

intp;

p=*p1;*p1=*p2;*p2=p;

}

main()

{

inta=5,b=7,*ptr1,*ptr2;

prt1=&a;ptr2=&b;

swap(ptr1,ptr2)

printf("*ptr1=%d,*ptr2=%d\n",*ptr1,*ptr2);

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

}

(16)#include

voidmain(void)

{

intx,y=-2,z=0;

if((z=y)<0)x=4;

elseif(y==0)x=5;

elsex=6;

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

if(z=(y==0))

x=5;

x=4;

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

if(x=z=y)x=4;

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

}

(17)#include

intfac(intn)

{

staticintf=1;

f=f*n;

return(f);

}

main()

{

inti;

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

printf("%d!

=%d\n",i,fac(i));

return;

}

(18)#include

intfac(intn)

{

intf=1;

f=f*n;

return(f);

}

main()

{

inti;

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

printf("%d!

=%d\n",i,fac(i));

return;

}

三、单项选择题

1.一个C程序的执行是从_______。

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

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

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

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

2.一个C语言程序是由__________。

(A)一个主程序和若干个子程序组成

(B)函数组成

(C)若干个过程组成

(D)若干个子程序组成

3.下面选项中,均是不合法的用户标示法的选项是________。

(A)AP_0do

(B)floatla0_A

(C)b-agotoint

(D)_123tempINT

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

(A)在C程序中,每行中只能写一条语句

(B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整数

(C)在C程序中,如论是整数还是实数,都能被准确无误地表示

(D)在C程序中,%是只能用于整数运算的运算符

5.以下C程序的正确的运行结果是___________。

(注:

表示空格)

main()

{

longy=-43456;

printf("y=%-8ld\n",y);

printf("y=%-08ld\n",y);

printf("y=%08ld\n",y);

printf("y=%+8ld\n",y);

}

(A)y=

-43456(B)y=-43456

y=-

43456y=-43456

y=-0043456y=-0043456

y=-43456y=+

-43456

(C)y=-43456(D)y=

-43456

y=-43456y=-0043456

y=-0043456y=00043456

y=

-43456y=+43456

6.设x,y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是___。

(A)'x'&&'y'(B)x<=y

(C)x||y+z&&y-z(D)!

((x

z||1)

7.以下运算符中优先级最低的是_______。

(A),(B)&&(C)+(D)!

=

8.以下if语句语法正确的是_______。

(A)if(x>0)

printf("%f",x)

elseprintf("%f",-x);

(B)if(x>0)

{x=x+y;printf("%f",x);}

elseprintf("%f",-x);

(C)if(x>0)

{x=x+y;printf("%f",x);};

elseprintf("%f",-x);

(D)if(x>0)

{x=x+y;printf("%f",x)};

elseprintf("%f",-x);

9.以下程序段_____________。

x=-1;

do

{x=x*x;}

while(!

x);

(A)是死循环

(B)循环执行二次

(C)循环执行一次

(D)有语法错误

10.执行语句for(i=1;i++<4;);变量的值是________。

(A)3(B)4(C)5(D)不确定

11.对以下说明语句的正确理解是_________。

inta[10]={6,7,8,9,10};

(A)将5个初值一次赋给a[1]至a[5]

(B)将5个初值一次赋给a[0]至a[4]

(C)将5个初值一次赋给a[6]至a[10]

(D)因为数组长度与初值的个数不相同,所以语句不正确

12.下面程序段的运行结果是____________。

chara[]={'a','b','\0','c','\0'}

printf("%s",c);}

(A)'a''b'(B)ab(C)ab

c(D)abc

13.在C语言中,以下正确的说法是______

(A)实参和与其对应的形参各占独立的存储单元

(B)实参和与其对应的形参占用同一个存储单元

(C)只有当实参和与其对应的形参同名时才占用同一个存储单元

(D)形参是虚拟的,不占用存储单元

14.用数组名作为函数调用的实参,传递给形参的是_____。

(A)数组的首地址

(B)数组第一个元素的值

(C)数组中全部元素的值

(D)数组元素的个数

15.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为____。

(A)自动(auto)(B)静态(static)

(C)外部(extern)(D)寄存器(register)

16.以下叙述中正确的是_________。

(A)在程序的一行上可以出现多个有效的预处理命令行

(B)使用带参的宏时,参数的类型应与宏定义时一致

(C)宏替换不占用运行时间,只占编译时间

(D)以下定义中CR是称为“宏名”的标示符

#defineCR045

17.若有以下宏定义:

#defineN2

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

则执行语句z=2*(N+Y(5));后的结果是_________。

(A)语句有错误(B)z=34

(C)z=70(D)z无定值

18.下面程序应能对两个整型变量的值进行交换。

以下正确的说法是______。

main()

{

inta=10,b=20;

printf("

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

swap(&a,&b);

printf("

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

}

swap(intp,intq)

{

intt;

t=p;p=q;q=t;

}

(A)该程序完全正确

(B)该程序有错,只要将语句swap(&a,&b);中的参数该为a,b即可

(C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可

(D)以上说法都不正确

19.若有定义inta=5;下面对

(1)和

(2)两个语句的正确解释是____。

(1)int*p=&a;

(2)*p=a;

(A)语句

(1)和

(2)中的*p含义相同,都表示给指针变量p赋值。

(B)

(1)和

(2)语句的执行结果,都是把变量a的地址值赋给指针变量p

(C)语句

(1)在对p进行说明的同时进行初始化,使p指向a

语句

(2)将变量a的值赋给指针变量p

(D)语句

(1)在对p进行说明的同时进行初始化,使p指向a

语句

(2)将变量a的值赋给*p

20.若已定义chars[10];则在下面表达式中不表示s[1]的地址的是___。

(A)s+1(B)s++(C)&s[0]+1(D)&s[1]

21.编译执行下列程序,结果是:

____________。

#inclucle

main()

{

inti=6;y=4;z=2;

printf("%d\n",i/y%z);

return0;

}

(A)显示出错信息,不能执行。

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

22.以下程序的输出结果是:

______。

#inclucle

main()

{

intx=10,y=10;

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

retum0;

}

(A)1010(B)99

(C)910(D)109

23.以下程序的输出结果为:

______。

#inclucle

main()

{

intx=023;

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

return0;

}

(A)18(B)22

(C)23(D)19

24.不能进行++和--运算的数据类型是:

______。

(A)指针(B)double

(C)int(D)long

25.下列字符序列中,不可用作C语言标识符的是:

______

(A)$4568:

’(B)sum

(C)STUD_name(D)basic_12

26.设X的值为3,则表达式(X++)+(X++)+(X++)的值是______。

(A)10(B)6

(C)12(D)9

27.设a=12,b=12345,执行语句printf("%4d,%4d",a,b)的输出结果为:

______

(A)12,123(B)12,12345

(C)12,1234(D)12,123456

28.以下程序的输出结果是:

______。

main()

{

inti=1,sum=0;

while(i<10)

sum=sum+1;

i++;

printf("i=%d,sum=%d",i,sum);

return0;

}

(A)i=10,sum=9(B)i=9,sum=9

(C)i=2,sum=1(D)运行出现错误

29.以下程序的的输出结果为:

______。

#inclucle

main()

{

inta,b,c,x,y,z;

a=10;b=2;

c=!

(a%b);x=!

(a/b);

y=(a=0);

z=(a=0);

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

return0;

}

(A)c=0,x=1,y=l,z=0(B)c=5,x=0,y=l,z=0

(C)c=1,x=0,y=0,z=1(D)c=10,x=2,y=0,z=1

30.执行下列程序段后,xy的值是:

______。

int*pt,xy;

xy=270;

pt=&xy;

xy=*pt+30;

(A)270(B)240

(C)330(D)300

31.用scanf("%d,%d,&a,&b)输人数据时,下面输入法正确的是:

________

(A)123,4(B)1234

(C)123;4(D)123:

4

32.以下程序的输出结果是:

_______。

point(char*pt);

main()

{

charb[4]={'a','c','s','f'},*pt=b;

point(pt);

printf("%c\n",*pt);

return0;

}

point(char*P)

{

P+=3;

}

(A)s(B)c

(C)f(D)a

33.标有/**/的语句的执行次数是:

________。

inty,i;

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

{

if(i%2==0)

continue;

y=y+i;/**/

}

(A)20(B)19

(C)10(D)9

34.以下程序的输出结果是:

_________。

#inclucle

sub(x,y,z)

intx,y,*z;

{

*z=y-x;

}

main()

{

inta,b,c;

sub(10,5,&a);

sub(7,a,&b);

sub(a,b,&c);

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

return0;

}

(A)-5,-12,-17(B)-5,-3,-2

(C)-5,-12,-7(D)-5,-2,-7

35.以下程序的输出结果为:

______。

main()

{

charcl='a',c2='b',c3='c';

printf("a%cb%c\tc%c\n",c1,c2,c3);

return0;

}

(A)abcabcabc(B)aabbcc

(C)abc(D)aaaabb

36.经过以下语句定义后,表达式z+=x>y?

++x:

++y的值是:

______。

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

(A)2(B)3

(C)6(D)5

37.在下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的是:

_____

(A)8(B)23

(C)17(D)6

38.下列语句执行后的结果是:

______。

y=5;P=&y;x=*P++;

(A)x=5,y=5(B)x=5,y=6

(C)x=6,y=5(D)x=6,y=6

39.以下程序的输出结果是:

______。

#inclucle

inta[]={1,3,5,7};

main()

{

intn;

int*P=a;

for

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

当前位置:首页 > 表格模板 > 合同协议

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

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