高职升本练习题-2015版-辅导用

更新时间:2024-01-06 12:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章 程序设计和C语言

一、单项选择题 1.C语言属于( )

A) 机器语言 B) 低级语言

2.用C语言编写的代码程序____。

C) 汇编语言 D) 高级语言

A、可立即执行 B、是一个源程序 C、经过编译即可执行 D、经过编译解释才能执行

3.以下叙述中正确的是____。

A、C语言的源程序不必通过编译就可以直接运行

B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C、C源程序经编译形成的二进制代码可以直接运行 D、C语言中的函数不可以单独进行编译

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

A、在C语言程序中,main函数必须放在其他函数的最前面 B、每个后缀为.C的C语言源程序都可以单独进行编译 C、在C语言程序中,只有main函数才可单独进行编译 D、每个后缀为.C的C语言源程序都应该包含一个main函数

5.下列说法中正确的是( ) 。

A) 由于C源程序是高级语言程序,因此一定要在VC软件中输入。

B) 由于C源程序是由字符流组成的,因此可以在任何文本编辑的软件中输入。 C) 由于C程序是高级语言程序,因此输入后即可执行。 D) 由于C程序是高级语言程序,因此它是由机器指令组成的。

6.系统默认的C语言源程序扩展名为.C,需经过( )之后,生成.exe文件,才能运行? A) 编辑?编译 B ) 编辑?连接 C) 编译?连接 D) 编辑?改错 7.C语言程序经过编译后生成的文件名的后缀为( ) A) .C B ) .obj C) .exe D) .cpp

8.C语言程序编译、连接后生成的文件名的后缀为( )

A) .C B ) .obj C) .exe D) .cpp 9.C语言程序是由( )构成的。

A) 一些可执行语句 C) 函数

B) main函数

D) 包含文件中的第一个函数

10.C语言可执行程序从( )开始执行。

A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 D) 包含文件中的第一个函数 11.C语言程序从main()函数开始执行,这个函数写在( )。

A) 程序文件的开始 B) 程序文件的最后 C) 它所调用的函数的前面 D) 程序文件的任何位置 12.下列说法中错误的是( )。

1

A) 主函数可以分为两个部分:主函数说明部分和主函数体。 B) 主函数可以调用任何非主函数的其它函数。 C) 任何非主函数可以调用其它任何非主函数。 D) 程序可以从任何非主函数开始执行。

13.以下叙述中正确的是____。

A、C语言规定必须用main作为主函数名,程序将从此开始执行

B、main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等 C、C语言程序将从源程序中第一个函数开始执行

D、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

14.以下叙述错误的是____。

A、一个C程序可以包含多个不同名的函数 B、一个C程序只能有一个主函数

C、C程序在书写时,有严格的缩进要求,否则不能编译通过 D、C程序的主函数必须用main作为函数名

15.下列关于C语言的说法错误的是( )。

A) C程序的工作过程是编辑、编译、连接、运行 B) C语言程序不区分大小写字母

C) C程序的三种基本结构是顺序、选择、循环 D) 一个C程序总是从main函数开始执行的 16.关于C语言程序的注释以下描述错误的是( )

A) 只能由“/*”开头,“*/”结尾 B) 由“/*”开头,“/*”结尾

C) 只能由“//”开头 D) 由 “//”开头或由“/*”开头“*/”结尾 17.编译预处理命令前加符号( )来说明,并且不加分号结束 A) # B) $ C) * D) &

18.一个结构化程序通常由3种基本结构组成,它们是顺序结构、选择结构和( )

A) 循环结构 B) 函数结构 C) 控制结构 D) 复合结构

19.C语言中用于结构化程序设计的三种基本结构是____。

A、顺序结构,选择结构,循环结构 B、if,switch,break C、for,while,do-while D、if,for,continue

2

第3章 数据类型-输入输出-顺序结构程序设计

一、单项选择题

1.下列关于C语言用户标识符的叙述中正确的是____。

A、用户标识符中可以出现下划线和中划线(减号) B、用户标识符中不可以出现中划线,但可以出现下划线

C、用户标识符中可以出现下划线,但不可以放在用户标识符的开头 D、用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头

2.以下4组用户定义标识符中,全部合法的一组是____。

A、_main B、if C、txt D、int

Enclude -max REAL k_2 Sin turbo 3COM _001

B、Void

C、_3com_

D、int

3.以下不能定义为用户标识符的是____。

A、scanf

4.下面四个选项中,合法的标识符是 。

A)auto B)define C) 6a D) c

5.以下选项中合法的用户标识符是 。

A) long B) _2Test C) 3Dmax D) A.dat

C) for D) 2a

6. 请选出可用作C语言用户标识符的一组标识符 A) void B) a3_b3

define _123 *abc do WORD sum case sizeof

7.下列选项中,合法的C语言关键字是____。

A、VAR B、cher C、integer D、default

8.不是C语言提供的合法关键字是 。

A)switch B)cher C)case D)default

9.C语言提供的合法关键字是 。

A)next B)string C)do case D)struct

10.下列不属于C语言中关键字的是 。

A) long B) print C)default D)typedef 11.C语言中的简单数据类型包括 。

A)整型、实型、逻辑型 B)整型、实型、逻辑型、字符型

C)整型、字符型、逻辑型 D)整型、实型、字符型 12.下列关键字中,不表示整型的是 。 A)int B)long

C)short D)float 13.下列关键字中,表示浮点型的是 。 A)int B)long int

3

C)short int D)float 或 double

