《C语言程序设计》综合练习题与答案.docx
- 文档编号:27328294
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:27
- 大小:24.84KB
《C语言程序设计》综合练习题与答案.docx
《《C语言程序设计》综合练习题与答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》综合练习题与答案.docx(27页珍藏版)》请在冰豆网上搜索。
《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(n=0;n<4;n++)a[n]=*P++; printf("%d\n",a[3]); return0; } (A)l(B)3 (C)5(D)7 40.以下程序的输出结果是: ___
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 综合 练习题 答案