C语言程序设计试题及答案解析_第1页
C语言程序设计试题及答案解析_第2页
C语言程序设计试题及答案解析_第3页
C语言程序设计试题及答案解析_第4页
C语言程序设计试题及答案解析_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

C 语言程序设计试题 第 1、 2、 3 章 概述、类型、表达式 一、选择题 1、 一个 C程序由若干个 C函数组成,各个函数在文件中的位置顺序为:( ) A、 任意 B、 第一个函数必须是主函数,其他函数任意 C、 必须完全按照执行的顺序排列 D、 其他函数可以任意,主函数必须在最后 2、 下列四个叙述中,正确的是:( ) A、 C程序中的所有字母都必须小写 B、 C程序中的关键字必须小写,其他标示符不区分大小写 C、 C程序中的所有字母都不区分大小写 D、 C语言中的所有关键字必须小写 3、 下列四个叙述中,错误的是: ( ) A、 一个 C源程序必须有且只能有一个主函数 B、 一个 C源程序可以有多个函数 C、 在 C源程序中注释说明必须位于语句之后 D、 C源程序的基本结构是函数 4、 下面不是 C语言合法标识符的是:( ) A、 abc B、 5n C、 _4m D、 x3 5、 以下叙述不正确的是:( ) A. 分号是 C语句的必要组成部分 B. C程序的注释可以写在语句的后面 C. 函数是 C程序的基本单位 D. 主函数的名字不一定非用 main来表示 6、 C语言中允许的基本数据类型包括:( ) A. 整型、实型、逻辑型 B. 整型、实型、字符型 C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型 7、 C语言中能用八进制表示的数据类型为:( ) A、字符型、整型 B、整形、实型 C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型 8、 下列属于 C语言合法的字符常数是:( ) A、 97 B、 ” A” C、 t D、 ” 0” 9、 在 C语言( VC环境)中, 5种基本数据类型的存储空间长度的排列顺序为:( ) A、 charint=long int =floatdouble B、 char=intlong int =floatdouble C、 charintlong int=float=double D、 char=int=long int =floatdouble 10、 在 C语言中( VC 环境),一定是长整型常数的是:( ) A、 0L B、 4962710 C、 0412765 D、 0xa34b7fe 11、 若有以下定义语句 char c1= b , c2= e ; printf(“ %d,%cn” ,c2-c1,c2- a + A );则输出结果是:( ) A、 2, M B、 3, E C、 2, E D、输出项与相应的格式控制不一致,输出结果不确定 12、 以下合法的赋值语句是:( ) A、 x=y=100 B、 d-; C、 x + y D、 c = int(a+b); 13、 设变量 t为 int型,下列选项中不正确的赋值语句是:( ) A、 +t; B、 n1=(n2=(n3=0); C、 k=i=m; D、 a=b+c=1; 14、 在以下一组运算符中,优先级最高的是:( ) A、 =10 or a=0 B、 a=0 C、 a=10 | a=10 & a=0 16、 下列只有当整数 x为奇数时,其值为“真”的表达式是:( ) A、 x%2=0 B、 !(x%2=0) C、 (x-x/2*2)=0 D、 !(x%2) 17、 设 a为整型变量,不能正确表达数学关系 10a15的 C语言表达式是:( ) A、 1 0 a 15 B、 !(a=15) C、 a10 & a15 D、 !(a=15) 18、 已知 x=43, ch=A , y=0; 则表达式 ( x=y&ch8) D #include 以下不是 C语句的是:( ) A a=8; B a+; C if(a8); D for(i=1; i x -2 )|(4 x 8) B !( x 2 )&( x 8 ) C ( x = -2 )&( x 4 )&( x -2 )&( x 4 )|( x 8 )&( x 10;后, t的值为 0 29. ( )若 a和 b类型相同 ,在计算了赋值表达式 a=b后 b中的值将放入 a中 ,而 b中的值不变 30. ( )在 C程序中 ,%是只能用于整数运算的运算符 31. ( )在 C语言中,逻辑 “ 真 ” 等价于不等于 0的数 32. ( )C语言中字符型、整型、实型都能用八进制表示 33. ( )在 VC语言中, 5种基本数据类型的存储空 间长度的排列顺序为 :charintlong int floatdouble 34. ( )变量的三要素是:变量名、变量类型、变量的值。 三、多选题 1. 目前程序设计采用的基本方法有: A面向过程的程序设计 B面向对象的程序设计 C面向问题的程序设计 D面向机器的程序设计 第 4 章 顺序结构 一、选择题 1、下面程序的输出是:( ) main() int k=11; printf(k=%d,k=%o,k=%xn,k,k,k); A) k=11,k=12,k=13 B) k=11,k=13,k=13 C) k=11,k=013,k=oXb D) k=11,k=13,k=b 2、 以下合法的 C语言赋值语句是 :( ) A) a=b=58 B) k=int(a+b) ; C) a=58,b=58 D) - i; 3、 以下程序的输出结果是 :( ) main() int x=10,y=3; printf(“%d n”,y=x/y); A) 0 B) 1 ) 3 D)不确定 4、若变量已正确说明为 int 类型,要给 a, b, c输入数据,以下正确的输入语句是 :( ) A) read (a,b,c); B) scanf(“%d%d%d”,a,b,c); C) scanf(“%D%D%D”,%a,%b,%c); D) scanf(“%d%d%d”,&a,&b,&b); 5、 执行下面程序段后, c3 中的值是 :( ) int c1=1 , c2=2 , c3; c3=c1/c2; A) 0 B) 1/2 C) 0.5 D) 1 6、若执行以下程序段,其输出结果是:( ) int a=0 , b=0 , c=0; c=(a-=a-5) , (a=b,b+3) ; printf(“%d , %d , %d n” , a,b,c); A) 0,0,0 B) 0,0,5 C) 5,0,5 D) -10,0,-10 7、以下程序段的输出是:( ) float a=57.666; printf(“*% 2.2f*n”, a); A) *57* B) *58* C) *57.66* D) *57.67* 8、若有以下定义和语句:( ) int a=5,b b=a+; 此处 b的值是:( ) A) 7 B) 6 C) 5 D) 4 9、若有以下定义和语句:( ) char c1=b,c2=e; printf(%d,%cn,c2-c1,c2-a+A) 则输出结果是:( ) A) 2,M B) 3,E C) 2,e D) 输出结果不确定 10、以下程序的输出结果是:( ) main() int x=10,y=10; printf(%d%dn,x-,-y); A) 10 10 B) 9 9 C) 9 10 D) 10 9 11、在 C语言中,如果下面的变量都是 int类型,则输出结果是:( ) sum=pad=5; pad=sum+,pad+,+pad; printf(%dn,pad); A) 7 B) 6 C) 5 D) 4 12、以下程序的输出结果:( ) #include main() int i=010,j=10; printf(%d,%dn,+i,j-); A) 11,10 B) 9,10 C) 010,9 D) 10,9 13、在 C语言中, short类型数据的范围是 -32768 32767,下面程序段的输出结果是:( ) short i =65536; printf(%dn,i); A) 65536 B) 0 C) 1 D)超出取值范围,无输出结果 14、已知字符 A的 ASCII码为十进制的 65,下面程序的输出是:( ) main() char ch1,ch2; ch1=A+5-3; ch2=A+6-3; printf(%d,%cn,ch1,ch2); A) 67,D B) B,C C) C,D D) 不确定的值 15、若有定义和语句: char s; s=abcd; printf(%dn,s); 则结果是:( ) A) 输出 97 B) 输出 a C) 输出 adcb D) 编译不能通过 16、若有定义: int x,y; char a,b,c; 并有以下输入数据(此处 代表换行, 代表空格): 12 ABC 则能给 x赋整数 1,给 y 赋数 2,给 a赋字符 A,给 b 赋字符 B,给 c赋字符 C的正确程序段是:( ) A) scanf(x=%d y=%d,&x,&y); a=getchar(); c=getchar(); B) scanf(%d%d,&x,&y); a=getchar(); b=getchar(); c=getchar(); C) scanf(%d%d%c%c%c,&x,&y,&a,&b,&c); D) scanf(%d%d%c%c%c%c%c%c,&x,&y,&a,&a,&b,&b,&c,&c); 17、两次运行下面的程序,如果从键盘上分别输入 6和 4,则输出结果是:( ) main() int x; scanf(%d,&x); if (x+5) printf(%d,x) else printf(%dn,x-); A) 7和 5 B) 6和 3 C) 7和 4 D) 6 和 4 18、若执行下面的程序从键盘输入 3和 4,则输出是:( ) main() int a,b,s; scanf(%d%d,&a,&b); s=a; if (ab) s=b; s=s*s; printf(%dn,s); A) 14 B) 16 C) 18 D) 20 19、设 i是 int型变量 ,f是 float型变量 ,用下面的语句给这两个变量输入值 scanf(i=%d,f=%f,&i,&f); 为了把 100和 765.12分别赋给 i和 f,则正确的输入为:( ) A) 100765.12 B) i=100,f=765.12 C) 100765.12 D) x=100,y=765.12 20、以下程序的输出结果是:( ) #include main() int n; printf(%dn,n); A) -1 B) 0 C) 1 D) 不确定 二、判断题 1 ( )在 C语言中,实型数据在内存都中占 4个字节。 2 ( )在 C语言中, 参加算术( +, -, *, /, %)运算的数据可以是任何类型的数据。 3 ( )若有定义和语句: int a; char c;scanf(%d,%c,&a,&c);当通过键盘输入: 10,A 之后,则变量 a中存放的是 10,变量 c中存放的是 A 。 4 ( )C语言中,变量名只能是小写字母表示,符号常量名可用大写表示 5 ( )在 C语言中,变量可以不要定义,直接使用 6 ( )一个 C语言程序总是从主函数开始执行的 7 ( )注释语句必须用 /*和 */括起来,且只能位于某 一语句的后面 8 ( ) “ a”和 a均是占用 1个字节的内存空间 的数据 三、多选题 1. 以下所列语句中,不合法的语句是:( ) A、 a=1, b=2 B、 +a; C、 a=a+1=5; D、 y= (int) a; E、 a=b=c=10; 2. 下列描述正确的是:( ) A. putchar函数的作用是向屏幕输出一个字符 B. putchar函数能在屏幕上输出控制字符 C. putchar( c) 函数中, c只能是字符型变量,不能是整型变量 D. putchar函数能在屏幕上输出转义字符 E putchar函数的使用需要包含“ stdio.h”头文件 3. 下列描述正确的是:( ) A. getchar函数只能接收一个字符 B. getchar函数得到的字符可以赋给一个字符变量 C. getchar函数得到的字符可以赋给一个整型变量 D. getchar函数得到的字符可以作为表达式的一部分 E getchar函数是编程者自定义的函数 4. printf函数中,关于格式字符描述正确的是:( ) A格式字符 o表示以八进制无符号形式输出整数 B格式字符 u 表示以无符 号十进制形式输出整数 C格式字符 x 表示以无符号十六进制形式输出整数 D格式字符 f 表示以实数形式输出单、双精度数 E格式字符 e 表示以浮点数形式输出单、双精度数 5. 假设 int x,y,z; 若从键盘给 x、 y、 z输入数据, 下列不 正确的输入语句是 :( ) A input x、 y、 z; B scanf(%d%d%d, &x, &y, &z); C scanf(%d%d%d, x, y, z); D read(%d%d%d, &x, &y, &z); E scanf(%d%d%d, &x, &y, &z); 6. 假设 float x,y,z;,并通过 scanf(%f%f%f , &a, &b, &c);对 a 赋于 10.0, b 赋予22.0, c赋予 33.0的值,下面正确的输入形式是:( ) (注:符号代表空格 ) A、 1022 33 B、 10.022.033.0 C、 10.0,22.0,33.0 D、 10.0 22.0 33.0 E、 10 22 33 7. 若有 int a,c; char b;并通 过 scanf(%f%c%f , &a,&b,&c);对 a 赋于整数 10, b 赋予字符 M, c赋予整数 33的值,下面正确的输入形式是:( ) (注:符号代表空格 ) A、 10M 33 B、 10M33 C、 10 M 33 D、 10M33 E、 10M 33 8. 若有 char ch;,下面可以对变量 c正确赋值的语句是:( ) A ch =A ; B getchar(ch); C ch = getchar(); D scanf(“ %c” ,&ch); E printf(“ %c” ,ch= B ); 9. 下面属于转义符的有: ( ) A t B n C %d D 376 E x20 10. 若 a为整型变量,则下列表达式的值为 0的是 ( ), A a % a B a != a C 3/4 D 3 & 0 E a = 0 第 5、 6 章 选择与循环结构 一、选择题 1. 有以下程序 main( ) int i; for ( i=0; ibc) printf(%dn, d); else if ( (c-1 = d) =1) printf(%dn, d+1); else printf(%dn, d+2); 执行后输出结果是:( ) A) 2 B) 3 C) 4 D)编译 时有错,无结果 4. 有以下程序 main() int i=0,s=0; do if (i%2) i+; continue; i+; s += i; while( ib?(ac?a:c):(b); A) 5 B) 4 C) 6 D) 不确定 6. 以下程序中, while循环的循环次数是:( ) main() int i=0; while(i10) if(i1) continue; if(i=5) break; i+; A) 1 B) 10 C) 6 D) 死循环 , 不能确定次数 7. 以下程序的输出结果是:( ) main( ) int a=0,i; for(i=1;i5;i+) switch(i) case 0: case 3: a+=2; case 1: case 2: a+=3; default: a+=5; printf(%dn,a); A) 31 B) 13 C) 10 D) 20 8. 以下程序的输出结果是:( ) main() int a=4,b=5,c=0,d; d=!a & !b | !c; printf(%dn,d); A) 1 B) 0 C) 非 0的数 D) -1 9. 以下程序的输出结果是:( ) #include main() int i=0,a=0; while(i20) for( ; ; ) if(i%10)=0) break; else i-; i+=11; a+=i; printh(%dn,a); A) 21 B) 32 C) 33 D) 11 10. 阅读以下程序:( ) main() int x; scanf(%d,&x); if(x-5) printf(%dx); else printf(%dx+); 程序运行后,如果从键盘上输人 5,则输出结果是:( ) A)3 B) 4 C) 5 D) 6 11. 假定 w、 x、 y、 z、 m均为 int型变量,有如下程序段: w=1; x=2; y=3; z=4; m=(wx)?w : x; m=(my)?m : y; m=(mz)?m: z; 则该程序运行后, m的值是:( ) A) 4 B) 3 C) 2 D) 1 12. 以下程序的输出结果是:( ) main() int a, b; for(a=1, b=1; a=10) break; if (b%3=1) b+=3; continue; printf(%dn,a); A) 101 B) 6 C) 5 D) 4 13. 若执行以下程序时从键盘上输入 9,则输出结果是:( ) main() int n; scanf (%d,&n); if(n+10) printf (%dn,n); else printf(%dn,n-); A) 11 B) 10 C) 9 D) 8 14. 有以下程序段 int k=0 while(k=1) k+; 则 while 循环执行的次数是:( ) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行 1次 15. 以下程序执行后 sum的值是:( ) main() int i , sum; for(i=1;i6;i+) sum+=i; printf(%dn,sum); A)15 B)14 C) 不确定 D)0 16. 有以下程序段 int x=3 do printf (%d,x -=2); while (!(-x); 其输出结果是:( ) A) 1 B) 3 0 C) 1 -2 D) 死循环 17. 若变量 c为 char类型,能正确判断出 c为小写字母的表达式是:( ) A) a=c= a)|(c= z) C) (a=c) D) (c= a)&(c1) & (z8; y=i ) printf(“ %d %d ”, x-, y); A)10 1 9 2 B)9 8 7 6 C)10 9 9 0 D)10 10 9 0 20. 以下程序的输出结果是:( ) main() int i; for(i=1; i=6; i+) if(i%2) printf(“ #” ); continue; printf(“ *” ); printf(“ n” ); A)#*#*# B)# C)* D)*#*#* 21. 以下程序的输出结果是:( ) main() int i; for(i=A; i5) printf (“ %dn”, m); else printf (“ %dn”, m-); A ) 7 B ) 6 C) 5 D) 4 23. 运行以下程序后,如果从键盘上输入 china#回车,则输出结果为:( ) #include main() int v1=0,v2=0; char ch ; while (ch=getchar()! =#) switch (ch ) case a: case h: default: v1+; case 0: v2+; printf(“ %d,%dn”, v1,v2); A) 2,0 B) 5,0 C) 5,5 D) 2,5 24. 设有 如下定义: int a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式: (m=ab)&(n=cd)后, n的值为:( ) A)1 B)2 C)3 D)0 25. 以下程序的输出结果是:( ) main() int i,j,x=0; for (i=0;i2;i+) x+; for(j=0;j3;j+) if (j%2) continue; x+; x+; printf(“ x=%dn”, x); A)x=4 B)x=8 C)x=6 D)x=12 26. 设 x和 y均为 int型变量,则执行以下的循环后, y 值为:( ) for(y=1,x=1;y=50;y+) if(x=10) break; if (x%2=1) x+=5; continue; x-=3; A)2 B)4 C)6 D)8 27. 假定 a和 b为 int型变量,则执行以下语句后 b的值为:( ) a=1;b=10; do b-=a; a+; while (b-3;j-) if(j%3) j-; -j;-j; printf(“ %d ”, j); A)6 3 B)7 4 C)6 2 D)7 3 29. 有以下程 序 main() int x, i; for(i=1;i12 ? 15 : 65 ? 8 : 9 )后,变量 k的值为:( ) A. 9 B. 8 C. 15 D. 1 32. 以下程序运行后,如果从键盘上输人 5,则输出结果是 :( ) main( ) int x; scanf(%d, &x); if(x-5) printf(%d, x); else printf(%d, x+); A、 3 B、 4 C、 5 D、 6 33. 以下程序段的输出结果是 :( ) int k, j , s ; for(k=2;k6;k+,k+) s=1; for (j=k;j6;j+) s+=j; printf(“%d n”,s); A) 9 B) 1 C) 11 D) 10 34. 以下程序段的输出是 :( ) int i,j,m=0; for (i=1;i=15;i+=4) for (j=3;j=19;j+=4) m+; printf(“%d n”,m); A) 12 B) 15 C) 20 D) 25 35. 以下程序段的输出结果是 :( ) int i, sum; for(i=1;i6;i+) sum+=sum; printf(“%d n”,sum); A) 15 B) 14 C)不确定 D) 0 36. 下面程序的输出是:( D ) main() int x=3,y=6,a=0; while (x+!=(y-=1) a+; if (y7) n-; printf(%3d,n); A) 10 9 8 B) 9 8 7 C) 10 9 8 7 D) 9 8 7 6 38. 以下程序段的输出结果是:( ) int x=3; do printf(%3d,x-=2; while (!(-x); A) 1 B) 3 0 C) 1 -2 D) 死循环 39. 执行下面的程序后, a的值为:( ) main() int a,b; for (a=1,b=1;a=20) break; if (b%3=1) b+=3; continue; b-=5; A) 7 B) 8 C) 9 D) 10 40. 读程序: main() int num=0; while (num=2) num+; printf(%3d,num); 上面程序的输出结果是:( ) A) 1 B) 2 2 C) 1 2 3 D) 1 2 3 4 41. 以下循环体的执行次数是:( ) main() int i,j; for(i=0,j=1;i=j+1;i+=2,j-) printf(%d n,i); A) 3 B) 2 C) 1 D) 0 42. 在 C语言的循环语句 for,while,do-while语句中,用于直接中断最内层循环的语句是:( ) A) switch B) continue C) break D) if 二、判断题: 1. ( )用 1作 while循环的判断条件,则循环一次也不执行。 2. ( )for循环表达式的括号内的 3个表达式均不可以省略。 3. ( )语句 while(!E);中的条件 !E 等价于 E=0。 4. ( )语句 while(E);中的条件 E等价于 E!=0。 5. ( )若有 for( ; ; ) ,是指循环体执行 0次。 6. ( )程序有死循环的时候,上机编译不能通过。 7. ( )强制终止死循环可以使用 CTRL+BREAK组合键。 8. ( )执行 for(I=0;I3;I+);后 I的值为 2。 9. ( )执行 for(I=0,j=0;Ib) m =a; B if (a); C if (a=b)=0) m=a; D if (a=b; )=0) m=a; 3、 如果不加花括号表示 else与 if的配对关系,则 else 与 if 的匹配方法 ,不正确的 是 A else与它上面最远的 if 配对 B else与它上面最近的 if 配对 C else与离它最近的 if 配对 D.else与它上面最近的且没有和其他 else配对的 if配对 4、 关于条件运算符的叙述正确的是 A条件运算符的优先级别比关系运算符和算术运算符都低 B条件运算符是 C语言中惟一的一个三目运算符 C条件运算符的结合方向是“自右至左” D条件运算符可以替代任何 if语句的功能 5、 关于 switch语句叙述正确的是 A语句中, case的冒号后面允许没有语句。 B switch语句中,每一个 case的冒号后面都允许跟有多条语句。 C在与 switch语句配套的 case语句中所使用的表达式可以是变量或常量 D switch语句中,可以没有 default语句。 6、 在计数循环 for(表达式 1;表达式 2;表达式 3)中,可以省略的表达式是:( ) A表达式 1 B表达式 2 C表达式 3 D三个表达式都可以 E一个都不能少 7、 下列语句段是死循环的是 ( ) A n=100; B s=33; while(n) n=n%100+1; while(s+%2+s%2) s+; C for(;); D for(i=1;) if(-i)break; E x=0; do x+; while(x=0); 第 7 章 数组 一、选择题 1、若有以下说明语句: int a12=1,2,3,4,5,6,7,8,9,10,11,12; char c= a ,d,g; 则数值为 4的表达式是:( )。 A、 ag-c B、 a4 C、 ad - c D、 a d -c 2、假设 int型变量占两个字节的存储单元,若有定义: int x10=0,2,4; 则数组 x在内存中所占字节数为:( ) A、 3 B、 6 C、 10 D、 20 3、下列合法的数组定义是:( ) A、 int a=” string” ; B、 int a5=0,1,2,3,4,5; C、 char a=” string” ; D、 char a=0,1,2,3,4,5; 4、若给出以下定义: char x=” abcdefg” ; char y= a ,b , c , d , e , f , g ; 则正确的叙述为:( ) A、数组 x和数组 y等价 B、数组 x和数组 y的长度相同 C、数组 x的长度大于数组 y的长度 D、数组 y的长度大于数组 x的长度 5、下面程序段的输出结果是:( ) int j; int x33=1,2,3,4,5,6,7,8,9; for (j=0;j3;j+) printf(“ %d” ,xj2-j); A、 1 5 9 B、 1 4 7 C、 3 5 7 D、 3 6 9 6、下列程序运行后的输出结果是:( ) main() int n3,t,j,k; for(t=0;t3;t+) nt=0; k=2; for(t=0;tk;t+) for(j=0;j3;j+) nj=nt+1; printf(“ %dn” ,n1); A、 2 B、 1 C、 0 D、 3 7、 有以下程 序 main() int p7=11,13,14,15,16,17,18, i=0,k=0; while(i7 & pi%2) k =k+ pi; i+; printf(%dn, k); 执行后输出结果是 :( ) A、 58 B、 56 C、 45 D、 24 8、 以下能正确定义数组并正确赋初值的语句是 :( ) A、 int N=5,bNN; B、 int a12=1,3; C、 int c2= 1,2,3,4; D、 int d32=1,2,3,4; 9、 有以下程序 main() int m3=1,4,7,2,5,8,3,6,9; int i,j,k=2; for(i=0; i3; i+) printf(%d ,mki); 执行后输出结果是 :( C ) A、 4 5 6 B、 2 5 8 C、 3 6 9 D、 7 8 9 10、 以下能正确定义一维数组的选项是 :( ) A、 int num; B、 int num0.100; C) #define N 100 D) int N=100; int numN; int numN; 11、 下列选项中正确的语句组是 :( ) A、 char s8; s=Beijing; B、 char *s; s=Beijing; C、 char s8; s=Beijing; D、 char *s; s=Beijing; 12、有以下程序段 int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b; b=p5; b中的值是:( ) A、 5 B、 6 C、 8 D、 9 13、有以下程序 main( ) char a=abcdefg,b10=abcdefg; printf(%d %dn,sizeof(a),sizeof(b); 执行后输出结果是:( ) A、 7 7 B、 8 8 C、 8 10 D、 10 10 14、有以下程序的输出结果是:( ) void swap1(int c) int t; t=c0;c0=c1;c1=t; void swap2(int c0,int c1) int t; t=c0;c0=c1;c1=t; main( ) int a2=3,5,b2=3,5; swap(a); swap2(b0,b1); printf(%d %d %d %dn,a0,a1,b0,b1); A 、 5 3 5 3 B 、 5 3 3 5 C 、3 5 3 5 D、 3 5 5 3 15、有以下程序 int f(int b4) int i,j,s=0; for(j=0;j2) i=3-j; s+=bij; return s; main( ) int a44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printf(%dn,f(a); 执行后的输出结果是:( ) A、 12 B、 11 C、 18 D、 16 16、有以下程序 void sort(int a,int n) in t i,j,t; for(i=0;in-1;i+=2) for(j=i+2;jn;j+=2) if(aiaj) t=ai;ai=aj;aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10,i; sort(aa,10); for(i=0;i10;i+) printf(%d,aai); printf(n); 其输出结果是:( ) A、 1,2,3,4,5,6,7,8,9,10, B、 10,9,8,7,6,5,4,3,2,1, C、 9,2,7,4,5,6,3,8,1,10, D、 1,10,3,8,5,6,7,4,9,2, 17、有以下程序 void f(int a,int i,int j) int t; if(ij) t=ai; ai=aj;aj=t; f(a,i+1,j-1); main( ) int i,aa5=1,2,3,4,5; f(aa,0,4); for(i=0;i5;i+) printf(%d,aai); printf(n); 执行后输出结果是:( ) A、 5,4,3,2,1, B、 5,2,3,4,1, C、 1,2,3,4,5, D、 1,2,3,4,5, 18、 以下程序的输出结果是:( ) main() char cf35=AAAA,BBB,CC; printf(%sn,ch1); A、 AAAA B、 BBB C、 BBBCC D、 CC 19、 以下程序的输出结果是:( ) main() int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i3;i+) for(j=i;j=i;j+) t=t+bibjj; printf(%dn,t); A、 3 B、 4 C、 1 D、 9 20、有以下程序 main() int aa44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6; int i,s=0; for(i=0;i= 0 &chj= 9 ;j+=2) s=10*s+chj- 0 ; printf(“ %dn” ,s); A、 12ba56 B、 66521 C、 6 D、 62 26、设已定义 char s=” ” NameAddress” n” ;,则字符串 s所占的字节数是 :( ) A、 19 B、 18 C、 15 D、 14 27、设已定义 char c8=” Tianjin” 和 int j,则下面的输出函数调用中错误的是:( ) A、 printf(“ %s” ,c); B、 for(j=0;j8;j+) printf(“ %c” ,cj); C、 puts(c); D、 for(j=0;j8;j+) puts(cj); 28、设已定义 char a10和 int j,则下面输入函数调用中 错误的是:( ) A、 scanf(“ %s” ,a); B、 for(j=0;j9;j+) scanf(“ %c” ,aj); C、 gets(a); D、 for(j=0;j9;j+) scanf(“ %c” ,&aj); 29、设已定义 char x8和 int j,为了给该数组赋值,下面语句中正确的是:( ) A、 x8=” Turbo C” ; B、 x=” Turbo C” ; C、 x=” Turbo C” ; D、 for(j=0;j7;j+) xi=getchar(); 30、有如下程序, main() int n5=0,0,0,j,k=2; for(j=0;js2) B if(strcmp(s1,s2) C if(strcmp(s2,s1)0) D if(strcmp(s1,s2)0) 44. 若有说明 :int a4=0,0;,则下面不正确的叙述是 :( ) 。 A数组 a 的每个元素都可得到初值 0 B二维数组 a 的第一维大小为 1 C因为二维数组 a 中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加 1,故数组 a 的行数为 1 D只有元素 a00和 a01可得到初值 0,其余元素均得不到初值 45. 下列语句中,不正确的是:( )。 A char str5=hello; B char str=h,e,l,l,o,0; C char str5=hi; D char str100=; 46. 下面错误的初始化语句是:( )。 A char str=hello; B char str100=hello; C char str=h,e,l,l,o; D char str=hello; 47. 定义了一维 int型数组 a10后,下面错误的引用是:( )。 A a0=1; B a10=2; C a0=5*2; D a1=a2*a0; 48. 下面的二维数组初始化语句中 ,错误的是:( )。 A float b22=0.1,0.2,0.3,0.4; B int a2=1,2,3,4; C int a2= 1,2,3,4; D float a22=0; 49. 引用数组元素时,数组下标可以是:( )。 A整型常量 B整型变量 C整型表达式 D以上均可 50. 定义了 int型二维数组 a67后,数组元素 a34前的数组元素个数为:( )。 A 24 B 25 C 18 D 17 51. strlen(A0B0C)的结果为:( )。 A 0 B 1 C 2 D 3 52. 下面程序的运行结果是:( )。 main() int a3=1,2,3,4,5,6; printf(%d,a11); A 3 B 4 C 5 D 6 53. 下面程序的运行结果是:( )。 main() char s120=Good!; char s215=AB; printf(%d,strlen(strcpy(s1,s2); A 20 B 15 C 5 D 2 54. 下面程序的运行结果是:( )。 main() char s120=ABCDEF; int i=0; while(s1i+!=0) printf(%c, s1i+); A ABCDEF B BDF C ABCDE D BCDE 55. 下面程序的运行结果是:( )。 main() int n2=0,i,j,k=2; for(i=0;ik;i+) for(j=0;jk;j+) nj=ni+1; printf(%dn,nk); A 不确定的值 B 3 C 2 D 1 56. 下面程序的运行结果是:( )。 main() int x=22,33,44,55,66,77,88; int k,y=0; for (k=1;k=4;k+) if (xk%2=1) y+; printf(%d,y); A 0 B 1 C 2 D 3 57. 下面程序的运行结果是:( )。 main() int a33=1,2,3,4,5,6,i,j,s=0; for(i=1;i3;i+) for(j=0;j=0&chi=a&si=z) printf(%c,si); i+; A ab B ab1c2d4e C abcde D a 60. 下面程序的运行结果是:( )。 main() int i=0,n=0; char s10=298h01; for(i=0;si!=0;i+) if(si=0) n=n*10+(si-0); else break; printf(%dn,n); A 298h01 B 29801 C 01 D 298 二、判断题: 1. ( )在程序中可以对数值数组中的数据进行整体使用。 2. ( )如果 strcmp(s1,s2)的返回值为一个负数,则表明字符串 s1 一定小于字符串 s2。 3. ( )字符数组的输出不能一次性的整体输出。 4. ( )用 scanf函数输入的字符串不可以带空格。 5. ( )用 gets函数输入的字符串可以带空格。 6. ( )实现两个字符串的复制可以使用 str1=str2;语句。 7. ( )使用 strcpy函数可以实现两个字符串的复制。 8. ( )使用 strcat函数可以实现两个字符串的连接。 9. ( )使用 strlen函数可以求出一个字符串的实际长度(包含 0 字符)。 10. ( )如有定义 char a=”student” ;则数组 a的长度为 7。 11. ( )如有定义 char a20;则可以通过 a=“ I am a boy” ;给 a赋值。 12. ( )如有定义 int a23;则数组 a的最后一个元素为 a12。 13. ( )如有定义 int a34 0 ; 则数组 a的所有元素初值均为 0。 14. ( )C 语言中数组名实质上是数组的首地址,是一个变量地址,可对其进行赋值。 15. ( )构成数组的各个元素可以有不同的数据类型。 16. ( )若有说明 :int a10;,则可以 a10引用数组 a 的第 10个元素。 17. ( )引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式。 18. ( )若有 int a10=6,7,8,9,10;,则是将 5个初值依次赋给 a0至 a4。 19. ( )一个一维数组,它的每一个元素也是类型相同的一维数组时,便构成二维数组。 20. ( )在 C语言中,允许用字符串来直接初始化字符数组。 21. ( )字符数组的输出不能一次性的整体输出。 22. ( )使用 strcat函数可以实现两个字符串的复制。 三、多选题 1、 以下关于数组的描述中,正确的有:( )。 在定义数组时,有时可以将该数组的维数省略 数组名实质上是数组的首地址,是一个变量地址,可对其进行赋值 构成数组的各个元素可以有不同的数据类型 有定 义: int a3; 则定义了 a0、 a1、 a2三个数组元素 在程序中可以对数值数组中的数据进行整体使用 2、 以下关于数组的描述中,错误的有:( )。 引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式 可以通过数组名来整体引用一个数组 在程序中可以对数值数组中的数据进行整体使用 若有说明 :int a10;,则可以 a10引用数组 a的第 9个元素 若有说明 :int a10;,则可以 a10引用数组 a的第 10个元素 3、 以下关于数组的描述中,错误的有:( )。 可以通 过如下语句来完成对一个数组的输入: int a10; scanf(%d,a); 可以通过如下语句来完成对一个数组的输入: int a10; scanf(%d,&a); 若有 int a10=6,7,8,9,10;,则是将 5个初值依次赋给 a0至 a4 数组元素可以像普通变量一样使用 int a9; 则数组 a的下标范围是 1-9 4、 以下关于数组的描述中,正确的有:( )。 数组名实质上是数组的首地址,是一个常量,不能对其赋值 在定义数组时,有时可以将该数组的维数省略 一个一维数组, 它的每一个元素也是类型相同的一维数组时,便构成二维数组 如有定义 int a34 0; 则数组 a的所有元素初值均为 0 可以通过数组名来整体引用一个数组 5、 以下关于数组的描述中,错误的有:( )。 如有定义 int a23;则数组 a的最后一个元素为 a12 一个一维数组,它的每一个元素也是类型相同的一维数组时,便构成二维数组 若有说明 :static int a33; 那么数组 a中每个元素初值为 0 在定义二维数组时,可以将该数组的两个维数全部省略 如有定义 char a20; 则可以通过 a=I am a boy; 给 a赋值 6、 若有说明 :int a4=0,0;,则下面正确的叙述有:( )。 数组 a 的每个元素都可得到初值 0 二维数组 a 的第一维大小为 1 因为二维数组 a 中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加 1,故数组 a 的行数为 1 只有元素 a00和 a01可得到初值 0,其余元素均得不到初值 只有元素 a11和 a12可得到初值 0,其余元素均得不到初值 7、 以下关于数组的描述中,正确的有:( )。 若有定义 char a=hello;,则数组 a的长度为 6 有定义 char a3; 则定义了 a1、 a2、 a3三个数组元素 构成字符数组的各个元素必须是字符类型的数据 可以通过数组名来整体引用一个数组 设有数组定义 char array =China; 则数组 array所占的空间为 5个字节 8、 以下关于数组的描述中,正确的有:( )。 在 C语言中,允许用字符串来直接初始化字符数组 若有定义 char a20;,则可以通过 a=I am a boy;给 a赋值 若有 char a10=1,2,3;,则是将 3个初值依次赋给 a1至 a3 构成字符数组的各个元素必须是字符类型的数据 数组名实质上是数组的首地址,是一个常量,不能对其赋值 9、 以下关于数组的描述中,错误的有:( )。 字符数组的输出不能一次性的整体输出 若有 char a10=1,2,3;,则是将 3个初值依次赋给 a0至 a2 构成字符数组的各个元素可以是不同数据类型的元素 构成字符数组的各个元素必须是字符类型的数据 若有定义 char b=hello;,则数组 b的长度为 6 10、 下列语句中,正确的有:( ) 。 char str5=hello; char str=h,e,l,l,o,0; char str5=hi; char str100=; char str3=this; 11、 函数调用 strcat(strcpy(str1,str2),str3)的功能,以下说法错误的有:( )。 将串 str1复制到串 str2中后在连接到串 str3 之后 将串 str1连接到串 str2之后再复制到串 str3 之后 将串 str2复制到串 str1中后再将串 str3连接 到串 str1之后 将串 str2连接到串 str1中后再将串 str1复制到串 str3中 将串 str2连接到串 str1中后再将串 str3复制到串 str1中 12、 以下关于数组的描述中,正确的有:( )。 在定义数组时,有时可以将该数组的维数省略 数组元素可以像普通变量一样使用 若有 int a10=6,7,8,9,10;,则是将 5 个初值依次赋给 a0至 a4 如有定义 char a=student; 则数组 a 的长度为 7 若有定义 double x35; 则 x 数组中行下标的下限为 0,列小标的上 限为 4 13、 定义了一维 int型数组 a10后,下面正确的引用有:( )。 a0=1; a10=2; a0=5*2; a1=a2*a0; a2=a1+a0; 第 8 章 函 数 一、选择题 1. 若调用一个函数,且此函数中没有 RERUrn语句,则关于该函数正确的说法是:( ) A. 没有返回值 B. 返回若干个系统默认值 C. 能返回一个用户所希望的函数值 D. 返回一个不确定的值 2. 在 c语言中以下不正确的说法是:( ) A. 实参可以是常量、变量、或表达式 B. 形参可以是常量、变量或表达式 C. 实参可以为任意类型 D. 形参应与其对应的实参类型一致 3. 以下程序有语法性错误,有关错误原因的正确说法是:( ) main() int G=5,k; void prt_char(); k=prt_char(G); A. 语句 void prt_char();有错,它是函数调用语句,不能用 void说明 B. 变量名不能使用大写字母 C. 函数说明和函数调用语句之间有矛盾 D. 函数名不能使用下划线 4. 以下正确的说法是:( ) A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套 ,但函数的调用可嵌套 C. 函数的定义和调用均不可以嵌套 D. 函数的定义和调用均可以嵌套 5. 若使用一个数组名作函数实参,则以下正确的说法是:( ) A. 必须在主调函数中说明此数组的大小 B. 实参数组类型与形参数组类型可以不匹配 C. 在被调用函数中,不需要考虑形参数组的大小 D. 实参数组名与形参数组名必须一致 6. 在一个函数内部定义的变量是:( ) A、 简单变量 B、 局部变量 C、 全局变量 D、 标准变量 7. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:( ) A)函数调用 可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 8. 已定义以下函数 fun(int*p) return *p; 该函数的返回值是:( ) A)不确定的值 B)形参 p中存放的值 C)形参 p所指存储单元中的值 D)形参 p的地址值 9. 以下所列的各函数首部中,正确的是 :( ) A、 void play(var :Integer,var b:Integer) B、 void play(int a,b) C、 void play(int a,int b) D、 Sub play(a as integer,b as integer) 10. 当调用函数时,实参是一个数组名,则向函数传送的是 :( ) A、 数组的长度 B、 数组的首地址 C、 数组每一个元素的地址 D、 数组每个元素中的值 11. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 :( ) A、 地址传递 B、 单向值传递 C、 由实参传给形参,再由形参传回实参 D、 传递方式由用户指定 12. 以下函数值的类型是 :( ) fun ( float x ) float y; y= 3*x-4; return y; A、 int B、 不确定 C、 void D、 float 13. 下列函数的功能是 :( ) int fun1(chat* x) char *y=x; while(*y+); return(y-x-1); A) 求字符串的长度 B、比较两个字符串的大小 C、将字符串 X复制到字符串 Y D、将字符串 X连接到字符串 Y后面 14. 下面程序的输出 结果 是 :( ) void prty(int * x) printf(%dn,+*x); main() int a=25; prtv(&a); A、 23 B、 24 C、 25 D、 26 15. 以下对 C语言函数的有关描述中 ,正确的是 :( ) A、只能把实参的值传送给形参 ,形参的值不能传送给实参 B、 C函数既可以嵌套定义又可以递归调用 C、函数必须有返回值 ,否则不能使用函数 D、 C程序中所有函数 都可以嵌套调用 16. 以下叙述中不正确的是 :( ) A) 在 C中 ,函数 体 中 定义 的 动态 变量可以赋初值 ,每调用一次 ,赋一次初值 . B、 在 C中 ,函数 体 中 定义 的 静态 变量可以赋初值 ,每调用一次 ,赋一次初值 . C、 在 C中 ,局 部变量的隐含类别是自动存储类别 . D) 在 C中 ,在调用函数时 ,实在参数和对应形参在类型上只需赋值兼容 . 17. 以下 叙述中不正确的是 :( ) A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量 C) 在一个函数内定义的变量只在本函数范围内有效 D) 在一个函数内的复合语句中定义的变量在本函数范围内有效 18. 有以下程序 void fun (int a,int b,int c) a=456; b=567; c=678; main() int x=10, y=20,z=30; fun (x,y,z); printf(%d,/%d,%dn,x,y,z); 输出结果是 :( ) A、 30,20,10 B、 10,20,30 C、 456,567,678 D、 678,567,456 19. 有以下程序 ( ) int fun(int x,int y,int *cp,int *dp) *cp=x+y; *dp=x-y; main() int a, b, c, d; a=30; b=50; fun(a,b,&c,&d); printf(%d,%dn, c, d); 输出结果是 :( ) A、 50,30 B、 30,J50 C、 80,-20 D、 80,20 20. 下列程序执行后的输出结果是 ( )。 void func(int *a,int b) b0=*a+6; main() int a,b5; a=0; b0=3; func(&a,b); printf(“%d n”,b0); A、 6 B、 7 C、 8 D、 9 21. 一个完整的可运行的 C源程序中, ( )。 A、 可以有一个或多个函数 B、 必须有且仅有一个主函数 C、 可以没有主函数 D、 必须有主函数和其他函数 22. 下述函数定义形式正确的是( )。 A、 int f(int x; int y) B、 int f(int x,y) C、 int f(int x, int y) D、 int f(x,y: int) 23. 关于函数参数,说法正确的是( )。 A、 实参与其对应的形参各自占用独立的内存单元 B、 实参与其 对应的形参共同占用一个内存单元 C、 只有当实参和形参同名时才占用同一个内存单元 D、 形参是虚拟的,不占用内存单元 24. 一个函数的返回值由( )确定。 A、 return 语句中的表达式 B、 调用函数的类型 C、 系统默认的类型 D、 被调用函数的类型 25. 以下叙述中正确的是( )。 A、 C 语言程序总是从第一个定义的函数开始执行 B、 在 C 语言程序中,要调用的函数必须在 main()函数中定义 C、 C 语言程序总是从 main()函数开始执行 D、 C 语言程序中的 main()函数必 须放在程序的开始部分 26. 以下函数 fff(float x) printf(“%dn”,x*x); 的类型是( )。 A、 与参数 x 的类型相同 B、 void 类型 C、 int 类型 D、 无法确定 27. 以下对 C 语言函数的描述中,正确的是( )。 A、 C 程序由一个或一个以上的函数组成 B、 C 函数既可以嵌套定义又可以递归调用 C、 函数必须有返回值,否则不能使用函数 D、 C 程序中调用关系的所有函数必须放在同一个程序文件中 28. 以下叙述中不 正确的是( )。 A、 在 C 语言中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B、 在 C 的函数中,最好使用全局变量 C、 在 C 语言中,形式参数只是局限于所在函数 D、 在 C 语言中,函数名的存储类别为外部 29. 在一个源文件中定义的外部变量的作用域为( )。 A、 本文件的全部范围 B、 本程序的全部范围 C、 本函数的全部范围 D、 定义该变量的位置开始至本文件结束 30. 有以下函数调用语句: func(exp1,exp2),(exp3,exp4,exp5); 其中含 有的实参个数和是( )。 A、 1 B、 2 C、 4 D、 5 31. C 语言中形参的默认存储类别是( )。 A、 自动 (auto) B、 静态 (static) C、 寄存器 (register) D、 外部 (extern) 32. 以下正确的函数形式是( )。 A、 double fun(int x,int y) z=x+y; return z; B、 fun(int x,y) int z; return z; C、 fun(x,y) int x,y; double z; z=x+y; return z; D、 double fun(int x,int y) double z; z=x+y; return z; 33. 在一个源程序文件中定义的全局变量的有效范围为( )。 A、 一个 C 程序的所有源程序文件 B、 该源程序文件的全部范围 C、 从定义处开始到该源程序文件结束 D、 函数内全部范围 34. 下列函数中,能够从键盘上获得一个字符数据的函数是( )。 A、 puts( ) B、 putchar( ) C、 getchar( ) D、 gets( ) 35. 以下程序的输出结果是( )。 fun(int a,int b,int c) c=a+b; main() int c; fun(2,3,c); printf(“%dn”,c); A、 2 B、 3 C、 5 D、 无定值 36. 分析以下程序的运行结果( )。 func(int a,int b) int temp=a; a=b; b=temp; main() int x,y; x=10; y=20; func(x,y); printf(“%d,%dn”,x,y); A、 10,20 B、 10,10 C、 20,10 D、 20,20 37. 下面程序的输出是( )。 fun(int x) static int a=3; a+=x; return(a); main() int k=2,m=1,n; n=fun(k); n=fun(m); printf(“%d”,n); A、 3 B、 4 C、 6 D、 9 38. 以下程序输出的结果是( )。 int func(int a,int b) return(a+b); main() int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%dn”,r); A、 12 B、 13 C、 14 D、 15 39. 以下程序的输出结果是( )。 int a,b void fun() a=100; b=200; main() int a=5,b =7; fun(); printf(“%d%d n”,a,b); A、 100200 B、 57 C、 200100 D、 75 40. 以下程序的输出结果是( )。 int x=3; main() int i; for(i=1;ix;i+) incre(); incre() static int x=1; x*=x+1; printf(“%d”,x); A、 33 B、 22 C、 26 D、 25 二、判断题 1、 ( ) 函数定义 void max(int a,int b)表示该函数 的返回值不确定。 2、 ( )在 C语言中,函数 体中变量 的隐含存储类别是 自动变量 auto。 3、 ( )return语句作为函数的出口,在一个函数体内只能有一个。 4、 ( )在 C程序中,函数不能嵌套定义,但可以嵌套调用。 5、 ( ) C语言的源程序中必须包含库函数。 6、 ( )在 C程序中,函数调用不能出现在表达式语句中。 7、 ( )在 C函数中,形参可以是变量、常量或表达式。 8、 ( )在主函数 main( )中定义的变量都可以在其它被调函数中直接使用。 9、 ( )在 C 语言中,一个函数一般由两个部分组成,它们是函数说明和函数体。 10、 ( )C 语言程序中的 main( )函数必须放在程序的开始部分。 11、 ( )若定义的函数没有参数,则函数名后的圆括号可以省略。 12、 ( )函数的函数体可以是空语句。 13、 ( )函数的实参和形参可以是相同的名字。 14、 ( )函数调用中,形参与实参的类型和个数必须保持一致。 15、 ( )C 语言中函数返回值的类型由 return 语句中的表达式的类型决定。 16、 ( )外部类 型的变量只能定义一次,但可在不同地方声明多次。 17、 ( )外部类型的变量作用范围大,编程中应多用外部变量。 三、 多选题 1. 以下叙述中正确的有( )。 一个 C 语言程序有且仅有一个 main 函数 C 语言程序中, main 函数是没有参数的 一个函数通过其他函数间接的调用了自身,这种情况也是一种递归调用 main 函数是由系统调用的 若要通过函数参数带回多个返回值,则应使用按地址传送的参数结合方式 2. 下面叙述中,正确的有( )。 函数的定义不能嵌套,但函数调用可以嵌套 为了提高可读性,编写程序时应该适 当使用注释 变量定义时若省去了存储类型,系统将默认其为静态型变量 函数中定义的局部变量的作用域在函数内部 函数必须有返回值,否则不能使用函数 3. 以下不正确的说法有( )。 定义函数时,形参的类型说明可以放在函数体内 return 后边的值不能为表达式 函数返回值的类型可能会与函数的计算结果类型不一致 在不同的函数中可以使用相同名字的变量 如果形参与实参的类型顺序不一致,以实参顺序为准 4. 以下叙述中,正确的描述是有( )。 函数之内定义的变量称为内部变量,内部变量是全局变量 在一个函数中 既可以使用本函数中的局部变量,又可以使用外部变量 外部变量定义和外部变量说明的含义不同 外部变量与局部变量的作用范围不同 在 C 的函数中,最好使用全局变量 5. 以下正确的说法有( )。 C 语言程序的基本组成单位是函数 函数必须要有返回值 一个函数的类型为 void,在定义时,可以省略 void 函数声明是一条 C 语句 return 语句只能返回一个值 6. 以下叙述中正确的有( )。 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 函数的实参可以是常量、变量和表达式 形式参数只是局限于 所在函数 函数定义时的函数首部不是语句,后面不能跟分号 函数名的存储类别为外部 7. 以下对 C 语言函数的有关描述中,正确的有( )。 调用函数时,实参与形参应该数量相同,类型一致 函数可以嵌套定义 函数必须有返回值,否则不能正确使用 程序中有调用关系的所有函数必须放在同一个源程序文件中 C 程序由一个或一个以上的函数组成 8. 以下对 C 语言函数的有关描述中,正确的有( ) 。 在 C程序中,函数调用不能出现在表达式语句中 在 C 语言中,一个函数一般由两个部分组成,它们是函数说明和函数体 函数的实参和 形参可以是相同的名字 在 main()中定义的变量都可以在其它被调函数中直接使用 外部类型的变量只能定义一次,但可在不同地方声明多次 9. 一个数据类型为 void 的函数在被调用后,下列错误的描述有 ( ) 。 A、 函数没有返回值 B、 函数可以返回一个系统默认值 C、 函数返回值由用户临时决定 D、 函数可以返回一个不确定的值 10. 下列函数中,能够输出字符数据的函数有( )。 A、 puts( ) B、 printf( ) C、 scanf( ) D、 putchar( ) E、 put( ) 第 9 章 编译预处理 一、 选择题 1、若有宏定义“ #define PI =3.14159 ”,且在程序中有语句 s +PI; 其中宏名 PI 代替的是:( ) A、 PI的值 B、 3.14159 C、 =3.14159 D、宏定义错误,编译通不过 2、设有以下宏定义: #define N 3 #define Y(n) (N+1)*n) 执行语句 z=2*(N+Y(5+1);后, z的值为:( ) A、出错 B、 42 C、 48 D、 54 3、以下说法正确的是:( ) A、 #define和 printf都是 C语句 B、 #define 是 C语句,而 printf不是 C、 printf是 C语句,但 #define不是 D、 #define 和 printf都不是 C语句 4、编译预处理命令以 _结尾。 A、 ; B、 . C、 D、回车 5、用 C语言编写的程序是一种能运行的程序。 A、只需要经过编译就 B、只需要经过连接就 C、需要经过编译和连接才 D、不需要作任何处理就 6、 以下叙述中正确的是( )。 A、 用 #include 包含的头文件的后缀 不可以是 “.a” B、 若一些源程序中包含某个头文件,当该头文件有错时,只需对该头文件进行修改,包含此头文件的所有源程序不必重新进行编译 C、 宏命令行可以看做是一行 C 语句 D、 C 编译中的预处理是在编译之前进行的 7、 下面是对宏定义的描述,不正确的是( )。 A、 宏不存在类型问题,宏名无类型,它的参数也无类型 B、 宏替换不占用运行时间 C、 宏替换时先求出实参表达式的值,然后代入形参运算求值 D、 其实,宏替换只不过是字符替代而已 8、 以下正确的描述为( )。 A、 每个 C 语言程序必须在开头使用预处理命令 #include B、 预处理命令必须位于 C 源程序的首部 C、 在 C 语言中预处理命令都以 “#”开头 D、 C 语言的预处理命令只能实现宏定义和条件编译的功能 9、 下列选项中不会引起二义性的宏定义是( )。 A、 #define POWER(x) x*x B、 #define POWER(x) (x)*(x) C、 #define POWER(x) (x*x) D、 #define POWER(x) (x)*(x) 10、 以下程序 的输出结果是( C )。 #define f(x) x*x #include main() int a=6,b=2,c; c=f(a)/f(b); printf(“%dn”,c); A、 9 B、 6 C、 36 D、 18 11、 以下程序运行后,输出结果是( )。 #define PT 5.5 #defme S(x) PT*x*x #include main() int a=1,b=2; printf(“%4.1fn”,S(a+b); A、 49.5 B、 9.5 C、 22.0 D、 45.0 12、 下列程序执行后的输出结果是( B )。 #define MA(x) x*(x-1) #include main() int a=1,b=2; printf(“%dn”,MA(1+a+b); A、 6 B、 8 C、 10 D、 12 13、 以下程序的输出结果为( D )。 #include #define SQR(x) x*x main() int a,k=3; a=+SQR(k+1); printf(“%dn”,a); A、 6 B、 l0 C、 8 D、 9 14、 对下面程序段,正确的判断是( )。 #define A 3 #define B(a) (A+1)*a) . x=3*(A+B(7); A、 程序错误 , 不许嵌套宏定义 B、 x=93 C、 x=21 D、 程序错误 , 宏定义不许有参数 . 15、 以下程序的输出结果为( ) 。 #include #define F(y) 3.84+y #define PRINT(a) PR(a);putchar(n) main() int x=2; PRINT(F(3)*x); A、 8 B、 9 C、 10 D、 11 二、判断题 1、 ( )预处理命令行必须以 开头 , 且最后要用分号结尾。 2、 ( )宏命令的处理占用编译时间 , 而不占用运行时间。 三、多选题 1、 下面是对宏定义的描述,正确的有( )。 A、 宏不存在类型问题,宏名无类型,它的参数也无类型 B、 宏替换不占用运行时间 C、 宏替换时先求出实参表达式的值,然后代入形参运算求值 D、 预处理命令行必须以 开头 , 且最后要用分号结尾 E、 宏命令的处理占用编译时间 , 而不占用运行时间 2、 以下叙述中不正确的是( )。 A、 用 #include 包含的头文件的后缀不可以是 “.a” B、 宏不存在类型问题,宏名无类型,它的参数也无类型 C、 宏命令行可以看做是一行 C 语句 D、 C 编译中的预处理是在编译之前进行的 E、 在 C 语言中预处理命令都以 “#”开头 第 10章 指 针 一、 选择题 1、 有以下程序 void fun(char *a, char *b) a=b; (*a)+; main() char c1=A,c2=a,*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf(%c%cn,c1,c2); 程序运行后的输出结果是 :( A ) A) Ab B) aa C) Aa D) Bb 2、 下列选项中正确的语句组是 :( ) A) char s8; s=Beijing; B) char *s; s=Beijing; C) char s8; s=Beijing; D) char *s; s=Beijing; 3、 已定义以下函数 fun(int *p) return *p; 该函数的返回值是 :( ) A)不确定的值 B)形参 p中存放的值 C)形参 p所指存储单元中的值 D)形参 p的地址值 4、 若有定义: int *p3;,则以下叙述中正确的是 :( ) A)定义了一个类型为 int的指针变量 p,该变量具有三个指针 B)定义了一个指针数组 p,该数组含有三个元素,每个元素都是基 类型为 int 的指针 C)定义了一个名为 *p 的整型数组,该数组含有三个 int类型元素 D)定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个 int类型元素 5、 已定义以下函数 fun(char *p2, char *p1) while(*p2=*p1)!=0) p1+;p2+; 函数的功能是 :( ) A)将 p1所指字符串复制到 p2所指内存空间 B)将 p1所指字符串的地址赋给指针 p2 C)对 p1和 p2两个指针所指字符串进行比较 D)检查 p1和 p2 两个指针所指字符串中是否有 0 6、 有以下程序 : main() int p7=11,13,14,15,16,17,18,i=0,k=0; while(i7&*(p+i)%2) k=k+*(p+i); i+; printf(%dn,k); 执行后输出的结果是 :( ) A) 58 B) 56 C) 45 D) 24 7、 若有 如下定义 char a10,*p=a,则对 a数组中元素的不正确的引用是 :( ) A)*&a5 B)a+2 C)*(p+5) D)*(a+5) 8、 有以下程序 int *f(int *x,int *y) if(*x*y) return x; else return y; main() int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=f(p,q); printf(%d,%d,%dn,*p,*q,*r); 执行后输出结果是 :( B ) A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8 9、 有以下程序 main() char *s=one,two,three,*p; p=s1; printf(%c,%sn,*(p+1),s0); 执行后输出结果是 :( C ) A) n,two B) t,one C) w,one D) o,two 10、 有以下程序 main() int x8=8,7,6,5,0,0, *s; s=x+3; printf(%dn,s2); 执行后输出结果是 :( B ) A) 随机值 B) 0 C) 5 D) 6 11、 以下函数的功能是 :通过键盘输入数据,为数组中的所有元素赋值。 #define N 10 void arrin(int xN) int i=0; while(i=0;ps-) puts(ps); 执行后输出结果是 :( C ) A) yz B) z C) z D) x xyz yz yz xy xyz xyz 15、 有

温馨提示

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

评论

0/150

提交评论