14.C语言中char类型数据占字节数为____。

A、3 B、4 C、1 D、2

15.关于C语言中数的表示,以下叙述正确的是____。

A、只有整型数在允许范围内能精确无误的表示,实型数会有误差 B、只要在允许范围内整型数和实型数都能精确表示

C、只有实型数在允许范围内能精确无误的表示,整型数会有误差 D、即使在允许范围内,整型数和实型数也都会有误差

16.下列常数中,不能作为C语言常量的是 。

A) 2.5e-2 B) 3.0f C) ”com” D) ’#’

17.以下符合C语言语法的实型常量是____。

A、1.2E0.5 B、3.14159E C、0.5E-3 D、E15

18.以下选项中关于C语言常量的叙述错误的是____。

A、所谓常量,是指在程序运行过程中,其值不能被改变的量 B、常量分为整型常量、实型常量、字符常量和字符串常量 C、经常被使用的常量可以定义为符号常量 D、经常被使用的变量可以定义成常量

19.下列常数 是正确的C语言字符常量。

A) ”x” B) e3 C) ”COMPUTER” D) ’#’ 20.在下列常量中,属于字符型常量的是 。

A) A B) 'a' C) \21.以下选项中合法的字符常量是

A) “B” B) ‘\\n’ C) ‘68’ D) E 22.下面字符常量表示错误的是

A) ’a’ B) ’?’ C) ’\\n’ D) ”\\n” 23.已定义c为字符型变量,则下列语句中正确的是 。

A)c='97' B)c=\C)c=‘a’ D)c=\24.已知ch是字符型变量,不正确的赋值语句是 。

A) ch='a+b' ; B) ch=' \\0 ' ; C) ch=' 7'+' 9' ; D) ch=5+9; 25.C语言中字符型(char)数据在内存中的存储形式是 。 A) 原码 B) 补码 C) 反码 D) ASCII码

26.已定义c为字符型变量,则下列语句中正确的是____。

A、c='97'; B、c=\ C、c=97; D、c=\

27.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为

A) 68 B) D C) 错误 D) d

28.若有定义语句 char c='\\101';则变量c在内存中占____。

A、1个字节 B、2个字节 C、3个字节 D、4个字节

29 . C语言中运算对象必须是整型的运算符是 。

4

A) %= B) / C) = D) 〈= 30. 在C语言程序中,表达式8/5的结果是 。

A)1.6 B) 1 C) 3 D) 0 31. 在C语言程序中,表达式5%2的结果是 。 A) 2.5 B) 2 C) 1 D) 3 32. 下面 表达式的值为4.

A) 11/3 B) 11.0/3 C) (float)11/3 D) (int)(11.0/3+0.5)

33.已知 float a=2,b=4,h=3;,以下C语言表达式与代数式 1/2((a+b)h) 计算结果不相符的是____。

A、(a+b)*h/2 B、(1/2)*(a+b)*h C、(a+b)*h*1/2 D、1.0/2*(a+b)*h

34.若有以下程序段

int c1=1,c2=2,c3; c3=1.0/c2*c1;

则执行后,c3中的值是____。

A、0

B、0.5

C、1

D、2

35.以下选项中正确的定义语句是____。

A、double a; b; C、double a=b=7; #include main(){

} A、F '9'

char c1,c2;

B、double a=7, b=7; D、double, a, b;

36.以下程序的输出结果是____。

c1='C'+'8'-'3'; c2='9'-'0';

printf(\

B、表达式不合法输出无定值 C、H '9'

D、H 9

37.以下叙述中正确的是____。

A、若有int a=4,b=9; 执行了a=b;b=a;之后,a的值为9,b的值为4

B、若有int a=4,b=9; 执行了a=b后,a的值已由原值改为b的值,b的值变为0 C、若有int a=4,b=9; 执行了a=b;b=a;之后,a和b的值均为9 D、若有int a=4,b=9; 执行了a=b;b=a;之后,a和b的值均为4

38. 若“int n; float f=13.8;”,则执行“n=((int)f)%3”后,n的值是 。

A) 1 B) 4 C) 4,333333 D) 4.6

39.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是____。

A、1 B、2 C、2.0 D、2.5

40. 设x为int型变量,则执行语句x=10; x+=x; 后,x的值为 A) 10 B) 20 C) 40 D) 30

41. 已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是

5

#define PI 3.14 int main ( ){ float r,cir,area;

printf(\输入圆半径:\

scanf(\ cir=2*PI*r; area=PI*r*r;

printf(\周长:%.2f\\n面积:%.2f\\n\ return 0; }

5、输入圆柱形底面半径和高,计算圆柱形体积并输出,输出结果保留2位小数。

#include #define PI 3.14 int main ( ){ }

11

float r,h,v;

printf(\输入圆柱体底面半径和高:\scanf(\v=PI*r*r*h;

printf(\圆柱体体积为:%.2f\\n\return 0;

第4章 选择结构程序设计

一、单项选择题

1. 在C语言中,能代表逻辑值\真\的是( )。

A) true B)大于0的数 C)小于0的数 D)非0的数 2.C语言中,关系表达式和逻辑表达式的值是 。

A) 0 B) 0或1 C) 1 D) ?T?或?F? 3. 逻辑运算符的运算对象数据类型( )

A)只能是逻辑型 B)只能是0和1 C)只能是正整数和0 D)可以是任何类型

4.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是____。

A、abs(x-y)<10

B、x-y>-10&&x-y<10

