《C语言程序设计》综合练习题与答案_第1页
《C语言程序设计》综合练习题与答案_第2页
《C语言程序设计》综合练习题与答案_第3页
《C语言程序设计》综合练习题与答案_第4页
《C语言程序设计》综合练习题与答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档C 语言程序设计综合练习题与答案、简要问答下列问题1什么是源程序?2 . C语言源程序的编译过程是怎样的?3 .简述C语言的特点4 . C/C+®序都是由函数组成的,其中最主要的、不可缺少的函数是哪一 个?举例说明该函数的结构。5函数的返回值是通过什么语句来实现的,它的格式是什么?6 .在编写C程序时,为什么要把库函数的头文件包含到用户源程序中?如 何把用户的头文件包含到用户源程序?7在计算机中,存储的数据为什么要分成多种不同的数据类型?8什么是常量?什么是变量?9 C 语言的五种基本数据类型有哪些?它们的关键字和所占的字节数分别是什么 ?10 判断标识符是否合法的三条规则是

2、什么 ?11 什么是C 语言的关键字?关键字对标示符有何影响?12 全局变量和局部变量有什么区别 ?13 什么是空语句,什么是语句块?14 结构化程序设计的三种基本结构是什么?15 三种循环语句各有什么特点 ?16 什么叫多重循环结构?17 Continue 语句与 break 语句有什么区别 ?18 字符与字符串有什么区别? b'与"b”相同吗?19 什么是数组?一维数组的定义形式是怎样的?20 字符串的结束标记是什么 ?21 什么是按位操作?C语言对按位操作有哪些要求?22 什么是指针?指针的两个操作符表示什么意义?23 指针和数组有什么关系 ?24 指针有那几种算术运算

3、?说明指针变量的算术运算与一般变量的算术运算有何区别?25 函数是由哪三部分组成的?函数定义的一般形式是什么?26 函数原型是什么情况下使用 ?有什么作用 ?27 形参和实参有什么关系,函数的两种调用方式是什么 ?28 什么是函数的递归调用 ?29 什么是函数指针?说明定义函数指针的一般形式。30 什么是内部函数?什么是外部函数?31 C语言的四种用户定义数据类型是什么?32 C 系统提供的三种主要预处理功能是什么?33 什么是文件包含?34 什么是文件?什么是流 ?二、写出下列程序段的输出结果(1) int a,b,c=1;for (a=0;a<3;a+)for (b=0;b<=

4、3;b+)c=c+1;printf("a=%d b=%d c=%dn",a, b, c);(2) int i=1 ;doif (i%10)i=i+1 ; continue ;printf(“ %5d” ,i) ;i+; While(i<=50) ;(3) int x=2 ;there: x=x+1 ;if (x<6) goto there;printf("x=%d",x) ;printf("End of program.") ;(4) int x=1, y=1;while (y<6)x=x*y;y=y+1;print

