武大C语言习题集

更新时间:2023-12-10 04:09:01 阅读量: 教育文库 文档下载

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

1—2

一、单选

下面四个选项中,均是不合法的用户标识符的是______。 A. A B. float C. b-a D. _123

p_0 lao goto temp do _A int INT

正确的C语言自定义标识符是______。

A.file_bak B.abc(10) C.continue D.class+3

下面四个选项中,均是不合法整型常量的是______。 A. -0f1 B. -0xcdf C. -018 D. -0x48eg -0xffff 017 999 -068 011 12,456 5e2 03f

下面正确的字符常量是______。 A. \B. '\\\\'' C. 'W' D. '

以下的变量定义中,合法的是______。 A. float 3_four = 3.4 ; B. int _abc_= 2 ; C. double a = 1 + 4e2.0 D. short do =15;

若有以下定义和语句:

char cl='a',c2='f'; printf(''%d,%c\n'',c2-c1,c2-'a'+'B'); 则输出结果是______。 A. 2,M B. 5,! C. 2,E D. 5,G

与数学式子3乘以x的n次方除以(2x-1)对应的C语言表达式是______。 A. 3*x^n/(2*x-1) B. 3*x**n/(2*x-1)

C. 3*pow(x,n)*(1/(2*x-1)) D. 3*pow(n,x)/(2*x-1)

设int m=1,n=2;则m++= =n的结果是______。 A. 0 B. 1 C. 2 D. 3

以下程序

#include ; void main()