C、(x-y)>-10||(x-y)<10 D、(x-y)*(x-y)<100

5.设a为整型变量,不能正确表达数学关系:10

A、10

B、a==11||a==12||a==13||a==14 D、!(a<=10||a>=15)

C、a>10 && a<15

6. 能正确表示逻辑关系:“a≥10或a≤0” 的C语言表达式是( )。

A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=0 7. 判断char型变量c1为小写字母的表达式为( )。 A)?a?<=c1<=?z?

B)(c1>=?a?) & (c1<=?z?)

C)(?a?<=c1)AND (?z?>=c1) D)(c1>=?a?)&& (c1<=??z?)

8. 有定义char c; c=getchar(); 判断字符变量c为大写字母的正确表达式为( )。 A) ?A?==?A?&& c<=?Z C)A==A && c<=Z 9. 判断x的值为奇数,以下不能满足要求的表达式是( )。 A) x%2==1 B)!(x%2) C)x%2 D) !(x%2==0)

10.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的表达式是 。

A) ?a?&&?b? B) a<=b C) a||b+c&&b-c D) !((a

11.整形变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是____。

A、x||y B、x+y

C、!x||y

D、!x&&!y

D、(3<4)==1

12.下列关系表达式中,结果为“假”的是____。

A、(3+4)>6 B、(3!=4)>2 C、3<=4||3

13. 已知a=4,ch=?M?,b=0,则表达式(a>=b&&ch

14. 若有定义语句 int a=3,b=2,c=1; 并有表达式 ①a%b||1 ②a>b>c ③b&&c+1 ④c+=1,则表达式值相等的是( )

A) ①和② B) ②和③ C) ③和④ D) ①和③ 15. 执行下面的程序段后,z的值为( )

int x=10,y=20,z; char c=?A?; z=(x&&y)&&(c>?B?); A)0 B) 1 C) 假 D) 真

16.如果int a=1,b=2,c=3,d=4;则条件表达式\的值是 。

12

A)1 B) 2 C)3 D)4

17. 有:int w=11,x=12,y=3,m; 执行下面语句后m的结果是 。 m=(w

A) 1 B) 2 C) 3 D) 以上结果都不对 18. 表达式“1?(0?3:2)(10?1:0)”的值是( )。

A) 3 B) 2 C) 1 D) 0

19. C语言对嵌套if语句的规定是:else语句总是与( )配对。

A) 其之前最近的if B) 第一个if

C) 缩进位置相同的if D) 其之前最近的且尚未配对的if 20. 在C语言if语句中,用来决定分支流程的表达式可以是( )。

A)可用任意表达式 B)只能用逻辑表达式或关系表达式 C)只能用逻辑表达式 D)只能用关系表达式 21. 若k是int型变量,且有下面的程序段, 输出结果是( )。

int k; k= -3;

if (k<=0) printf(“####”) ; else printf(“&&&&”);

A)#### B)&&&& C)####&&&& D)有语法错误,无输出结果

22.下列条件语句中,功能与其他语句不同的是____。

A、if(a) printf(\B、if(a==0) printf(\C、if(a!=0) printf(\D、if(a==0) printf(\

23. 以下程序段的输出结果是( )。

int a=10,b=50,c=30 ; if(a

printf(\

A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50 24. 以下程序段的输出结果是( )。

int a=10,b=50,c=30 ; if(a>b) a=b ; b=c ; c=a ;

printf(\

13

A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50 25. 输入1,-1,以下程序的输出结果是( B );如果输入 -1,1,则以下程序的输出结果是( C )。

main() { int x,y,z=1;

scanf(\ if(x

A) 0 B) 1 C) 2 D) 3 26. 以下程序段的输出结果是( )。

#include main() {

int a=4,b=5,t=0;

printf(\

A) a=5,b=4 B) a=4,b=5 C) a=5,b=0 D) 语法错误 27. 若有定义:float x; int a,b; 则以下正确的 switch 语句是( )

A) switch(x)

{ case 1.0: printf(“*\\n”); case 2.0: printf(“$\\n”); } B) switch(x)

{ case 1: printf(“*\\n”); case 2: printf(“$\\n”); }

C) switch(a+b)

{ case 1: printf(“*\\n”); case 2: printf(“$\\n”); }

D) switch(a+b)

{ case 1.0: printf(“*\\n”); case 2.0: printf(“$\\n”); }

28. 若int i=10; 执行下列程序后,变量i的正确结果是( )。 switch ( i ) { case 9: i+=1; break; if(a

14

case 10: i+=1; break; case 11: i+=1; break; default : i+=1; }

A)13 B)12 C)11 D)10

29. 若int i=10; 执行下列程序后,变量i的正确结果是( )。 switch ( i ) { case 9: i+=1; case 10: i+=1; case 11: i+=1; break; default : i+=1; }

A)13 B)12 C)11 D)10

30. 若int i=10; 执行下列程序后,变量i的正确结果是( switch ( i ) { case 9: i+=1; case 10: i+=1; case 11: i+=1; default : i+=1; }

A)13 B)12 C)11 D)10 31. main()

{ int x=0,a=0,b=0;

switch(x){

case 0: b++; case 1: a++; case 2: a++;b++;} printf(“a=%d,b=%d\\n”,a,b);} 该程序的输出结果是( )。

A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 二、阅读程序,写出运行结果

1.

#include main(){ int r;

scanf(“%d”,&r); float num=3.14,a=0; if(r>0) a=2*num*r; printf(\

15

)。 D) a=2,b=2

}