5、f("x=%d n",x);(5) int i,j,x22;for (i=0;i<2;i+) for (j=0;j<2;j+) xij=i 十 j ;printf ("xd d= d",i,j,xij);printf(" n");(6) int a5=5, 4, 3, 2, 1 , i=0 , x=0;whi1e (i<5)x=ai 十 x ; i+;printf("x=%dn",x);(7)main( )int x=10 , y=20;printf("result=% d n"

6、;,abc(x,y);return 0 ;abc(int a , int b)int c ;if (b)c=a/b+a ;return c ; e1sereturn 0 ;(8) main( )int x=10 ;int i ;for (i=0;i<3;i+)printf( “d” , fun(x) ;return 0 ;fun (int x)static int Z=3;Z=Z+x;return Z ;(9) main( )int a,b ;a=50;b=90;printf(" %d'n",(a,b);return 0 ;(10) main( )int a1

7、0=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 <stdio.h>fun(int x)int k;if (x = 0 | x = 1) return(3);k=x-fun(x-2);return k;main( )printf("%dn",fun(9)

8、;return 0;(13) #include <iostream.h>void myFunc( );void rnain( )int X=5;cout<<"n In main X is : "<<X;myFunc( );cout<<"n Back in main, X is : "<<X;void myFunc( )int X=8;cout<<"n In myFunc, local X: "<<X;cout<<"n In blo

9、ck in myFunc , X is : "<<X;int X=9 ;cout<<"n Very local, X:” <<X;cout<<"n Out of block, in myFunc, X is: "<<X;(14) #include <stdio.h>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) #incl

10、ude <stdio.h> 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,*ptr2); printf("*ptr1=%d,*ptr2=%dn",a,b);(16) #include <stdio.h> void main(void) int x,y=-2,z=0;if (

11、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 <stdio.h> int fac(int n)static int f=1;f=f*n;return(f);main()int i;for (i=1;i<=5;i+)printf("%d!=%

12、dn",i,fac(i);return;(18) #include <stdio.h>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程序的执行是从 0( A) 本程序的 main 函数开始,到 main 函数结束( B) 本程序的第一个函数开始,到本程序文件的最后一个函数结束( C) 本程序的 main 函数开始,到本程序文件的最后一个函数结束( D) 本程序文件的第一

13、个函数开始,到本程序 main 函数结束2. 一个C语言程序是由 o( A) 一个主程序和若干个子程序组成( B) 函数组成( C) 若干个过程组成( D) 若干个子程序组成3下面选项中,均是不合法的用户标示法的选项是。( E) AP_0do( F) floatla0_A( G) b-agotoint( H) _123 temp INT4以下叙述正确的是。( I) 在 C 程序中,每行中只能写一条语句(B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许 存放整数( J) 在 C 程序中,如论是整数还是实数,都能被准确无误地表示6欢迎下载 。精品文档(D)在C程序中,是只能用于整数

14、运算的运算符5. 以下C程序的正确的运行结果是 o (注:一表示空格) main()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=-_ 43456y=-43456y=- 0043456y=-0043456y=-43456y=+-43456(C) y=-43456(D)y=43456y=-43456y=-004345

15、6y=- 0043456y=00043456y二一43456y=+434566. 设x,y和z是int型变量,且x=3,y=4,z=5 ,则下面表达式中值为0的是(B) x<=y(D) !(x<y)&&!z|1)(0 +(D) !=(A) 'x'&&'y'(C) x|y+z&&y-z7. 以下运算符中优先级最低的是(A) ,(B) &&8. 以下if语句语法正确的是<(A) if (x>0)printf("%f',x) else printf("%

16、f",-x);(B) if (x>0) x=x+y;printf("%f",x); else printf("%f",-x);(C) if (x>0) x=x+y;printf("%f",x);else printf("%f",-x);(D) if (x>0) x=x+y;printf("%f",x);else printf("%f",-x);9. 以下程序段 ox=-1; do x=x*x; while (!x);(A)是死循环(B)循环执行二次

17、(C)循环执行一次(D)有语法错误10. 执行语句for (i=1;i+<4;); 变量的值是。(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','0'printf("%s",c);(A

18、) 'a''b'(B) ab(C) ab-c(D) abc13. 在C语言中,以下正确的说法是(A)实参和与其对应的形参各占独立的存储单元(B)实参和与其对应的形参占用同一个存储单元(C)只有当实参和与其对应的形参同名时才占用同一个存储单元(D)形参是虚拟的,不占用存储单元14. 用数组名作为函数调用的实参,传递给形参的是 。(A)数组的首地址(B)数组第一个元素的值(C)数组中全部元素的值(D)数组元素的个数15. 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)自动(auto)(B)静态(static )(C)外部(extern )(D)寄存器(

19、register )16. 以下叙述中正确的是。(A)在程序的一行上可以出现多个有效的预处理命令行(B)使用带参的宏时,参数的类型应与宏定义时一致(C)宏替换不占用运行时间,只占编译时间(D)以下定义中C R是称为“宏名”的标示符#define C R 04517. 若有以下宏定义:#define N 2#defin Y(n) (N+1)*N)则执行语句z=2*(N+Y(5);后的结果是。(A)语句有错误(B) z=34(C) z=70(D) z 无定值18. 下面程序应能对两个整型变量的值进行交换。以下正确的说法是Q main() int a= 10,b=20;8欢在下载精品文档printf

20、("(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 即可( C) 该程序有错, 只要将 swap() 函数中的形参p 和 q 以及 t 均定义为指针(执行语句不变)即可( D) 以上说法都不正确19. 若有定义 int a=5; 下面对( 1)和( 2)两个语句的正确解释是

21、 ( 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; 则在下面表达式中不表示s1 的地址的是_。( A) s+1( B) s+( C) &s0+1( D) &s121

22、 编译执行下列程序 , 结果是: 。#inclucle<stdiO h>main( )int i=6;y=4;z=2;printf("%dn",i/y%z);return0;(A) 显示出错信息 , 不能执行。(B) 0 (C) 1 (D) 222 以下程序的输出结果是: 。#inclucle <stdio.h>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

23、<stdi0.h>main( )int x=023;printf("%dn",-x);return 0;(A) 18(B) 22(C) 23(D) 1924 不能进行 +和- 运算的数据类型是: 。(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,

24、执行语句printf("%4d,%4d",a,b) 的输出结果为:(A) 12 , 123 (B) 12, 12345(C) 12 , 1234 (D) 12, 12345628 以下程序的输出结果是: 。main( )int i=1,sum=0;while (i<10)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 <stdi

25、o.h>main( )int a,b,c,x,y,z; a=10;b=2;c=!(a%b);x=!(a b);y=(a<b)&&(b>=0);z=(a<b)|(b>=0);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=*p

26、t+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:432 以下程序的输出结果是: 。point(char *pt);main( )char b4='a','c','s','f', *pt=b;point(pt);printf("%c 'n",*pt);return 0;point(c

27、har *P)P+=3;(A)s(B) c(C)f(D) a33 标有* * 的语句的执行次数是: 。int y,i;for(i=0;i<20;i+)if (i%2=0)continue;y=y+i; /* */(A) 20 (B) 19(C) 10 (D) 934 以下程序的输出结果是: 。#inclucle <stdio.h>sub(x,y,z)int x,y,*z;*z=y-x;main( )int a,b,c;sub(10,5,&a) ;sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%dn",a

28、,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 经过以下语句定义后 , 表达式 z+=x>y?+x:+y 的值是: 。int x=1,y

29、=2,z=3;(A) 2 (B) 3(C) 6 (D) 537 在下列各 m的值中,能使 m%3=2 & m%5=3&&m%7=Q的是:(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 <stdio.h>int a=1,3,5,7;main( )int n;int *P=a;for (n=0;n<4;n+) an=*P+;printf("%

30、dn",a3);return 0;(A) l (B) 3(C) 5 (D) 740 以下程序的输出结果是: 。struct studentchar name20;char sex;int age;stu3="LiLin",'M',18,"ZhangFun",'M',19,"WangMin",'F',20;main( )struct student *P;P=stu;printf("%s,%c,%dn",P->name,P->sex,P->a

31、ge);return 0;(A) WangMin,F,20 (B) ZhangFun,M,19(C) LiLin,F,19 (D) LiLin,M,1841 以下叙述中不正确的是: 。(A) 一个好的程序应该有详尽的注释(B) C 程序中的#所加6和#6巾ne均不是C语句(C)在C程序中,赋值运算符的优先级最低(D) 在C程序中,j+;是一条赋值语句。42 以下各选项中,合法的C语言关键字是: o(A) integer (B) Char(C) short (D) Long43 设 i 和 x 都是 int 类型 , 则 for 循环语句for (i=0,x=0;i<=9 &x!=

32、876;i+) scanf("%d", x);(A) 最多执行 10 次 (B) 最多执行 9 次(C) 是无限循环(D) 循环体一次也不执行44 当 a=3,b=2,c=1 时 , 执 行 以 下 if 语 句 后a=,b=,c=。if (a>c);b=a;a=c;c=b;(A) 1 2 3 (B) 3 2 1(C) 1 3 3 (D) 1 3 245 下面的程序中循环语句能执行多少次循环?int x=10;dox=x-1; while(x>=8);(A) 1 次(B) 3次(C) 2 次(D) 4次46 组成C语言程序的是: 。(A) 子程序 (B) 过程(

33、C) 函数 (D) 主程序和子程序47 若有代数式ae/bc, 则错误的 c 语言表达式是: (A) a b c*e (B) a*e b*c(C) a*e bc (D) a*ecb ,48 若有以下定义, 则对数组元素的正确引用是: 。int a5,*P=a(A) *(P+5) (B) *P+2(C) *(a+2) (D) *&a5四、判断对错1. 所有的预处理命令都是以符号"#" 开头的 , 必须放在程序的开头部分.( )2. 所有的C语言程序都必须有一个名为main的主函数。()3. 函数调用自己本身称为递归调用 , 或者说 , 自己定义自己。 ()4. Int

34、,a15,char 都是合法的标识符。()5. 'b'和"b"是等同的。()6. C语言本身没有输入输出语句。()7. 当说明一个结构体变量时, 系统分配给它的内存是成员中占内存量最大者所需的容量()8. C语言共用体类型变量在程序运行期间所有成员一直驻留在内存中。()9. 系统的标准输入文件是指硬盘。()10. 在C语言中,如果被调用的函数的定义出现在主调用函数之前,在函数原型可以省略。()五、求下列表达式或变量的值(其中变量都为 int 型)1 5>3& !(7>4)值=2 10<12 !(17>20)|14!=16值=3 x=5;x+=7; 求 x 的值。 x=4 x=6;x<<2; 求 x 的值。 x=5 5&7|6值=6 5*32%4值=7 x=4;y=x<6? 5:8 求 y 的值。 y=8 x=5;y=(x-,z=x+1,x*z);求 y 的值。 y=9 x=3;y=+x; 求 x 和 y 的值。 x= y=10 x=7

温馨提示

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

评论

0/150

提交评论