1、C语言程序设计综合练习题与答案C语言程序设计综合练习题与答案一、简要问答下列问题1什么是源程序?2C语言源程序的编译过程是怎样的?3简述C语言的特点4C/C+程序都是由函数组成的,其中最主要的、不可缺少的函数是哪一个?举例说明该函数的结构。5函数的返回值是通过什么语句来实现的,它的格式是什么?6在编写C程序时,为什么要把库函数的头文件包含到用户源程序中?如何把用户的头文件包含到用户源程序?7在计算机中,存储的数据为什么要分成多种不同的数据类型?8什么是常量?什么是变量?9C语言的五种基本数据类型有哪些?它们的关键字和所占的字节数分别是什么?10判断标识符是否合法的三条规则是什么?11什么是C语
2、言的关键字?关键字对标示符有何影响?12全局变量和局部变量有什么区别?13什么是空语句,什么是语句块?14结构化程序设计的三种基本结构是什么?15三种循环语句各有什么特点?16什么叫多重循环结构?17Continue语句与break语句有什么区别?18字符与字符串有什么区别?b与“b”相同吗?19什么是数组?一维数组的定义形式是怎样的?20字符串的结束标记是什么?21什么是按位操作?C语言对按位操作有哪些要求?22什么是指针?指针的两个操作符表示什么意义?23指针和数组有什么关系?24指针有那几种算术运算?说明指针变量的算术运算与一般变量的算术运算有何区别?25函数是由哪三部分组成的?函数定义
3、的一般形式是什么?26函数原型是什么情况下使用?有什么作用?27形参和实参有什么关系,函数的两种调用方式是什么?28什么是函数的递归调用?29什么是函数指针?说明定义函数指针的一般形式。30什么是内部函数?什么是外部函数?31C语言的四种用户定义数据类型是什么?32C系统提供的三种主要预处理功能是什么?33什么是文件包含?34什么是文件?什么是流? 二、写出下列程序段的输出结果 (1) int a,b,c=1; for (a=0;a3;a+) for (b=0;b=3;b+) c=c+1; printf(“a=%d,b=%d,c=%dn”,a,b,c); (2) int i=1; do if
4、(i%10) i=i+1; continue; printf(“%5d”,i); i+; While(i=50); (3) int x=2; there: x=x+1; if (x6) goto there; printf(x=%d,x); printf(End of program.); (4) int x=1, y=1; while (y6) x=x*y; y=y+1; printf(x=%dn,x); (5) int i,j,x22; for (i=0;i2;i+) for (j=0;j2;j+) xij=i十j; printf (xdd=d,i,j,xij); printf(n); (
5、6) int a5=5,4,3,2,1,i=0,x=0; whi1e (i5) x=ai十x; i+; printf(x=dn,x); (7) main( ) int x=10,y=20; printf(result=dn,abc(x,y); return 0; abc(int a,int b) int c; if (b) c=a/b+a; return c; e1se return 0; (8) main( ) int x=10; int i; for (i=0;i3;i+) printf(“d”,fun(x); return 0; fun (int x) static int Z=3; Z
6、=Z+x; return Z; (9) main( ) int a,b; a=50;b=90; printf(dn,(a,b); return 0; (10) main( ) int a10=19,23,44,17,37,28,49,36,*P; P=a; printf(%dn,(P+=3)3); return 0; (11) main( ) int i=3,j=2; char *a=DCBA; printf(%c%cn,ai,aj); return 0; (12) #include fun(int x) int k; if (x = 0 | x = 1) return(3); k=x-fun
7、(x-2); return k; main( ) printf(%dn,fun(9); return 0; (13) #include void myFunc( ); void rnain( ) int X=5; coutn In main X is : X; myFunc( ); coutn Back in main, X is :X; void myFunc( ) int X=8; coutn In myFunc, local X: X; coutn In block in myFunc , X is:X; int X=9; coutn Very local, X: ”X; coutn O
8、ut of block, in myFunc, X is: X; (14) #include f(int a) int i=0; while (ai=10) printf(%d ,ai); i+; main() int a=1,5,10,9,11,7; f(a+1); (15) #include swap(int *p1,int *p2) int p; p=*p1;*p1=*p2;*p2=p; main() int a=5,b=7,*ptr1,*ptr2; prt1=&a; ptr2=&b; swap(ptr1,ptr2) printf(*ptr1=%d,*ptr2=%dn,*ptr1,*pt
9、r2); printf(*ptr1=%d,*ptr2=%dn,a,b); (16) #include void main(void) int x,y=-2,z=0; if (z=y)0) x=4; else if (y=0) x=5; else x=6; printf(t%dt%dn,x,z); if (z=(y=0) x=5; x=4; printf(t%dt%dn,x,z); if (x=z=y) x=4; printf(t%dt%dn,x,z); (17) #include int fac(int n) static int f=1; f=f*n; return(f); main() i
10、nt i; for (i=1;i=5;i+) printf(%d!=%dn,i,fac(i); return; (18) #include int fac(int n) int f=1; f=f*n; return(f); main() int i; for (i=1;i=5;i+) printf(%d!=%dn,i,fac(i); return; 三、单项选择题1一个C程序的执行是从_。(A)本程序的main函数开始,到main函数结束(B)本程序的第一个函数开始,到本程序文件的最后一个函数结束(C)本程序的main函数开始,到本程序文件的最后一个函数结束(D)本程序文件的第一个函数开始,到
11、本程序main函数结束2一个C语言程序是由_。(A)一个主程序和若干个子程序组成(B)函数组成(C)若干个过程组成(D)若干个子程序组成3下面选项中,均是不合法的用户标示法的选项是_。(A)A P_0 do(B)float la0 _A(C)b-a goto int(D)_123 temp INT4以下叙述正确的是_。(A)在C程序中,每行中只能写一条语句(B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整数(C)在C程序中,如论是整数还是实数,都能被准确无误地表示(D)在C程序中,%是只能用于整数运算的运算符5以下C程序的正确的运行结果是_。(注:表示空格)main()
12、long y=-43456; printf(y=%-8ldn,y); printf(y=%-08ldn,y); printf(y=%08ldn,y); printf(y=%+8ldn,y);(A) y=-43456 (B) y=-43456y=-43456 y=-43456y=-0043456 y=-0043456y=-43456 y=+-43456(C) y=-43456 (D) y=-43456y=-43456 y=-0043456y=-0043456 y=00043456y=-43456 y=+434566设x,y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是_。
13、(A)x&y (B)x=y(C)x|y+z&y-z (D)!(x0)printf(%f,x)else printf(%f,-x);(B)if (x0) x=x+y;printf(%f,x); else printf(%f,-x);(C)if (x0) x=x+y;printf(%f,x);else printf(%f,-x);(D)if (x0) x=x+y;printf(%f,x);else printf(%f,-x);9以下程序段_。x=-1;do x=x*x; while (!x);(A)是死循环(B)循环执行二次(C)循环执行一次(D)有语法错误10执行语句for (i=1;i+4;)
14、;变量的值是_。(A)3 (B)4 (C)5 (D)不确定11对以下说明语句的正确理解是_。int a10=6,7,8,9,10;(A)将5个初值一次赋给a1至a5(B)将5个初值一次赋给a0至a4(C)将5个初值一次赋给a6至a10(D)因为数组长度与初值的个数不相同,所以语句不正确12下面程序段的运行结果是_。char a=a,b,0,c,0printf(%s,c);(A)ab (B)ab (C)abc (D)abc13在C语言中,以下正确的说法是_(A)实参和与其对应的形参各占独立的存储单元(B)实参和与其对应的形参占用同一个存储单元(C)只有当实参和与其对应的形参同名时才占用同一个存储
15、单元(D)形参是虚拟的,不占用存储单元14用数组名作为函数调用的实参,传递给形参的是_。(A)数组的首地址(B)数组第一个元素的值(C)数组中全部元素的值(D)数组元素的个数15凡是函数中未指定存储类别的局部变量,其隐含的存储类别为_。(A)自动(auto) (B)静态(static)(C)外部(extern) (D)寄存器(register)16以下叙述中正确的是_。(A)在程序的一行上可以出现多个有效的预处理命令行(B)使用带参的宏时,参数的类型应与宏定义时一致(C)宏替换不占用运行时间,只占编译时间(D)以下定义中C R 是称为“宏名”的标示符#define C R 04517若有以下宏
16、定义: #define N 2 #defin Y(n) (N+1)*N)则执行语句z=2*(N+Y(5);后的结果是_。(A)语句有错误 (B)z=34(C)z=70 (D)z无定值18下面程序应能对两个整型变量的值进行交换。以下正确的说法是_。 main() int a= 10,b=20; printf(1) a=%d,b=%dn,a,b); swap(&a,&b); printf(2) a=%d,b=%dn,a,b); swap(int p,int q) int t; t=p;p=q;q=t; (A)该程序完全正确(B)该程序有错,只要将语句swap(&a,&b);中的参数该为a,b即可(
17、C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可(D)以上说法都不正确19若有定义int a=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的值赋给*p20若已定义char s10; 则在下面表达式中不表示
18、s1的地址的是_。(A)s+1 (B)s+ (C)&s0+1 (D)&s121编译执行下列程序,结果是:_。 #inclucle main( ) int i=6;y=4;z=2; printf(%dn,i/y%z); return0; (A) 显示出错信息,不能执行。 (B) 0 (C) 1 (D) 222以下程序的输出结果是:_。 #inclucle main( ) int x=10,y=10; printf(%d%dn,x-,-y); retum 0; (A) 10 10 (B) 9 9 (C) 9 10 (D) 10 923以下程序的输出结果为:_。 #inclucle main( )
19、int x=023; printf(%dn,-x); return 0; (A) 18 (B) 22 (C) 23 (D) 19 24不能进行+和-运算的数据类型是:_。 (A) 指针 (B) double (C) int (D) long25下列字符序列中,不可用作C语言标识符的是:_ (A) $4568 : (B) sum (C) STUD_name (D) basic_1226设X的值为3,则表达式(X+)+(X+)+(X+)的值是_。 (A) 10 (B) 6 (C) 12 (D) 927设a=12,b=12345,执行语句printf(%4d,%4d,a,b)的输出结果为:_ (A)
20、 12,123 (B) 12,12345 (C) 12,1234 (D) 12,12345628以下程序的输出结果是:_。 main( ) int i=1,sum=0; while (i10) sum=sum+1; i+; printf(i=%d,sum=%d,i,sum); return 0; (A) i=10, sum=9 (B) i=9,sum=9 (C) i=2,sum=1 (D) 运行出现错误29以下程序的的输出结果为:_。 #inclucle main( ) int a,b,c,x,y,z; a=10;b=2; c=!(a%b);x=!(ab); y=(a=0); z=(a=0);
21、 printf(c=%d,x=%d,y=%d,z=%dn,c,x,y,z); return 0; (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=130执行下列程序段后,xy的值是:_。 int *pt,xy; xy=270; pt=&xy; xy=*pt+30; (A) 270 (B) 240 (C) 330 (D) 30031用scanf(%d,%d,&a,&b)输人数据时,下面输入法正确的是:_ (A) 123,4 (B) 123 4 (C) 123;4 (D) 123:4 32以下
22、程序的输出结果是:_。 point(char *pt); main( ) char b4=a,c,s,f, *pt=b; point(pt); printf(%cn,*pt); return 0; point(char *P) P+=3; (A) s (B) c (C) f (D) a33标有* *的语句的执行次数是:_。 int y,i; for(i=0;i20;i+) if (i%2=0) continue; y=y+i; /* */ (A) 20 (B) 19 (C) 10 (D) 9 34以下程序的输出结果是:_。 #inclucle sub(x,y,z) int x,y,*z; *z
23、=y-x; main( ) int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(%d,%d,%dn,a,b,c); return 0; (A) -5,-12,-17 (B) -5,-3,-2 (C) -5,-12,-7 (D) -5,-2,-735以下程序的输出结果为:_。 main( ) char cl=a,c2=b,c3=c; printf(a%cb%ctc%cn,c1,c2,c3); return 0; (A) abc abc abc (B) aabb cc (C)a b c (D) aaaa bb36经过以下语句定义后,表
24、达式z+=xy?+x:+y的值是:_。 int x=1,y=2,z=3; (A) 2 (B) 3 (C) 6 (D) 5 37在下列各m的值中,能使m%3=2m%5=3&m%7=2为真的是:_ (A) 8 (B) 23 (C) 17 (D) 638下列语句执行后的结果是:_。 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=639以下程序的输出结果是:_。 #inclucle int a=1,3,5,7; main( ) int n; int *P=a; for (n=0;n4;n+) an=*P+; printf(%dn,a3); return 0; (A) l (B) 3 (C) 5 (D) 740以下程序的输出结果是:_
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1