输入 2,运行结果为:result is 12.560000 输入-2,运行结果为:result is 0.000000 2.

#include main(){

int a=12, b= -34, c=56, min; min=a;

if(min>b) min=b; if(min>c) min=c; printf(\}

运行结果为:min=-34 3.

#include main(){ int x=5,a=1,b=1; if (x!=a+b)

printf(\else

printf(\}

运行结果为:x=4 4.

#include main( ){ char c=getchar(); if ((?0?<=c ) &&(c<=?9?)) printf(“YES”); else

printf(“NO”); }

若输入 5,运行结果为:YES 若输入c,运行结果为:NO

16

5.

#include main(){

int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a;

printf(\}

运行结果为:a=10 b=30 c=10 6.

#include main(){ int x=10,y=10; if(x<9)

printf(\x--; if(x>=9)

printf(\else

printf(\}

运行结果为:11 7.

#include main(){ int a=6,b=6; if(a>5) { a*=2; b/=2; } else a/=2; b*=2;

printf(\ b=%d\\n\}

17

运行结果为:a=12 b=6 8.

#include main ( ){

float c=3.0 , d=4.0; if ( c>d ) c=5.0; else if ( c==d ) c=6.0; else c=7.0;

printf ( “%.1f\\n”,c ) ; }

运行结果为:7.0 9.

#include main() { int m;

scanf(\ if (m >= 0)

{ if (m%2 == 0)

printf(\

else

printf(\ } else

{ if (m % 2 == 0) printf(\ else

printf(\

} }

若键入-9,则运行结果为: -9 is a negative odd 10.

18

#include main() { int x=2,y= -1,z=5; if(x

printf(“%d\\n”,z); }

运行结果为: 5 11.

#include main(){ int a=2,b=3,c=1; if (a>b) if (a>c) printf (“%d\\n”,a); else

printf (“%d\\n”,c); printf (“over!\\n”); }

运行结果为: over! 12.

#include main(){

int a=0,b=1, d=20; if(a) d=d-10; else if(!b) d=15; else d=25; printf(\}

运行结果为:d=25

19

13.

#include main(){ int a,b,c,x,y; a=b=c=0; x=10; if(a) x-=5; else if(b) y=20; else if(!c) y=45; else x+=5;

printf(\printf(\}

运行结果为: x=10 y=45 14.

#include main(){ float a,b,c,t; a=3;b=7;c=1; if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;}

printf(\}

运行结果为:1.00,3.00,7.00 15.

#include

20

main( ){ int a=0,b=0,c=0; switch(c) { case 0: b++; case 1: a++; case 2: a++;b++; }

printf(\}

运行结果为:a=2,b=2 16.

#include main( ) { char ch;

ch=getchar( ); switch(ch)

{ case ?A? : printf(“%c”,?A?); case ?B? : printf(“%c”,?B?); break; default: printf(“%s\\n”,”other”); } }

当从键盘输入字母A时,运行结果为:AB 当从键盘输入字母a时,运行结果为:other 17.

#include main() { char grade=?C?; switch(grade)

{ case ?A?: printf(“90-100\\n”); case ?B?: printf(“80-90\\n”);

case ?C?: printf(“70-80\\n”); case ?D?: printf(“60-70\\n”);

break;

case ?E?: printf(“<60\\n”); default : printf(“error!\\n”);

}

21

}

运行结果为: 70-80 60-70 18.

#include main() { int i=10; switch ( i )

{ case 9: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; }

printf(“i=%d\\n”,i); }

运行结果为: i=13

三、编程题

1、输入一个整数,判断其奇偶性。 #include void main(){

int m; scanf(\ if (m%2 == 0) }

2、输入一个正整数,判断其是否为3和7的公倍数,若是输出“Yes”,否则输出“No”。 #include void main(){

int m; scanf(\

if (m%3 == 0&& m%7 == 0)

printf(\

printf(\

printf(\

else

22

else }

printf(\

3、输入一个字符,如果是英文字母,输出“abcd”,如果是数字字符,输出“####”,如果都不是,输出“other”。 #include int main ( ) {

char c; c=getchar();

if(c>=?A?&&c<=?Z?|| c>=?a?&&c<=?z?)

printf(“abcd”); else if(c>=?0?&&c<=?9?) printf(“####”);

else

printf(“other”); return 0; }

4、输入三个数,按照从小到大的顺序输出。 #include int main(){ float a,b,c,t;

scanf(“%f%f%f”,&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;}

printf(\}

5、函数y=f(x)表示如下,编程实现输入一个x值,输出y值。 2x+1 (x<0) y= 0 (x=0) 2x-1 (x>0)

#include void main() {

23

int x,y; scanf(“%d”,&x); if(x<0) y=2*x+1; else if(x>0) y=2*x-1; else y=0;

printf(“%d”,y); }

6、编程,输入每个月的上网时间,计算上网费用,资费标准如下:

30元??费用??每小时3元?每小时2.5元? #include void main() { int hour; float fee;

printf(“please input hour:\\n”); scanf(“%d”,&hour); if(hour<=10) fee=30; else if(hour<=50) fee=3*hour; else fee=hour*2.5;

printf(“The total fee is %f”,fee); }

?10小时10?50小时?50小时 24

第5章 循环结构程序设计

一、单项选择题

1.在C语言中,下列说法中正确的是( )。

A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。

C) do-while语句构成的循环在while后的表达式非零时结束循环。 D) do-while语句构成的循环,在while后的表达式为零时结束循环。

2.t为int类型,进入下面的循环之前,t的值为0

while(t=1){ ?? } 则以下叙述中正确的是____。 A、循环控制表达式的值为0 C、循环控制表达式不合法

B、循环控制表达式的值为1 D、以上说法都不对

3. 语句while(y) { ?? }中的表达式 y等价于

A)y==0 B)y=1 C)y=!0 D) y==1