{ int m=3,n=4,x;

x=-m++; x=x+8/++n;

printf(\ }运行后的输出结果是______。 A. 3 B. 5 C. -1 D. -2

若有定义:int a=8,b=5,c;执行语句c=a/b+0.4;后,c的值为______。

A. 1.4 B. 1 C. 2.0 D. 2

设有如下的变量定义:

int i=8, K, a, b; unsigned long w=5; double x=l,y=5.2: 则以下符合C语言语法的表达式是______。 A. a+=a-=(b=4)*(a=3) B. x%(-3) C. a=a*3=2 D. y=int(i)

二、多选

有定义语句:int m,n; char c;若要通过语句scanf(\使变量m,n得到数值10,变量c得到字符,错误的输入是______。 A. 10,A,10 B. 10A10 C. 10 A10 D. 10A 10

用十进制形式输入带符号整数时,在scanf函数语句里格式字符为_____。 A. d B. i C. n D. u

三、判断

用户标识符中可以出现下划线,但它不可以放在用户标识符的开头。

C语言中整形常量按进制划分,有以下几种:十六进制常量、十进制常量、八进制常量、二进制常量。

若变量已正确定义,以下程序段的输出结果是5.169000。 x=5.16894; printf(\

表达式(int)(11.0/3+0.5)的值为4.

程序段int i=3; printf(\的输出结果是3,3。

输入语句的格式为:scanf(\是正确的。

在scanf(\;语句中,可以使用一个或多个空格作为两个输入数之间的间隔。

getchar函数的功能是接收从键盘输入的一串字符。

以下程序的运行结果是5,7 #include ;

void main() {int i=5; printf(\

printf函数是一个标准库函数,它的函数原型在头文件\中。

printf函数称为格式输入函数,它的函数原型在头文件\中。

在printf函数中,输出表列的各输出项之间可用冒号分隔。

若int x=3; printf(\则系统不会报错,会输出x的地址

!b==c||d

四、填空

在C语言中,用关键字__________定义基本整型变量,用关键字_________定义单精度实型变量,用关键字__________定义双精度实型变量。

设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为___________。

表达式pow(2.8,sqrt(double(x)))值的数据类型为___________。

以下程序

# include ; void main() { int i=10,j=1;

printf(\ }执行后输出的结果是___________。

若x和n均为整形变量,且x的初值为12,n的初值为5,则执行下面表达式后,x的值为___________。x%=(n%=2)

以下程序运行后的输出结果是___________。 #include ;

void main() { char m; m= ?B? +32; printf(\\\n\ }

在输入a(整型)、b(单精度)、c(字符型)时,若用逗号分隔各个数据,则正确的scanf函数语句是___________。

以下程序段

int m=0xabc,n=0xabc;

m-=n; printf(\执行后输出结果是___________。

写出判断一个整型数a为奇数的表达式___________。

C语言提供的三种逻辑运算符是___________、___________、___________。(按运算优先级从大到小)

表达式x+6y=5x+3y+6的C语言表达式是___________。

在C语言中,逻辑运算符中___________的优先级高于算术运算符。若已知a=2,b=3, 则表达式!a+b的值为___________。

答案:

C A D C B D C A D B A AC AB

F F T T F T F F F T F F T T int float double double/双精度 double/双精度 10,2 0 b

scanf(\0

a%2==1 ! && ||

(x+6*y)==(5*x+3*y+6) 逻辑非 3

习题1-3

1.可用作用户标识符的一组标识符是______。B

A. void B. a3_b3 C. For D. 2a define _xyz -abc DO WORD IF Case sigeof 2. 下列不正确的转义字符是______。C A. '\\\\' B. '\\'' C. '074' D. '\\0'

8. C语言提供的合法的数据类型关键字是______。B A.Double B.short C.integer D.Char

9. 下面四个选项中,均是不合法浮点数的是______。 B A. 160. B. 123 C. -018 D. -e3 0.12 2e4.2 123e4 .234 e3 .e5 0.0 1e3

10.下面四个选项中,均是不正确的八进制或十六进制数的是______。D A. 016 B. 0abc C. 010 D. 0a12 0x8f 017 -0x11 7ff 018 0xa 0x16 -123 11. 下列变量定义中合法的是______。C

A. short _a=l-.1e-1; B. double b=1+5e2.5; C. long ao=0xfdaL D. float 2_and=1-e-3; 15. 已知各变量的类型说明如下: int k,a,b; unsigned long w=5; double x=1.42; 则以下不符合C语言语法的表达式是______。A A. x%(-3) B. w+=-2

C. k=(a=2,b=3,a+b) D. a+=a-=(b=4)*(a=3)

16. 若有int k = 11;则表达式(k++ * 1/3)的值是______。B A. 0 B. 3 C. 11 D. 12

17. 设int m=1,n=2;则++m= =n的结果是______。 B A. 0 B. 1 C. 2 D. 3 18. 以下程序

#include void main()

{ int a; char c=10; float f=100.0; double x;

a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1f\\n”,a,c,f,x); } 运行后的输出结果是______。B

A. 1 65 1 6.5 B. 1 65 1.5 6.5 C. 1 65 1.0 6.5 D. 2 65 1.5 6.5 19. 假定x和y为double型,则表达式x=2,y=x+3/2的值是______D。

A. 3.500000 B. 3 C. 2.000000 D. 3.000000

20. 假定有以下变量定义:int k=7,x=12;则能使值为3的表达式是______。C A. x%=(k%=5) B. x%= (x-k%5) C. x%=k+k%5 D. (X%=k)十(k%=5) 多项

1.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。AC A. scanf(“-,-,-”,&i,&j,&k); B. scanf(“%d %d %d”,&i,&j,&k); C. scanf(“%d,%d,%d”,&i,&j,&k);

D. scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);

2.用小数或指数形式输入实数时,在scanf函数语句里格式字符为______。BCD A. i B. f C. e D. g 判断

1. C语言规定标识符只能由字母、数字和小数点三种字符组成。F 4. 如果要把常量327存入变量a中,a可以定义成float类型。T 5. 以下程序的运行结果是9 9 。 #include<stdio.h>

void main() {int x=10,y=10; printf(“%d %d\\n”,x--,--y); }F 6. 表达式11/3的值为3.666667。F

7. 以下程序的运行结果是(a=%2,b=%5)。F #include <stdio.h>

main() {int a=2,b=5; printf(“a=%%d,b=%%d\\n”,a,b); }

8. 输入语句的格式为:scanf(“%d,%d,%d”,a,b,c);是正确的。F

9. 在scanf(“%d,%*d,%d”,&a,&b);语句中,当输入为1,2,3时,将1赋给a,将2赋给b。F

10. getchar函数的功能是接收从键盘输入的一个整数。F

11. 在BC中,可以在使用printf函数之前不包含“stdio.h”文件。T

12. printf函数是一个标准库函数,它的函数原型在头文件中。F

13. 在printf函数中,格式字符d的意义是:以十进制形式输出带符号整数。T

14. 在printf函数中,输出项可以是任意合法的表达式。T 15. 如果x>y或ay&&ac && x+yc) && ((x+y)

填空题

1.若有说明语句:char c='\\72';则变量c包含___________个字符。1

2.设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为___________。double/双精度 3.若有以下定义:

char a; unsigned int b; float c; double d;

则表达式a*b+c-d的值的类型为___________。double/双精度

4.设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是_________。 printf("%d,%d ",--x,--y); 9,2

5.若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为___________。(x+y)%2+(int)a/(int)b 1 6.若int类型数据占两个字节,下列程序的输出结果是___________。 #include <stdio.h>

void main() { int k=-1; printf("%d,%u\\n",k,k); } -1,65535

7.C语言的字符输出函数是___________。 putchar()

8.scanf函数的功能是按___________规定的格式, 从指定的输入设备上把数据输入到指定的___________之中。格式控制字符串 变量

9.有一个整数345,取它的个位数的表达式为___________,取十位数的表达式为___________,取百位数的表达式为___________。345 (3450)/10 345/100 10.已知a=3,b=-4,c=5,表达式a+++-b+(++c)的值是___________。13

11.表达式x+y>10且x-y≤0的C语言表达式是___________。(x+y>10)&&(x-y<=0) 12.表达式:κ/β≠m+5的C语言表达式是___________。(κ/β)!=(m+5)

习题1—4

一、单项选择题

1.下列标识符组中,合法的用户标识符为______。D A. b-b与abc B. CCP与float C. hiy与void D. isw与INT 8.以下选项中不属于C语言类型的是______。D A. signed short int B. unsigned long int C. unsigned int D. long short

9. 下面四个选项中,均是合法浮点数的是______。B

A. +1e+1 B. -.60 C. 123e D. -e3 5e-9.4 12e-4 1.2e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0

10. 下面四个选项中,均是正确的八进制或十六进制数的是______。C A. -1a B. 0abc C. 010 D. 0a12 0x8f -017 0x11 -0x123

-011 0xc 0xf1 -0xa

11. 若有以下说明语句: char s=''\\\\\\092'';则下面______项是正确的。B A.使s的值包含2个字符 B.说明语句不合法

C.使s的值包含6个字符 D.使s的值包含4个字符\\

14. 以下结果为整型的表达式(设有int i; char c; float f;)是______。 B

A. i+f B. i*c C. c+f D. i+c+f 15. 已知各变量的类型说明如下: int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2; 则以下符合C语言语法的表达式是______。 A A. a+=a-=(b=4)*(a=3) B. a=a*3=2 C. x%(-3) D. y=float(i)

16. 若有以下定义,则值为3的表达式是______。 D

int k=7, x=12;

A. x%=(k%=5) B. x%=(k-k%5) C. x%=k-k%5 D. (x%=k)-(k%=5) 17. 在执行了a=5; a+=a=5; 之后,a的结果为______。B

A. 5 B. 10 C. 15 D. 20

18. 设a,b均为double型常量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是_____。D A. 6.500000 B. 6 C. 5.500000 D. 6.000000

19. 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是______。C A. -3 B. 9 C. -12 D. 6

20. 设int x=8,y,z;执行y=z=x++;x=y=z;后,变量x的值是______。 A. 0 B. 1 C. 8 D. 9 二、多项选择题

1. 设有定义:long x=-123456L;则不能正确输出变量x值的语句是______。ACD A. printf(“x=%d\\n”,x); B. printf(“x=%ld\\n”,x); C. printf(“x=?\\n”,x); D. printf(“x=%LD\\n”,x);

2.若在scanf函数中没有非格式字符作输入数据的间隔,则可用______作为输入数据的间隔。 A.空格 B.逗号 C. TAB D.回车 三、判断题

3. 若有以下定义:char s='\\092'; 则该语句使s的值包含一个字符。F 4. C语言中数据有常量与变量之分。T 5. 以下程序的输出结果是:11 13 #include

void main(){ int a=12,b=12;printf(''%d %d\\n'',--a,++b);} T 6. 在C语言中,++(i+1)是一个合法的算术表达式。 F

7. 以下程序#include main(){ int m=0256,n=256; printf(“%o %o\\n”,m,n); }运行后的输出结果是256 400。 T

8. 在使用scanf函数之前应包含头文件“math.h”。 F 9. 在scanf(“%c%c”,&c1,&c2);语句中,当输入为字符a,b时,将a赋给c1,将b赋给c2 F 10. scanf函数中,如果格式控制串中有普通字符则输入时也要输入该普通字符。 T 11. printf函数中的格式字符,既可以是大写形式,也可以是小写形式。 F 12. 在printf函数中,格式字符”\”可用来输出5个字符。 F 13. 在printf函数中,格式字符s的意义是:输出单个字符。 F 14. 在printf函数中,转义字符\\b的作用是退格。 T

15. int a=0,b=1,c=2;则表达式a||b+c&&b==c的值为0。 T

16. 与运算&&参与运算的两个量只要有一个为真,结果就为真,否则为假。F 四、填空题

1.C语言中的基本数据类型包括____、____、____。整型/实型/字符型

2. 若变量a是int类型,并执行了语句:a='A'+1.6;则a的值是字符'A'的ASCII码值加上___________。 1

3. >设有如下定义: int x=10,y=3,z ; 则语句 printf(“%d\\n”,z=(x%y,x/y)); 的输出结果是___________。 3

4. 下列程序的运行结果是___________。114,124,-1 #include void main()

{ int x=6,y,z;

x*=18+1; printf(''%d,'',x--); x+=y=z=11; printf(''%d,'',x);

x=y==z; printf(''%d\\n'',-x++);} 5. 已知字母a的ASCII码的十进制代码为97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为___________。f

6. scanf语句的”格式控制串”和”地址表列”用________分开。 逗号/, 7. 以下程序的输出结果是___________。a #include

void main() { char c='z'; printf(“%c”,c-25); }

8. getchar()函数得到的字符可以赋给一个________变量或一个______变量。字符、整型 9.能正确表示”当ch为小写字母为真,否则为假”的表达式是____。>='a'&&ch<='z' 10. 已知a=3,b=-4,c=5,表达式(a&&b)==(a||c)的值是___________。1 11. 表达式p

12. 请说明表达式”score>=60?(c='P'):(c='F')”的意义___________。 (当score>=60

条件成立时,该表达式取c='P'的值,即:'P',否则取c='F'的值即:'F')

习题1.5

一、单项选择题 1. [020000020200005]

下列四个选项中,均是C语言关健字的是__B____。 A. auto B. switch C. signed D. if

enum typedef union struct include continue scanf type 一、单项选择题 8. [020000030200003] 下面四个选项中,均是非法常量的是__A____。 A. 'ads' B. '\\\\' C. -0x18 D. 0xabc -0fff '\\01' 01177 '\\0' '\\0a' 12,456 0xf \ 一、单项选择题 9. [020000030200008]

下面四个选项中,均是合法转义字符的是_A_____。 A. '\\'' B. '\\' C. '\\018' D. '\\\\0'' '\\\\' '\\017' '\\f' '\\101'

'\\n' '\\\ 'xab' 'x1f' 一、单项选择题 10. [020000030200013]

下面四个选项中,均是正确的数值常量或字符常量的是___D___。 A. 0.0 B. \ C. '3' D. +01

0f 3.9E-2.5 011 0xabcd 8.9e 1e1 0xFF00 2e2 '&' '\\\ 0a 50 一、单项选择题 14. [020000040200002] 以下程序的运行结果是__B____。 #include void main()

{int x=2,y=3,z=1; printf(\ A. 3 4 B. 4 3 C. 2 3 D. 2 4

一、单项选择题 15. [020000040200007] 以下符合C语言语法的赋值表达式是_B_____。 A. d=9+e+f=d+9 B. d=(9+e,f=d+9) C. d=9+e,e++,d+9 D. d=9+e++=d+7

一、单项选择题 16. [020000040200012] 以下使i的运算结果为4的语句是__D____。

A. int i=0,j=0; (i=3,(j++)+i); B. int i=1,j=0; j=i=((i=3)*2.; C. int i=3,j=1; i=j++; D. int i=1,j=1; i+=j+=2; 一、单项选择题 17. [020000040200017]

设有定义:float a=2,b=4,h=3; 以下C语言表达式与代数式计算结果不相符的是__B____。 A. (a+b)*h/2 B. (1/2)*(a+b)*h C. (a+b)*h*1/2 D. h/2*(a+b)

一、单项选择题 18. [020000040200022] 以下程序:

#include void main()

{ int k=2,i=2,m; m=(k+=i*=k); printf(\ } 执行后的输出结果是__C____。

A. 8,6 B. 8,3 C. 6,4 D. 7,4

一、单项选择题 19. [020000040200027]

下列关于单目运算符++、--的叙述中正确的是__D____。 A. 它们的运算对象可以是任何变量和常量

B. 它们的运算对象可以是char型和int型变量,但不能是float型变量 C. 它们的运算对象可以是int型变量,但不能是double型和float型变量 D. 它们的运算对象可以是char型变量、int型变量和float型变量 一、单项选择题 20. [020000040200032] 以下不正确的语句(设有int p,q)是__D____。 A. p*=3; B. p/=q; C. p+=3; D. p&&=q; 二、多项选择题 1. [020000050300005] x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是___ABD___。 A. scanf(\ B. scanf(\

C. scanf(\ D. scanf(\

二、多项选择题 2. [020000050300010]

若要输入4位整数到整型变量a中,可用___BD___。 A. scanf(\ B. scanf(\C. scanf(\ D. scanf(\ 三、判断题 3. [020000030400002]

在C语言中, int、char和short三种类型数据在内存中所占用的字节数由所用机器的机器字长决定。T

三、判断题 4. [020000030400007]

在C语言中,要求对所有用到的变量先定义,然后才能使用。T 三、判断题 5. [020000040400005] 以下程序:

#include void main()

{ int y=6,x=3,z=1;printf(''%d %d\\n'',(++x,y++),z+2);} 运行后的输出结果是7 3。F

三、判断题 6. [020000050400001] 在BC中,printf()函数输出表列的求值顺序是从右到左。T 三、判断题 7. [020000050400006] 该源程序执行后,屏幕上显示a=4,b=9.5 #include

void main() { int a=4;float b=9.5;printf(''a=%d,b=%4.2f\\n'',a,b);} F 三、判断题 8. [020000050400011]

在使用scanf函数之前可以不包含头文件“stdio.h”。T

三、判断题 9. [020000050400016]

在scanf(\;语句中,输入123456789,只把123456赋予变量i 。 F 三、判断题 10. [020000050400021] C语言的格式输出函数是scanf()F

三、判断题 11. [020000050400026]

在printf函数中,格式控制字符串用于指定输出格式,必须以双引号引起。T 三、判断题 12. [020000050400031]

使用printf函数时,格式控制字符串和各输出项应一一对应。T 三、判断题 13. [020000050400036]

在printf函数中,格式字符f的意义是:以小数形式输出单精度实数。F 三、判断题 14. [020000050400041] 在printf函数中,不能使用转义字符。F 三、判断题 15. [020000060400003]

int a=0,b=1,c=2,x,y; 则!(x=a)&&(y=b)&&c的值为1。T 三、判断题 16. [020000060400008] 5>0 && 4>2的结果为假。F

四、填空题 1. [020000030100004]

字符串''w\\x53\\\\\\np\\103q''的长度是__7_________。

}

5、下面程序的运行结果是___________。 #include void main() { int a=0,i=0;

while(a<=6){++i;a+=i;} printf(\ }

6、以下程序输出结果为___________。 #include\void main() { int i;

for(i=0;i<10;i++); printf(\

7、在执行以下程序时,如果从键盘上输入:ABCdef<回车>,则输出为___________。 #include void main() { char ch;

while((ch=getchar( ))!='\\n')

{ if(ch>='A' && ch<='Z') ch=ch+32; else if(ch>='a'&&ch<'z') ch=ch-32; printf(\ printf(\

8、若输入整数12345,以下程序的输出结果为___________。 #include void main()

{ int x,y; scanf(\

do{y=x;printf(\9、下面程序的输出结果是___________。 #include void main() { int n=10;

while(n>7) {n--;printf(\ }

10、下面程序的功能是计算正整数2345的各位数字平方和。 #include void main()

{ int n=2345,sum=0;

do { sum=sum+___________; n=___________; } while(n); printf(\

答案:对 错 错 对 错 对 错 错 对 错 错 对

1、z>y y>x z>y x,y,z 2、M M 3、2,0,0 4、3 5、10 6、10 7、abcDEF 8、54321 9、9 8 7 10、(n)*(n) n/10

习题2-2

一.单选

1.为避免嵌套的条件语句if-else的二义性,C语言规定:else与______配对。 A. 缩排位置相同的if B. 其之前最近的if C. 其之后最近if D. 同一行上的if 2. 有如下程序 #include void main() {float x=2.0,y;

if(x<0.0) y=0.0;

else if(x<5.0) y=1.0/x; else y=1.0; printf(\ }

该程序的输出结果是______。 A. 0.000000 B. 0.250000 C. 0.500000 D. 1.000000

3. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是______。 #include void main()

{ int x; scanf(\,&x); if(x>5)printf(\,x);

else printf(\,x--); }

A. 7和5 B. 6和3 C. 7和4 D. 6和4 4. 以下程序输出结果是______。 #include void main ( ) { int m=5;

if (m++>5) printf(\ else printf(\ }

A. 7 B. 6 C. 5 D. 4

5.以下程序段中不能根据x值正确计算出y值的是______。 A. if(x>0) y=1; B. y=0; else if(x==0) y=0; if(x>0) y=1;

else y=-1; else if(x<0) y=-1 ; C. y=0; D. if(x>=0)

if(x>=0); if(x>0) y=1; if(x>0) y=1 ; else y=0; else y=-1; else y=-1;

6. 以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是______。 A. if((a>b)&&(b>c)) k=1; B. if((a>b)||(b>c)) k=1

else k=0; else k=0; C. if(a<=b) k=0; D. if(a>b) k=1;

else if(b<=c) k=1; else if(b>c) k=1; else k=0;

7. 若有以下定义::float x;int a,b;则正确的switch 语句是______。 A. switch(x) B. switch(x)

{ case1.0:printf(\ { case1,2:printf(\case2.0:printf(\ } case 3:printf(\ } C. switch (a+b) D. switch (a+b);

{ case 1:printf(\ { case 1:printf(\case 1+2:printf(\ case 2:printf(\ }

8. C语言的do_while循环中,循环由do开始,用while结束;而且在while表达式后面的______不能丢,它表示do_while循环的结束。

A. \\n B. “;” C. “%” D. “,” 9. 对于for(表达式;;表达式3)可理解为______。 A. for(表达式;0;表达式3) B. for(表达式;1;表达式3)

C. for(表达式;表达式1;表达式3) D. for(表达式;表达式3;表达式3) 10. 以下程序的输出结果是______。 #include void main()

{ int num=0; while(num<=2) { num++; printf(\ } A. 2 B. 1 C. 123 D. 12

11. 定义如下变量: int n=25; 则下列循环的输出结果是______。 while(n>22) { n--; printf(\

A. 22 23 24 B. 24 23 22 C. 25 24 23 D. 25 24 23 22

12. 设有程序段:x=y=0; while(x<10) x++;y++; printf(\则运行结果是______。 A. 0,0 B. 10,1 C. 10,10 D. 1,10

13. 设有程序段:int n=0; while(n++<=2); printf(\则运行结果是____。 A. 2 B. 3 C. 4 D. 有语法错 14. 下面程序的运行结果是______。

int y=10; do { y--;} while(--y); printf(\

A. -1 B. 1 C. 8 D. 0 15. 以下程序段的输出结果是______。

int i=5; for ( ;i<=15; ) { i++; if (i%4==0) printf(\ A. 8 12 16 B. 8 12 C. 12 16 D. 8 16. 下面程序段的运行结果是______。

for(y=1;y<10;) y=((x=3*y, x+1), x-1); printf(\A. x=27,y=27 B. x=12,y=13 C. x=15,y=14 D. x=y=27

17. 设i为整型量,执行循环语句for(i=500;i>=0;i-=100);后,i值为______。 A. 500 B. 0 C. 100 D. -100 18. 以下正确的描述是______。

A. continue语句的作用是结束整个循环的执行 B. 只能在循环体内和switch语句内使用break语句

C. 在循环体内,使用break语句和使用continue语句的作用是相同的 D. 从多层循环嵌套中退出时,只能使用goto语句 19. 以下为死循环的程序段是______。

A. for(i=1; ; ) {if (++i%2==0) continue; if (++i%3==0) break; } B. i=32767; do { if (i<0) break;} while(++i); C. for(i=1; ; ) if (++i<10) continue; D. i=1; while(i--);

20. 以下不正确的描述是______。

A. break 语句不能用于循环语句和switch语句外的任何其他语句 B. 在switch语句中使用break语句或continue语句的作用相同

C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行 D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环 21.下面程序的运行结果是______。 #include void main() { int i,j,x=0; for(i=0;i<2;i++)

{ x++; for(j=0;j<=3;j++) { if(j%2) continue; x++; } x++; } printf(\ }

A. x=4 B. x=8 C. x=6 D. x=12 22. 下面程序段输出的结果是______。 int x,y,z; x=20;y=40;z=60; while(x

A. 40,36,30 B. 32,28,7 C. 32,28,30 D. 32,28,7.5 23. 循环语句for(i=0,x=0;!x&&i<=5;i++);的执行次数为______。 A. 5次 B. 6次 C. 1次 D. 无限

答案 BCDBC ACBBC BCDAC DBCBB CB

二、判断题

1. switch选择结构中必须有default子句。 (错) 2. break语句不能用于switch语句外的任何其它语句。(错) 3. continue语句的功能就是结束本层循环。(错) 4. C语言的while、do-while和for几个循环语句中,for循环语句最灵活、功能最强。(对) 5. 用do-while语句构成循环时,只有在while后的表达式为非0时结束循环。(错) 6. for(表达式1;表达式2;表达式3)中,表达式1和表达式3可以同时都为逗号表达式。(对)

7. for后的一对圆括号中,可以出现各种形式的与循环控制无关的表达式。(对) 8. while循环和do-while循环的while()后一定不能加上一个分号。(错) 9. 若i为整型变量,则以下循环 i=0; while(i=0)i++;一次也不执行。(对) 10. 执行语句 for(i=1;++i<10; );后,i的值是10。(对)

11. 执行语句:for(i=1;i++<4;++i);后,变量i的值是3。(错) 12. 执行完下面程序段后,k的值为0。 int i,j,k; for(i=0,j=10;i<=j;i++,j--) k=j-i;(对) 三、填空题

1. 阅读下面程序: #include void main()

{ int s, t, a, b;

scanf(\ s=1; t=1;

if(a>0) s=s+1; if(a>b) t=s+t;

else if (a==b) t=5; else t=2*s;

printf(\

为了使输出结果t=4, 输入量a和b应满足的条件是___________。(b>a>0) 2. 阅读下列程序,写出运行结果___________。(67,D) #include void main ( )

{ char c1=67;

if (c1 >='A' && c1<='Z') printf(\,c1+1); else printf(\ }

3. 以下程序完成的功能是___________。(输出从键盘上输入数据的绝对值) #include void main( ) { int shu;

printf(\请输入一个整数%%d:\\n\ scanf(\&shu ); if ( shu < 0 ) shu = -shu;

printf(\ }

4. 下面程序的运行结果是___________。(-1) #include void main() { int a,i;

for( a=1,i=-1;-1<=i<1;i++) { a++; printf(\ printf(\

5. 下列程序的输出结果为___________。(x=6) #include void main() { int i,j,x=0; for(i=0;i<3;i++)

{ if(i%3==2) break; x++;

for(j=0;j<4;j++) { if(j%2) break; x++; } x++; }

printf(\

6. 运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为___________。 (m=14) #include void main()

{ int m,n; printf(\ scanf(\while(m!=n){ while(m>n) m-=n; while(n>m)n-=m;} printf(\

7. 当输入“quert?”时,下面程序执行的结果是___________。(Quert) #include void main()

{ char c; c=getchar(); while(c!='?') { putchar(c);

c=getchar();} }

8. 下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。 #include void main() { char c;

while ((c=getchar())!='\\n')

{ if (c>='a' && c<='z') ___________; (c-=30) if (c>='Z' && c<='Z'+2) ___________;(c-=26) printf(\

9. 下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中x,y,z和yzz分别表示一个三位数)。

#include void main()

{ int x,y,z,i,sum=532; for(x=1;x<10;x++) for(y=1;y<10;y++)

for(___________;z<10;z++)

{ i=100*x+10*y+z+100*y+10*z+z;

if (___________) printf(\ (z=0, i==sum)

习题2—3

一、单项选择题 1. [020000070200003]

若i为整型变量,且有程序段如下,则输出结果是___a___。 i=322;

if(i%2==0) printf(\

else printf(\

A. #### B. ****

C. ####**** D. 有语法错误, 无输出结果

一、单项选择题 2. [020000070200006]

若变量都已正确说明,则以下程序段输出为___d___。 int a=1,b=2,c,d; if (a==b) c=d=a; else c=b; d=b;

printf(\

A. c=1,d=1 B. c=1,d=2 C. c=2,d=1 D. c=2,d=2 一、单项选择题 3. [020000070200009] 以下____b__为不正确的if语句。 A. if(x

B. if(x!=y) scanf(\C. if(x==y) x+=y; D. if(x

一、单项选择题 4. [020000070200012]

与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是___a___。 A. if (x>0) y=1; B. if(x)

else if(x<0)y=-1; if(x>0)y=1; else y=0; else if(x<0)y=-1; else y=0;

C. y=-1; D. y=0; if(x) if(x>=0) if(x>0)y=1; if(x>0)y=1; else if(x==0)y=0; else y=-1; else y=-1;

一、单项选择题 5. [020000070200015] 以下程序的运行结果是__c____。 #include void main() { char m='b';

if(m++> 'b') printf(\ else printf(\ } A. 'a' B. 'b' C. 'c' D. 'd'

一、单项选择题 6. [020000070200019] 请阅读以下程序: #include void main ()

{ char c; c=getchar();

if ((c>='A'&&c<='Z')||(c>='a'&&c<='z')) printf(\

else if (c>='0'&&c<='9')

printf(\ else

printf(\}

若运行时输入大写字母A,则上面程序的输出结果是__a____。 A. input character is letter B. input character is digit C. other character;} D. A

一、单项选择题 12. [020000090200001]

在下列选项中,没有构成死循环的程序段是____c__。 A. int i=100; while (1) {i=i0+1; if(i>100)break;} B. for(;;);

C. int k=1000; do{--k} while (k) D. int s=36; while(s>=0);++s;

一、单项选择题 13. [020000090200004] 语句while (!e);中的条件!e等价于__a____。

A. e==0; B. e!=1 C. e!=0 D. ~e

一、单项选择题 14. [020000090200007] 在C语言中____d__。

A. 不能使用do_while语句构成的循环

B. do_while语句构成的循环必须用break语句才能退出

C. do_while语句构成的循环,当while语句中的表达式为非0时结束循环 D. do_while语句构成的循环,当while语句中的表达式为0时结束循环 一、单项选择题 15. [020000090200010] 有以下程序: #include

void main() { while(putchar(getchar())!='?'); } 当输入\时,程序的执行结果是d______。

A. china B. dijob C. dijob? D. china?

一、单项选择题 16. [020000090200013]

若有如下程序段: int n=0; while(n++<=2) printf(\则正确的执行结果是d______。 A. 3 B. 2 C. 1 D. 123 一、单项选择题 17. [020000090200017]

设有程序段:int n=0; while(n++<3); printf(\,则运行结果是___c___。 A. 2 B. 3 C. 4 D. 以上都不对

一、单项选择题 18. [020000090200021] 以下能正确计算1×2×3×4...×10的程序段是__c____。 A. do {i=1; s=1; s=s*i; i++; } while(i<=10);

B. do {i=1; s=0; s=s*i; i++; } while(i<=10); C. i=1; s=1; do {s=s*i; i++; } while(i<=10); D. i=1; s=0; do {s=s*i; i++; } while(i<=10);

一、单项选择题 19. [020000090200024] 下面程序的运行结果是_b_____。

int a=1,b=10; do {b-=a; a++;} while(b--<0); printf(\A. a=3,b=11 B. a=2,b=8 C. a=1,b=-1 D. a=4,b=9

一、单项选择题 20. [020000090200027]

若i为整型变量,则以下循环执行的次数是b______。 for(i=2;i==0;) printf(\

A. 无限次 B. 0次 C. 1次 D. 2次

一、单项选择题 21. [020000090200030]

有如下语句 int x=3; do { printf(\则上面程序段_____b_。 A. 输出的是1 B. 输出的是1和-2 C. 输出的是3和0 D. 是死循环

一、单项选择题 22. [020000090200033]

以下的for循环,___b___。for(x=0,y=0;(y!=123)&&(x<4);x++); A.执行3次 B.执行4次 C.循环次数不定 D.是无限循环

一、单项选择题 23. [020000090200036] 下面程序段,___d___。

for(t=1;t<=100;t++) {scanf(\A. 当x<0时整个循环结束 B.当x>=0时什么也不输出

C.printf函数永远也不执行 D.最多允许输出100个非负整数

一、单项选择题 24. [020000090200039] 以下描述正确的是____c__。

A. goto语句只能用于退出多层循环 B. switch语句中不能出现continue语句 C. 只能用continue语句来终止本次循环 D. 在循环中break语句不能独立出现

一、单项选择题 25. [020000090200042] 下列程序段的运行结果是__d____。 int a,b,c,t; a=2;b=1;c=1;

while (a>b>c) { t=a;a=b;b=t;c--;}; printf(\ A. 1,2,0 B. 2,1,0 C. 1,2,1 D. 2,1,1

一、单项选择题 26. [020000090200045]

下面程序段运行结果是__a____。 int i,j,a=0; for(i=0;i<2;i++)

{ for(j=0;j<4;j++){if (j%2) break; a++; } a++; } printf(\ A. 4 B. 5 C. 6 D. 7

一、单项选择题 27. [020000090200048] 以下叙述正确的是____c__。

A. for循环中设置for(条件)break,当条件成立时中止程序执行。 B. for循环中设置for(条件)continue,当条件成立时中止本层循环。 C. for循环中设置for(条件)break,当条件成立时中止本层循环。 D. for循环中设置for(条件)break,当条件成立时暂停本次循环。 一、单项选择题 28. [020000090200051] 下面程序段输出的i值是____d__。 int i;

for(i=1;i<=100;i++)if((i*i>=150)&(i*i<=200))break; printf(\ A. 10 B. 11 C. 12 D. 13

二、判断题 1. [020000080400001]错 switch选择结构中必须有default子句。 二、判断题 2. [020000080400004]错

break语句不能用于switch语句外的任何其它语句。 二、判断题 3. [020000090400002]错 continue语句的功能就是结束本层循环。 二、判断题 4. [020000090400005]对

C语言的while、do-while和for几个循环语句中,for循环语句最灵活、功能最强。

二、判断题 5. [020000090400008]错

用do-while语句构成循环时,只有在while后的表达式为非0时结束循环。 二、判断题 6. [020000090400011]对

for(表达式1;表达式2;表达式3)中,表达式1和表达式3可以同时都为逗号表达式。 二、判断题 7. [020000090400014]对

for后的一对圆括号中,可以出现各种形式的与循环控制无关的表达式。

二、判断题 8. [020000090400017]错

while循环和do-while循环的while()后一定不能加上一个分号。

二、判断题 9. [020000090400020]对

若i为整型变量,则以下循环 i=0; while(i=0)i++;一次也不执行。 二、判断题 10. [020000090400023]对 执行语句 for(i=1;++i<10; );后,i的值是10。 二、判断题 11. [020000090400026]错

执行语句:for(i=1;i++<4;++i);后,变量i的值是3。

二、判断题 12. [020000090400029]对 执行完下面程序段后,k的值为0。 int i,j,k; for(i=0,j=10;i<=j;i++,j--) k=j-i;

三、填空题 1. [020000070100003] 阅读下面程序:

#include void main()

{ int s, t, a, b;

scanf(\ s=1; t=1;

if(a>0) s=s+1; if(a>b) t=s+t;

else if (a==b) t=5; else t=2*s;

printf(\

为了使输出结果t=4, 输入量a和b应满足的条件是______b>a>0_____。 三、填空题 2. [020000070100006]

阅读下列程序,写出运行结果_______67,D____。 #include void main ( )

{ char c1=67;

if (c1 >='A' && c1<='Z') printf(\,c1+1); else printf(\ }

三、填空题 3. [020000070100014] 以下程序完成的功能是________输出从键盘上输入数据的绝对值___。 #include void main( ) { int shu;

printf(\请输入一个整数%%d:\\n\ scanf(\&shu ); if ( shu < 0 ) shu = -shu;

printf(\ }

三、填空题 5. [020000090100013] 下面程序的运行结果是___-1________。 #include void main() { int a,i;

for( a=1,i=-1;-1<=i<1;i++) { a++; printf(\ printf(\

三、填空题 6. [020000090100016] 下列程序的输出结果为_____X=6______。 #include void main() { int i,j,x=0; for(i=0;i<3;i++)

{ if(i%3==2) break; x++;

for(j=0;j<4;j++) { if(j%2) break; x++; } x++; }

printf(\

三、填空题 7. [020000090100021]

运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为__m=14_________。 #include void main()

{ int m,n; printf(\ scanf(\while(m!=n){ while(m>n) m-=n; while(n>m)n-=m;} printf(\

三、填空题 8. [020000090100029]

当输入“quert?”时,下面程序执行的结果是_______quert____。 #include void main()

{ char c; c=getchar(); while(c!='?') { putchar(c);

c=getchar();} }

三、填空题 9. [020000090100034] c-=30 c-=26

下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。 #include void main() { char c;

while ((c=getchar())!='\\n')

{ if (c>='a' && c<='z') ___________; if (c>='Z' && c<='Z'+2) ___________; printf(\

三、填空题 10. [020000090100037] z=0 i==sum 下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中x,y,z和yzz分别表示一个三位数)。 #include void main()

{ int x,y,z,i,sum=532; for(x=1;x<10;x++)

for(y=1;y<10;y++)

for(___________;z<10;z++)

{ i=100*x+10*y+z+100*y+10*z+z;

if (___________) printf(\

平时练习系统 C语言(数组)单元练习三 3-1

一、单项选择题

1. 已定义:float a[5]; 则数组a可引用的元素有___D___。 A. a[1]~a[5] B. a[0]~a[5] C. a[1]~a[4] D. a[0]~a[4]

2.若有以下定义:double w[10]; 则数组w的元素下标范围是___B___。 A. [0,10] B. [0,9] C. [1,10] D. [1,9] 3.阅读程序: f(int b[],int n) { int i,r=1;

for(i=0;i<=n;i++) r=r*b[i]; return r; } main()

{ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3); printf(\; } 以上程序的输出结果是_D_____。 A. 720 B. 6 C.24 D. 120 4.以下程序段给数组所有元素输入数据: #include

void main() { int a[10],i=0; while(i<10) scanf(\; ... ... } 应在圆括号中填入的是___D___。 A. a+(i++) B. &a[i+1] C. a+i D. &a[++i] 5.以下定义语句中,错误的是__B____。

A. int a[ ] = {6,7,8}; B. int n=5, a[n];

C. char a[ ]= \; D. char a[5 ]={'0','1','2','3','4'};

6.用数组名作为函数调用时的实参,实际上传送给形参的是__A____。 A. 数组首地址 B. 数组的第一个元素值 C. 数组中全部元素的值 D. 数组元素的个数

7.若定义数组int a[10] ,其数组元素的下标下限为___B___。 A. 1 B. 0 C. 9 D. 10

8.若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立___B___。 A. a[8] 的值为0 B. a[1] 的值为1 C. a[3] 的值为4 D. a[9] 的值为0 9.指出以下错误语句_A_____。 A. int n=10,a[n]; B. int n,a[10];

C. int a[10]={1,2,3}; D. int a[10]={1,2,3,4,5,6,7,8,9,10}; 10.执行下面的程序段后,变量k中的值为___A___。 int k=3,s[2]; s[0]=k;k=s[1]*10;

A.不定值 B.33 C.30 D.10

11.设有数组定义:int a[5];则下列给数组元素赋值错误的是___B___。

A. a[3]=93; B. scanf(\; C. a[3]=getchar(); D. a[3]='a'+3; 12.以下数组定义中错误的是__D___。

A. #define N 30 int a[N+30]; B. #define N 30 int a[N]; C. int a[30]; D. int a[N];

13.在定义一个一维数组时,不能用来表示数组长度的是__D____。 A.常量 B.符号常量 C.常量表达式 D. 已被赋值的变量

14.若float型变量占用4个字节,有定义float a[20]={1.1, 2.1, 3.1};则数组a在内存中所占的字节数是___D___。

A.12 B.20 C.40 D.80

15.若定义数组int a[10],以下语句哪一个不成立__D____。 A. a 数组在内存中占有一连续的存储区

B. a代表a数组在内存中占有的存储区的首地址 C. *(a+1)与a[1]代表的数组元素相同 D. a是一个变量

17.设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是__A____。 A. 6 B. 5 C. 7 D. 1

18.设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为__C____。 A. 2 B. 4 C. 6 D. 8

19.设有:int a[4][5]; 则数组a占用的内存字节数是___C___。 A. 12 B. 24 C. 40 D. 20

20.以下数组定义中,不正确的是_B_____。 A. int b[3][4];

B. int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}}; C. int b[200][100]={0}; D. int c[ ][3]={{1,2,3},{4,5,6}};

21.定义数组:int x[2][3]; 则数组x 的维数是__B____。 A. 1 B. 2 C. 3 D. 6

22.若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立___C___。 A. 表达式b[1][2]的值为1 B. 表达式b[1][2]的值为4 C. 表达式b[1][2]的值为6 D. 表达式b[1][2]的值为2 23.若定义数组并初始化

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

for(j=0;j<3;j++) printf(\;语句的结果是哪一个_C_____。 A. 1,2,3,4,5,6 B. 1 2 3 4 5 6 C. 123456 D.1, 2, 3, 4, 5, 6

24.若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立__B____。 A. a数组中有6个元素 B. a[2][3]是a数组的最后一个元素的引用 C. a数组中每个元素都为整数 D. a数组是整型数组

25.定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是__C____。for(i=0;i<3;i++) printf(\;

A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9

26.如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是__C____。

A. s[1][3] B. s[0][3] C. s[0][2] D. s[1][2] 27.以下程序的输出结果是___A___。 #include void main()

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

for(j=0;j<=i;j++) s+=a[i][j]; printf(\; } A. 18 B. 19 C. 20 D. 21

28.若已有char b[10][50];则该二维字符数组在内存所占字节数为_D_____。 A. 10 B.50 C.60 D.500

30.设有:char a[10]; 下列语句那个是正确的___D___。 A. scanf(\; B. scanf(\ a); C. printf(\ D. printf(\ a)

31.阅读程序: #include void main()

{ char a[10]; int i;

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

设从键盘输入字符串:abcde,则程序的输出结果是__C____。 A. a B.空格 C.不确定 D.0

32.设有:char a[4][5]; 则数组a占用的内存字节数是_D_____。 A. 12 B. 24 C. 40 D. 20 33.合法的数组定义是__D____。 A. int a[ ] = \; B. int a[5]={0,1,2,3,4,5}; C. char a= \; D. char a[ ]={'0','1','2','3'};

34.设有数组定义:char string[ ]=\;则数组string所占的空间为__B____。 A. 5个字节 B. 6个字节 C. 7个字节 D. 10个字节

35.定义字符数组c:char c[ ]={\;数组c在内存中所占字节数是__C____。 A. 9 B. 10 C. 11 D. 12 36.指出以下错误语句____C_。

A. char a[10]={'0','1','2','3','4','5','6','7','8','9'}; B. char a[10]={'0','1 ','2','3'};

C. char a[2]= {\; D. char a[2]= {'a’,'b’};

37.若定义数组并初始化char a[10]={\该数组的元素中’\\0’的个数是__B____。 A. 10 B. 5 C. 6

38.若定义数组并初始化char a[10]={\; int b[10]= { 'h','e','l','l','o'}; 以下语句哪一个不成立___B___。

A. a和b数组中各有10个元素

B. a数组的初始化是错误的

C. a数组与b数组中每个对应元素相等 D. a、b数组都是字符数组

二、多项选择题

1. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立______。 A.b[8]的值为0 B.b[1]的值为1

C.b[3]的值为整数 D.b[10]不是b数组中的元素

1 ACD

2. 题目不存在

三、判断题

1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。 错

2. 数组是C语言的一种构造数据类型,其元素的类型可以是整型、实型、字符型甚至结构类型。 对

3. 设需定义一个有15个元素的数组a,并对其前5个元素赋初值,可用如下语句实现:int a[]={1,2,3,4,5}; 错

4. 数组定义时,只允许使用常量表达式定义数组的大小,其值必须是正整数,而不能用变量来定义数组长度。 对

5. C语言数组的下标从0开始,下标必须是整数型的常量或变量。 对

6. 数组是数目固定、类型相同的若干变量的有序集合。数组中的每一个数(变量)称为数组元素,数组中的所有元素都属于同一种数据类型。 对 7. 数组元素下标的下界是固定的,总是为0。 对

8. 一维数组在引用时下标的范围是:0 <= 下标 < 数组的长度 。 对

9. 若有数组定义为:int a[100];则该数组的下界为0,上界为100。数组元素下标范围是: 下界 <= 下标 < 上界。 对] 10 题目不存在

3-2

一、单项选择题

01..已定义:int a[15]; 则数组a占用的内存单元数是_____。 A. 15 B. 16 C. 30 D. 32 02. 设有程序: #include void main()

{ int i,a[5]; printf(\; for (i=0;i<=4;i++) scanf(\,( ));

... ...

printf(\输出数组:\\n\;

for(i=0;i<=4;i++) printf(\ )); } 则在程序中的两个括号中应填入______。

A. a[i]和&a[i] B. &a[i]和&a[i] C. &a[i]和a[i] D. a[i]和a[i] 03. 已知int类型变量在内存中占用2个字节,定义数组int b[8]={2,3,4};则数组b在内存中所占字节数为______。 A. 3 B. 6 C. 8 D. 16

04. 若有以下说明:int a[10]={1,2,3,4,5,6,7,8,9,10}; char c='a'; 则数值为4的表达式是______。

A. a['f'-c] B. a[4] C. a['d'-'c'] D. a['d'-c] 05. 以下描述中正确的是______。

A. 数组名后面的常量表达式用一对圆括弧括起来 B. 数组下标从1开始

C. 数组下标的数据类型可以是整型或实型 D. 数组名的规定与变量名相同

06. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下正确语句______。

A. scanf(\; B. scanf(\; C. printf(\; D. printf(\;

07. 若定义数组int a[10] ,其最后一个数组元素为______。 A. a[0] B. a[1] C. a[9] D. a[10]

08. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个成立______。 A. 若引用a[10],编译时报错 B. 若引用a[10],连接时报错 C. 若引用a[10],运行时出错 D. 若引用a[10],系统不报错

09.若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立______。 A. a[10]是a数组的最后一个元素的引用 B. a数组中有10个元素

C. a数组中每个元素都为整数 D. a数组是整型数组

10. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='e', 则数值为2的表达式是______。 A.str['g'-c] B.str[2] C.str['d'-'c'] D.str['d'-c] 11. 下列数组定义正确的是______。

A. int a[]; B. char a[100]={68,69,70}; C. int n=100,a[n]; D. char n=4,a[n]={\;

12. 一维数组初始化时,若对部分数组元素赋初值,则下面正确的说法是______。 A. 可以只对数组的前几个元素赋初值 B. 可以只对数组的中间几个元素赋初值 C. 可以只对数组的后几个元素赋初值 D. 以上说法全部正确

13. 决定数组所占内存单元多少的是______。 A. 数组的长度 B. 数组的类型

C. 数组在初始化时被赋值的元素的个数 D. 数组元素的个数及其类型

14. 以下程序的输出结果是______。 #include void main( ) { int i , a[10];

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

printf(\; } A.258 B.741 C.852 D.369

15. 如已有定义:int a[4];若要把10,20,30,40分别赋值给数组a的4个元素,下面正确的赋值方式是______。

A. scanf(\; B. scanf(\

C. a[0]=10;a[1]=a[0]+10;a[2]=a[1]+10;a[3]=a[2]+10; D. a={10,20,30,40}; 16.题目不存在= =!

17. 设有程序段: #define N 3 #define M N+2 float a[M][N]; 则数组a的元素个数和最后一个元素分别为______。

A. 15,a[5][3] B. 15,a[3][5] C. 8,a[4][2] D. 15,a[4][2]

18. 设有:int x[2][4]={1,2,3,4,5,6,7,8};printf(\; 则输出结果是______。 A. 8 B. 1 C. 随机数 D. 语法检查出错 19. 以下程序的输出结果是______。 #include void main()

{ int i,a[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. 以下数组定义中正确的是______。 A. float f[3,4]; B. int a[ ][4]; C. char c(3); D. double d[3+2][4]; 21. 指出以下错误语句______。

A. int a[2][3]= {{1,2,3},{4,5,6}}; B. int b[2][3]= {1,2,3,4,5,6}; C. int a[][]={{1,2,3},{4,5,6}}; D. int a[][3]={{1,2,3},{4,5,6}};

22. 若定义数组并初始化int b[][3]={{1,2,3},{4,5,6}};以下语句哪一个成立______。 A. b[1][2]的值为1 B. b[1][2]的值为4 C. b[1][2]的值为6 D. b[1][2]的值为2 23. 若定义数组并初始化

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

for(j=0;j<3;j++) printf(\;语句的结果是哪一个______。 A. 1,2,3,4,5,6 B. 1 2 3 4 5 6 C. 120340 D. 1 2 0 3 4 0

24. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}},b[2][3]={ 1,2,3,4,5,6}; 以下语句哪一个不成立______。

A. a和b数组中各有6个元素

B. b数组的初始化是错误的

C. a数组与b数组中每个对应元素相等 D. a、b数组都是整型数组

25. 合法的数组初始化是______。 A. int x[][]={{1,2,3},{4,5,6}}; B. int x[][3]={1,2,3,4,5};

C. int x[3][3]={1,2,3;4,5,6;7,8,9}; D. int x[3][3]={1,2,3};

26. 在对二维数组初始化时,错误的说法是______。 A.可对二维数组的全部元素赋初值 B.可对二维数组的部分元素赋初值

C.给二维数组的全部元素赋初值时,可以不指定第一维的长度但第二维的长度不能省略 D.给二维数组的全部元素赋初值时,可以不指定第二维的长度但第一维的长度不能省略 27. 以下程序的输出结果是______。 #include void main()

{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf(\; } A.0650 B. 1470 C. 5430 D.输出值不确定 28. 在内存中,二维数组存放的顺序是______。 A.按行顺序 B.按列顺序

C.按元素的大小 D.按元素被赋值的先后顺序

29. 设定义了:char a[10]={'1','2','3','4','5'}; 则a[5]的正确初值是______。 A. '5' B. 5 C. '\\0' D. ' '

30. 设有:char a[10]; 下列语句那个是正确的______。 A. scanf(\; B. scanf(\ a); C. printf(\ a) D. printf(\

31. 设有定义:char a[][5]={{'*'},{'*',' ','*'},{'*',' ',' ',' ','*'},{'*',' ','*'},{'*'}}; 则a[0][0]和a[4][4]的初值分别为______。

A. *,* B. 空格,空格 C. 空白符,* D. *,空白符

32. 设有:char a[]={\; 则a在内存中占用的字节数是______。 A. 15 B. 12 C. 16 D. 32

33. 给出以下定义:char u[ ]=\; char v[ ]={'a','b','c','d','e','f'}; 则下列正确的描述为______。

A. 数组u和数组v等价 B. 数组u和数组v的长度相等

C. 数组u的长度大于数组v的长度 D. 数组u的长度小于数组v的长度

34. 若有以下定义和语句,则输出结果是______。 char string[ ]=\; printf(\; A. Su B. Sun C. Sunn D. Sunny 35. C语言中实现字符串输入的库函数是______。 A. gets(字符数组) B. puts(字符数组)

C. strlen (字符串) D. strcmp(字符串1,字符串2)

36. 若定义数组并初始化char a[]={\该数组的元素个数是______。 A. 不知道 B. 5 C. 6 D. 7

37. 若定义数组并初始化char a[10]={\该数组的元素中 a[2]是______。 A. 'L' B. 'E' C. 'H' D. 'O'

38. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'},指出以下会导致错误的语句______。

A. printf(\; B. printf(\; C. printf(\; D. printf(\; 二、多项选择题

1. 若定义数组int a[10];指出下列错误语句__ABCD__。 A. a数组共有10个元素,其引用方法是:a[1],a[2]...a[10]; B. a数组是整型数组,其元素自动初始化为0; C. a数组最后一个元素的引用方法是a[10]; D. a数组第一个元素的引用方法是a[1]; 三、判断题

1. 可以用如下的语句定义数组a:int n=10,a[n];

2. 设已定义:int a[15]={1,2,3,4,5}; 则语句 printf(\的输出结果是5。 3. 数组中的所有元素必须属于同一种数据类型。 4. 数组名表示的是该数组元素在内存中的首地址。

5. C语言只能单个引用数组元素而不能一次引用整个数组。

6. 定义数组: int a[10]; 则数组a的最后一个元素是a[9],数组 a共有9个元素。 7. C语言中数组元素用数组名后带圆括弧的下标表示。 8. C语言中数组所占存储单元的多少仅由数组的长度决定。

9. 定义一维数组int a[10];则语句for(i=0;i<10;i++) scanf(\;是正确的。 3-2 一、

1.C 2.C 3.D 4.D 5.D 6.D 7.C 8.C 9.A 10.B 11.B 12.A 13.D 14.C 15.C

16.空 17.D 18.C 19.C 20.D 21.C 22.C 23.C 24.B 25.D 26.D 27.A 28.A 29.C 30. D 31.D 32.C 33.C 34.B 35.A 36.C 37.A 38.A 二、1.ABCD

三、1.错 2.错 3.对 4.对 5.对 6.错 7.错 8.错 9.错

4 -1

一、单项选择题;[020000150200001] >C语言程序的基本单位是______。 A. 程序 B. 语句 C. 字符 D. 函数

[020000150200004]下面函数 f(double x) {printf(“m\\n”,x);} 的类型为______。 A. 实型 B. void 类型 C. int 类型 D. A、B、C均不正确

[020000150200007]已有数组定义int a[3][4];和函数调用语句f(a); ,则在f函数的说明中,对形参数组array的错误定义方式是______。

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

Top