4. 语句while(!y) { ?? }中的表达式 !y等价于 A)y==0 B)y=1 C)y=!0 D) y==1

5.对于break语句和continue语句的说法错误的是( )

A) break语句不能用于循环语句和switch语句之外的任何其他语句中。 B) break和continue也可以用于if语句中

C) continue语句只结束本次循环,而不是终止整个循环的执行。 D) break语句是结束整个循环过程,不再判断执行循环的条件是否成立。 6. 若有 int a=1,x=1;

while(a<10) x++; a++; 则循环执行( )。

A)无限次 B)不确定次 C)10次 D)9次 7. 有以下程序段

int k=0; while(k) k++;

则while循环体执行的次数是 A) 无限次

B) 有语法错,不能执行 D) 执行1次

C) 一次也不执行 8. 以下程序段 ( )

x=-1; do { x=x*x; } while(x>0);

A) 是死循环 B) 循环执行一次 C) 循环执行二次 D) 有语法错误 9. 循环 for(i=0,x=1;i=10&&x>0;i++){……} 执行( )。

A)无限次 B)不确定次 C)10次 D)9次

25

10. 有如下程序

main()

{ int i,sum=2;

for(i=1;i<=3;i+=2) sum+=i; printf(“%d\\n”,sum); } 该程序的执行结果是

A) 6 B) 3 C) 死循环 D) 4

11. 若i、j已定义为int类型,则以下程序段中的语句内 printf(“*”); 执行次数是( )

for(i=5;i>1;i--) for(j=0;j<4;j++) { printf(“*”); }

A)5 B) 4 C)20 D)16

12.若ij已定义为int类型,则以下程序段中内循环体{...}的总的执行次数是____。

for (i=5;i;i--)

for(j=0;j<4;j++){...}

A、20

B、25

C、24

D、30

13. 执行语句a=0; for(j=0;j<=3;j++) a+=1; 后变量j的值是 .

A)0 B) 3 C)4 D) 1

14. 执行语句 for ( i=0; i<3 ; i+=2 ) {……} ”后,变量i的值为( )。 A、2 B、3 C、4 D、5

15. 设x和y均为int型变量,则执行以下的循环后,y的值为( )。

for(y=1,x=1;y<=50;y++) {

if(x>=0) break;

if(x%2==1) {x+=5;continue;}

x-=3;

} A)1 B)50 C)51 D)5

16. 假定 a和b为int型变量,则执行下面的循环后,b的值为( ) int a=1, b=10; do{

b-=a; a++;

}while(b<0);

A)9 B)8 C)0 D)-1 17. 下列语句中,能正确输出26个英文字母的是( )

A)for(a=?a?;a<=?z?;a++) printf(“%c”,a); B) for(a=?a?;a<=?z?;a++) printf(“%d”,a); C) for(a=?a?;a<=?z?;) printf(“%c”,a); D) for(a=?a?;a<=?z?;) printf(“%d”,a); 18、以下能正确计算 1×2×3××……×49×50的程序段是( )

26

A) i=1;s=1; do{ s=s*i; i++; }while(i<=50); B) i=1;s=1; do{ s=s*i; i++; }while(i<50); C) i=1;s=1; do{ i++; s=s*i; }while(i<=50); D) i=1;s=1; do{ i++; s=s*i; }while(i<50);

19.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是____。

A、for(i=1,p=1;i<=5;i++) p*=i;

B、for(i=1;i<=5;i++) {p=1;p*=i;} D、i=1;p=1;do{p*=i;i++;} while(i<=5);

C、i=1;p=1;while(i<=5) {p*=i;i++;} s=a;

for(b=1;b<=c;b++) s=s+1;

则上述程序段功能等价的赋值语句是____。 A、s=a+b;

B、s=a+c;

20.若有如下程序段,其中s,a,b,c均已定义为整型变量,且a,c 均已赋值(c大于0)

C、s=s+c; D、s=b+c;

21、下列程序段的输出结果是( ) for(i=0;i<1;i+=1) for(j=2;j>0;j--)

printf(“*”);

A)* B)** C)**** D)******

22. 当运行时输入:abcd$abcde?, 下面程序的运行结果是 。

#include main() { char c;

while(putchar(getchar())!='$'); printf(\}

A) abcd$abcde B)abcd$end C)abcdend D) abcd$abcdeend 23. 下面程序段执行后的结果为: ( )

27

int sum=0, n=10; do { sum=sum+n; n++; }

while(n<10); printf(“%d,%d”,sum,n);

A) 0, 10 B) 10, 11 C) 0, 11 D) 以上结果都不对 24、执行以下程序的输出结果是( ) main() {

int i,s=0;

for(i=1;i<10;i+=2)

s+=i; printf(“%d\\n”,s); }

A)自然数1~9的累加和 B) 自然数1~10的累加和 C)自然数1~9中奇数之和 D) 自然数1~10中偶数之和

25.有以下程序

main( ){ int i,s=0;

for(i=1;i<10;i+=2) s+=i+1; printf(\

}

程序执行后的输出结果是____。 A、自然数1~9的累加和 C、自然数1~9中奇数之和

二、阅读程序,写出运行结果 1.

#include main(){

int num=0; while(num<=2)

{ num++;

printf(\}

}

运行结果为: 1

B、自然数1~10的累加和 D、自然数1~10中偶数之和

28

2 3 2.

#include main( ) { char i, j;

for(i=?0?, j=?9?; i

运行结果为: 0918273645 3.

#include main( ) { int i;

for(i=0;i<5;i++) printf(\ printf(\}

运行结果为: 0,1,2,3,4,5 4.

#include main( ) { int sum=0,i=0; while(i<=100) { sum=sum+i; i++;} printf(“i=%d\\n”,i); printf(“sum=%d\\n”,sum); } 运行结果为: i=101 sum=5050 5.

29

#include main() { int i,sum=0; i=1; do

{sum=sum+i; i++; }while(i<=10); printf(“%d\\n”,sum); }

运行结果为: 55 6.

#include main() { int n=9; while(n>6) { n--;

printf(“%d,”,n); } }

运行结果为: 8,7,6, 7.

#include main( ) {

int sum=10,n=1; while(n<3) { sum=sum-n; n++;}

printf(“%d,%d”,n,sum);}

运行结果为: 3,7 1-8.

30

上面程序的输出结果是____。 8

21.

#include #define N 4 main() { int i;

int x1=1,x2=2; for(i=1;i<=N;i++) { printf(\if(i%2==0) printf(\x1=x1+x2; x2=x2+x1; }}

运行结果为: 1 2 3 5 8 13 21 34 22.

#include #define N 4 main( ) { int i,j;

for(i=1;i<=N;i++) { for(j=1;j

printf(\ printf(\ printf(\ } }

运行结果为: * * * *

36

23.有以下程序

main( ) { int i,n=0; for(i=2;i<5;i++) { do

{ if(i%3) continue; n++; } while(!i); n++; }

printf(\ }

程序执行后的输出结果是____。 n=4

24.有以下程序

#include main(){ }

int i,j;

for(i=1; i<4; i++) { }

for(j=i; j<4; j++)

printf(\printf(\

程序运行后的输出结果是____。 1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9

三、编程题

1、编程序实现求1-1000之间的所有同时能被3和7整除的数的和并输出。

#include void main( ) { int i, sum=0; for(i=1; i<1000; i++) if(i%3==0&&i%7==0)

sum=sum+i;

37

printf(“the sum of odd is :%d”,sum); }

2. 从键盘上输入10个数,求其平均值。

#include void main(){

int num,i,s=0; float ave; for(i=0;i<10;i++) { scanf(“%d”,&num); s+=num; }

ave=(float)s/10;

printf(\ }

3、从键盘上输入10个数,求其最大值。 #include void main(){

int num,i,max; scanf(\

max=num;

for(i=1;i<10;i++) { scanf(\ if(num>max)

}

printf(\ }

4、输入50个学生的体重,分别求最重和最轻的体重,并计算平均体重。 #include

int main() { int i=0;

float weight,max=0,min=10,sum=0,ave; printf(“please input the weight:”); scanf(“%f”,&weight); max=min= weight; for(i=1;i<50;i++) { sum= sum+ weight; max=num;

38

i++;

if (weightmax) max=weight; scanf(“%f”,& weight);

}

ave=sum/50.0;

printf(\ printf(\

printf(\return 0; }

5. 从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。

#include main( )

{ int num, i,p=0,n=0,z=0;

printf(“please input 10 numbers:”);

for(i=0;i<10;i++) { scanf(“%d,”,&num); if (num >0) p++;

else if (num <0)

n++;

else z++; }

printf(“正数:], 负数:],零:]\\n”,p,n,z); }

39

第6章 利用数组处理批量数据

一、单项选择题

1.以下能正确定义一维数组的选项是____。

A、int num[]; B、#define N 100 C、int num[0..100]; D、int N=100;

int num[N]; int num[N];

2. 在C语言中对一维整型数组的正确定义为 。

A)int a(10); B)int n=10,a[n]; C)int n;a[n]; D) int a[3+7]; 3. 以下对一维数组a的正确定义是: A) char a(10); B) int a[]; C)int k=5,a[k]; D)char a[]={?a?,?b?,?c?}; 4. 下列说法中错误的是( )。

A 构成数组的所有元素的数据类型必须是相同的 B 一维数组的下标从0开始 C 一维数组元素的下标从1开始 D int a[3+5]; 是合法的

5. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( A) 3

B) 6

C) 10 D) 20

6. 已知:int a[10]; 则对a数组元素的正确引用是( )。

A、a[10] B、a[3.5] C、a(5) D、a[10-10] 7. 以下能对一维数组a进行初始化的语句是: ( )。

A) int a[5]=(0,1,2,3,4,); B) int a(5)={}; C) int a[ ]={0,1,2}; D) int a{5}={10*1}; 8. 若有以下数组说明,则数值最小的和最大的元素下标分别是( )。

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};

A)1,12 B)0,11 C)1,11 D)0,12 9. 若有以下数组说明,则i=10;a[a[i]]元素数值是( )。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A)10 B)9 C)6 D)5

10.已知int型变量占用4个字节的内存空间,则以下程序执行后输出结果是____。

main( )

{ int a[]={0,1,2},b[5]={0,1,2};

printf(\,%d\\n\

} A、4 4

B、12 12

C、12 20

D、20 20

11.执行下面的程序段后,变量k中的值为____。

int k=3,s[2]; s[0]=k; k=s[1]*10;

A、不定值

B、33

C、30

D、10

12.以下不能正确定义二维数组的选项是____。

40

)

A、int a[2][2]={{1},{2}}; C、int a[2][2]={{1},2,3}; A、int a[][3];

B、int a[][2]={1,2,3,4}; D、int a[2][]={{1,2},{3,4}};

13.以下能正确定义二维数组的是____。

B、int a[][3]={2*3};

D、int a[2][3]={{1},{2},{3,4}};

C、int a[3][]={0};

14. 若有说明:int a[][3]={1,2,3,4,5,6,7}; 则数组a的第一维的大小为: ( ) A) 2 B) 3 C) 4 D)无确定值

15. 若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( ) A) 2 B) 3 C) 4 D)无确定值

16.以下能正确定义数组并正确赋初值的语句是____。

A、int N=5,b[N][N];

B、int a[1][2]={{1},{3}}; D、int d[3][2]={{1,2},{34}};

C、int c[2][]={{1,2},{3,4}};

17. 对二维数组的正确定义是( )

A)int a[ ] [ ]={1,2,3,4,5,6}; B)int a[2] [ ]={1,2,3,4,5,6};

C)int a[ ] [3]={1,2,3,4,5,6}; D)int a[2,3]={1,2,3,4,5,6}; 18.已知int a[3][4];则对数组元素引用正确的是______. A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1) 19.下面程序段的输出结果是:

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9}; for (i=0;i<3;i++) printf(\

A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9 20.下面程序的输出结果是____。

main( ) {

int m[3][3]={ {1}, {2}, {3} }; int n[3][3]={ 1, 2, 3 };

printf(\ printf(\ }

A)30 B)34 C)56 D)11 21. 在C语言中,以 作为字符串结束标志

A)?\\n? B)? ? C) ?0? D)?\\0? 22.下列数据中属于“字符串常量”的是( )。

A)“a” B){ABC} C)?abc\\0? D)?a? 23.字符串 “ABCD”在内存占用的字节数是( )。

A.4 B.6 C.1 D.5 24. 下面不正确的字符串常量是:( )

41

A) ?PROGRAM? B “12?12” C “0” D “ ”

25. 设有数组定义: char array [ ]=\则数组array所占的空间为 A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 26. 已知char x[]=\则关于数组长度正确的是 . A)相同 B)x大于y C)x小于y D)以上答案都不对

27. 给出以下定义:

char x[ ]=\ char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为 A) 数组x和数组y等价 B) 数组x和数组y的长度相同 C) 数组x的长度大于数组y的长度 D) 数组x的长度小于数组y的长度 28. 若有以下语句,则正确的描述是( )。 static char x[ ]=”12345” ;

static char y[ ]={?1?, ?2?, ?3?, ?4?, ?5?} ;

A、x数组长度大于y数组长度 B、x数组和y数组的长度相同 C、x数组长度小于y数组长度 D、x数组等价于y数组

29.以下程序执行后输出结果是____。

main( )

{ char a[]=\

printf(\

B、8 8

C、8 10

D、10 10

} A、7 7

30. 对字符数组s赋值,不合法的一个是( )

A) char s[]=\ B)char s[20]={\C) char s[20];s=\ D) char s[20]={'B','e','i','j','i','n','g'}; 31. 对字符数组str赋初值,str不能作为字符串使用的一个是( )

A) char str[]=\ B) char str[9]={'s','h','a','n','g','h','a','i',?\\0?}; C) char str[]={\ D) char str[8]={ 's','h','a','n','g','h','a','i'}; 32. 合法的数组定义是 A)int a[]={“string”}; B) int a[5]={0,1,2,3,4,5}; C)char a={“string”}; D) char a[5]={0,1,2,3,4,5}; 33. 对字符数组s赋值,不合法的是:

A) char s[]=\ B) char s[20]={\C) char s[20];s=\ D) char s[20]={'c','h','i','n','a'}; 34. 下面初始化与此初始化charc[ ]=“I am happy”;等价的是( )

A) char c[ ]={?I?,? ?,?a?,?m?,? ?,?h?,?a?,?p?,?p?,?y?,?\\0?}; B) char c[ ]={?I?,?am?,?happy?}; C) char c[ ]={?I?, ??,?a?,?m?,??,?h?,?a?,?p?,?p?,?y?}; D)char c[ ]={?I?,?am?,?happy?,?\\0?}; 35.判断两字符串s1,s2是否相等,应使用( ).

A)if(s1==s2) B)if(s1=s2) C)if(strcpy(s1,s2)) D)if(strcmp(s1,s2)==0) 36.以下printf语句的输出结果为:

42

printf(“%d\\n”,strlen(“school”));

A) 7 B) 6 C)存在语法错误 D)不定值

二、阅读程序,写出运行结果

1.

#include main()

{ int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i;

printf(“%d%d%d”,a[2],a[5],a[8]); }

运行结果为: 852 2.

#include main() { int i,a[6]; for (i=0; i<6; i++) a[i]=i; for (i=5; i>=0 ; i--)

printf(\} 运行结果为: 5 4 3 2 1 0 3.

#include void main() { int i, sum=0;

int a[10]={10,14,40,56,60,65,70,88,98,67}; for(i=9;i>=0;i--) if(a[i]%7==0) { sum+=a[i]; printf(“M”,a[i]); }

printf(“\\n sum=%d \\n”,sum);

43

}

运行结果为: 98 70 56 14 sum=238 4.

#include main( )

{ int i,k,a[10],p[3]; k=5;

for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf(\}

运行结果为: 21 5.

#include void main() { int i=0;

char s[]=”ab3c2d4e”; while(s[i]!=?\\0?)

{ if(s[i]>=?a?&&s[i]<=?z?) printf(“%c”,s[i]); i++; } }

运行结果为: abcde

6.有以下程序

main()

{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;

44

while(i<7 && p[i]%2) { k=k+p[i]; i++;} printf(\ }

执行后输出结果是____。 24

7.有以下程序

main()

{ int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++)

{ printf(\ }

执行后输出结果是____。 3 6 9

8.以下程序的输出结果是____。

mian()

{ int i,x[3][3]=[1,2,3,4,5,6,7,8,9]; for (i=0;i<3;i++) printf(\} A、1,5,9

B、1,4,7 C、3,5,7 9.

#include main( ) { int n[3][3], i, j; for(i=0;i<3;i++ ) { for(j=0;j<3;j++ )

{ n[i][j]=i+j;

printf(“%d ”, n[i][j]); }

printf(“\\n”); } }

运行结果为: 1 2 2 3

45

D、3.6.9

3 4 10.

#include

int m[3][3]={{1},{2},{3}}; int n[3][3]={1,2 ,3}; main( )

{ printf(“%d,”, m[1][0]+n[0][0]); printf(“%d\\n”,m[0][1]+n[1][0]);}

运行结果为: 3,0 11.

#include main() { int i;

int x[3][3]={1,2,3,4,5,6,7,8,9}; for (i=1; i<3; i++)

printf(\ \ } 运行结果为: 6 8 12.

#include main()

{ int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; for(i=0;i<=1;i++) { for(j=0;j<=2;j++) b[j][i]=a[i][j];

}

for(i=0;i<=2;i++) { for(j=0;j<=1;j++) printf(\ } }

46

运行结果为:

1 4 2 5 3 6 13.

#include #include

void main() { char str1[10],str2[10]; scanf(“%s%s”, str1,str2);

printf(“%s\\n”,strcat(str1,str2)); }

键盘输入:howare(空格) you(回车) 运行结果为: howareyou

14.当执行下面的程序时,如果输入ABC,则输出结果是____。

#include \ #include \ main()

{ char ss[10]=\

gets(ss) ;strcat(ss,\} ABC6789

15.

#include void main(){

char s[]=\

int v[4]={0,0,0,0},k,i; { switch(s[k])

{ case '1': i=0; case '2': i=1;

for(k=0;s[k]!=?\\0?;k++)

case '3': i=2;

case '4': i=3;

} v[i]++; }

47

for(k=0;k<4;k++)

printf(\ \}

运行结果为: 0 0 0 8 16.

#include void main() { char s[]=\for(i=0;c=s[i];i++) switch(c-'0') { case 2:

case 3:putchar(c+4);break;

case 4:putchar(c+4);break; case 5:putchar(c+3);break; default:putchar(c+2);break; }

}

运行结果为: 6879 17.

#include void main() { char s[80],i=0; gets(s); while(s[i]!='\\0'){ if(s[i]>='a'&&s[i]<='z') s[i]=s[i]-32+3;

i++;

} puts(s); }

程序运行时,输入“ABCabc”,运行结果为:ABCDEF

48

三、编程题

1. 从键盘输入10个整数存放在数组中,统计其中正数、负数和零的个数,并在屏幕上输出。

#include int main( ) {

int a[10], i, p=0, n=0, z=0;

printf(“please input 10 numbers: ”); for(i=0;i<10;i++) scanf(“%d,”,&a[i]); for(i=0;i<10;i++){ if (a[i]>0) p++;

else if (a[i]<0) n++; else z++; }

printf(“正数:], 负数:],零:]\\n”,p,n,z); return 0; }

2.从键盘输入30名学生的成绩数据,求其中的最高分、最低分和平均分。 (提示:用数组存放成绩数据) #include #define M 30 int main ( ) {

float score[M], max , min, sum,aver; int i ;

printf(“please input score: \\n”); for(i=0; i

if (max < score[i]) max= score[i];

if (min>score[i]) min=score[i]; sum+=score[i]; }

aver=sum/M;

printf(“max=%f, min=%f,aver=%f”, max, min, aver); return 0;

}

49

3. 从键盘上输入10个数存放在数组中,去掉第最大数和最小数,求剩下的数的平均值。

#include int main( ) {

int a[10],i,sum,max,min; float ave; scanf(“%d”,&a[0]); for(i=1;i<10;i++) { scanf(“%d”,&a[i]); sum+=a[i];

if(a[i]>max) max=a[i];

if(a[i]

}

ave=(float)(sum-max-min)/8;

printf(\

return 0; }

4. 输入10个数存放在数组中,再输入一个数,查找其在数组中第一次出现的位置,若不存在也给出提示。 #include int main() {

int a[10],i,x;

printf(“Input 10 integers:”); for(i=0;i<10;i++)

scanf(“%d”,&a[i]);

printf(“Input the number you want to find:”);

scanf(“%d”,&x);

for (i=0;i<10;i++) if(a[i]==x) break;

if( i<10 )

printf(“The pos of x is:%d\\n”,i+1);

else

printf(“can not find x!\\n”);

return 0; }

5.编程实现如下功能:从键盘输入一行字符(少于80个字符),统计其中英文字符,数字字符和其他字符的

个数。

#include

max=min=sum=a[0];

50

本文来源:https://www.bwwdw.com/article/c4gx.html

Top