C语言程序设计 - 习题大全(含答案)

发布时间:2019-03-24 02:22:32   来源:文档文库   
字号:

C语言基础一:

1.下列四组选项中,均不是C语言关健字的选项是( A )

A) define B) gect C) include D) while

IF char scanf go

type printf case pow

2.下面四个选项中,均是合法整型常量的选项是( A )

A)160 B)-0xcdf C) -01 D)-0x48a

-0xffff 01a 986,012 2e5

011 0xe 0668 0x

<<02>>B>>2

3.下面四个选项中,均是不合法的转义符的选项是( B )

A) '\"' B) '\1011' C) '\011' D) '\abc'

'\\' '\' '\f' '\101'

'xf' '\A' '\}' 'x1f'

4.下面不正确的字符串常量是( A )

A)'abc' B)"12'12" C)"0" D)" "

5.以下选项中不合法的用户标识符是( A )

A)abc.c B)file C)Main D)PRINT

6.C语言提供的合法关键字是( D )

A) swith

B) cher

C) Case

) Default

7.下列标识符组中,合法的用户标识符为 A

A)_0123ssiped

B)del-wordsigned

C)list*jer

D) keep%wind

8.C语言中,逻辑值""的表示是用( C )

A) true B) 整型值0 C)非另整型值 D) T

9若有以下定义

char s='\092';

则该语句( B

A)使s的值包含一个字符 B)定义不合法,s的值不确定

C)使s的值包含4个字符 D)使s的值包含3个字符

10C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。

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

11已知字母AASCII码为十进制数65,c2为字符型,则执行语句c2='A'+'6'-'3',c2中的值为( A )

A)D B)68 C)不确定的值 D)C

12逻辑运算符两侧运算对象的数据类型是 ( D )

A) 只是01 B) 只能是0或非0正数

C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据

13TURBO Cint类型变量所占字节数是( B )

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

14C语言中,char型数据在内存中的存储形式是( D )

A) 补码 B) 反码 C) 原码 D) ASCII

15若有以下定义,则能使值为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)

16判断char型变量c1是否为小写字母的正确表达式为 ( D )

A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z')

C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')

17 已知各变量的类型说明如下:

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)

tdouble类型,表达式t=1,t+5,t++的值是( D )

A)1 B)6.0 C)2.0 D)1.0

n=10i=4,则赋值运算 n%=i+1执行后,n的值是( A ).

A) 0

B) 3

C) 2

D) 1

Int n=3;则有表达式++nn的结果是( C )

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

用十进制形式输入有符号整数时,在scanf函数语句里格式字符为( AB )

Ad Bi Cn Du

scanf函数语句中可用的修饰符有( ABCD )

A* Bh Cl D)宽度

1数据是操作的对象,操作的结果会改变数据的状况。

2字符型变量用来存放字符常量,注意只能放2个字符。

3C语言中可以把一个字符串赋给一个字符变量。

4 C语言中的实型变量分为两种类型,它们是 float(实型)double(双精度实型)。

5C语言中,要求参加运算的数必须是整数的运算符是% .

6若有以下定义,则执行下面表达式y+=y-=m*=y后,y的值为-6int m=5,y=2;

7输入语句的格式为: scanf("%d%d%d",&a,&b,&c);是正确的。

8scanf("%d,%d",&a,&b)函数中,可以使用一个或多个空格作为两个输入数之间的间隔。

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

10在变量说明中给变量赋初值的方法是:int a=b=c=10;

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

13printf函数称为格式输入函数,它的函数原型在头文件"stdio.h"中。

14printf函数中,不同系统对输出表列的求值顺序不一定相同,TC是按从右到左进行的。

15int x=3; printf("%d",&x);则系统会报错,没有任何结果。

16逻辑运算符的优先级别高于算术运算符

1C语言中,表示逻辑""值用【 1 .

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

3假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是【 8 】。

4xint型变量,则执行下面表达式后,x的值为【 12 】。x=(a=4,6*2)

5k int整型变量且赋值7,请写出赋值表达式 k *= k + 3的运算结果【70 】。

6scanf函数是一个标准库函数,它的函数原型在头文件【 stdio.h 】中。

7getchar函数可以接收【 】个字符,输入数字也按字符处理。

8在语句中,给变量赋值时,赋值语句必须以【 分号 】结尾。

9a=3b=2c=1时,表达式f=a>b>c 的值是【 0

10xyz均为int型变量,请写出描述"x,y中有一个为负数"的表达式【 x<0&&y>=0||y<0&&x>=0

11a=6b=4c=3,则表达式 a&&b||b-c的值是【1

12x=3y=-4z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y=z)的值是【 1

基础二

1下面四个选项中,均是非法常量的选项是( A )

A)'as' B)'\\' C)-0x18 D)0xabc

-0fff '\01' 01177 '\0'

'\0a' 12,456 0xf "a"

2下面四个选项中,均是不合法整型常量的选项是( D )

A)-0f1 B)-0xcdf C) -018 D)-0x48eg

-0xffff 017 999 -068

0011 12,456 5e2 03f

3下面正确的字符常量是( C )

A) "c" B) '\\'' C) 'W' D) '

4以下每个选项都代表一个常量,其中正确的整型常量是( B )

A)1.2 B)-20 C)1,000 D)4 5 6

5以下选项中不合法的用户标识符是( C )

A)_123 B)Printf C)A$ D)Dim

6在下列C语言程序中,可以用做变量名的是( B )

A) 1

B) a1

C) int

D) *p

7C语言提供的合法数据关键字是( A )

A) float

B) Sagned

C) Integer

D) Char

8以下符号中不能用作用户标识符的符号是( B )

A)_256 B)void

C)scanf D)Struct

9kint型变量,则以下语句( C )。

k=8567;

printf("|%-06d|\n",k);

A)输出格式描述不合法 B)输出为|008567|

C)输出为|8567| D)输出为|-08567|

10sizeof(float)( B )

A)一个双精度表达式 B)一个整型表达式

C)一种函数调用 D)一个不合法的表达式

11C语言中, intcharshort三种类型数据在内存中所占用的字节数( D )

A)由用户自己定义 B)均为2个字节

C)是任意的 D)由所用机器的机器字长决定

12判断char型变量c1是否为小写字母的正确表达式为 ( D )

A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z')

C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')

13以下叙述中正确的是( B )

Aa是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号右边即可以是变量也可以是任意表达式

C.执行表达式a=b,在内存中ab存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3

14表达式18/4*sqrt (4.0)/8值的数据类型为( C )

A)int B)float C)double D)不确定

15下列运算符中,不属于关系运算符的是( C )

A) < B) > = C) ! D) ! =

16若希望当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是 ( C )

A) A%2= =1 B) !(A%2= =0) C) !(A%2) D) A%2

17已知各变量的类型说明如下:

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)

18 若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )

A)a=a+7; B)a=7+b+c,a++ C)int 12.3%4 D)a=a+7=a+b

19逗号表达式(a=3*5a*4)a+15的值为( C )

A)15 B)60 C)30 D)不确定

20Int n=3;则n++的结果是( B )

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

1用小数或指数形式输入实数时,在scanf函数语句里格式字符为( BCD )

Ai Bf Ce Dg

2可以使用( CD )输入字符型数据。

Aputchar(c); Bgetchar(c); Cgetchar(); Dscanf("%c",&c);

1C语言中数据有常量与变量之分。

2一般一个字符变量在内存中占一个字节。

3C语言规定,可以在定义变量时,同时使变量初始化。

4k1k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0; 。错

5如果i的原值为3,则:j = ++ ij的值为3

6凡是表达式都有一个值。

7输入语句的格式为:scanf("%d,%d,%d",a,b,c);是正确的。

8scanf("%d%*d%d",&a,&b)函数中,当输入为123时,将1赋给a,将2赋给b

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

10假定变量a,b,c在说明时已赋初值,则 if ((a=b;)>0) c=a;是正确的。

11

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

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

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

15int x=3; printf("%d",&x);则系统不会报错,会输出x的地址。

16int a=0b=1c=2;则表达式a||b+c&&b==c的值为0

1若有以下定义:char c='\010';则变量C中包含的字符个数为( 1 )。

2若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为【 1 】。(x+y)%2+(int)a/(int)b

3aint型变量、且a的初值为6,则执行下面表达式后,a的值为【 60 】。a+=a-=a*a

4xint型变量,则执行下面表达式后,x的值为【 4 】。x=a=4,6*2

5aint型变量,且a的初值为6,则计算表达式后a的值为【 60 】。a+=a-=a*a

6scanf函数的地址表列中给出各变量的地址,地址是由【 地址运算符"&" 】后跟变量名组成的。

7使用getchar函数接收字符,若输入多于一个字符时,只接收第【 】个字符。

8 C语言的格式输出函数是【 printf() 】。

9a=5b=4c=2时,表达式a>b!=c 的值是【 1

10已知A=7.5B=2C=3.6,表达式A>B&&C>A || AB的值是【 0

11a=3b=2c=1,则表达式a-b的值是【0

12int a=0b=4c=5;则表达式a||b+c&&b!=c的值为【 1

基础三

1下面四个选项中,均是不合法的用户标识符的选项是( C )

A) A B) float C) b-a D) _123

p_0 lao goto temp

do _A int INT

2下面四个选项中,均是不合法浮点数的选项是( B )

A) 160. B) 123 C) -018 D) -e3

0.12 2e4.2 123e4 .234

e3 .e5 0.0 1e3

3下面四个选项中,均是不正确的八进制或十六进制数的选项是( D )

A)016 B)0abc C)010 D)0a12

0x8f 017 -0x11 7ff

018 0xa 0x16 -123

4以下每个选项都代表一个常量,其中不正确的实型常量是( B )

A)2.607E-1 B)0.8103e 2 C)-77.77 D)45.6e-2

5可用作用户标识符的一组标识符是( B )

A)void B)a3_b3 C)For D)2a

define _xyz -abc DO

WORD IF Case sigeof

6下列标识符组中,合法的用户标识符为( B )

A) PAdp#d

B) Scanf a10

C) voidmax

D) A*temp

7 B )是C语言提供的合法的数据类型关键字。

A)Float B)signed C)integer D)Char

8以下选项中正确的常量是( B )

A) 012

B) -20

C) 1000

D) 4 5 6

9现已定义整型变量int i=1

执行循环语句while(i+ +<5);后,i的值为( B )

A)1 B)5 C)6 D)以上三个答案均不正确

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

A)int B)float C)double D)不确定

11若有说明语句:char c='\72';则变量c ( C )

A)包含1个字符 B)包含2个字符

C)包含3个字符 D)说明不合法,c的值不确定

12XYZ都是int整型变量,x=2, y=3, z=4,则下面的表达式中,值为0的表

达式是( A )

A) 'x'&&'z' B) (!y= =1)&&(!z= = 0)

C) (x

13以下叙述中正确的是( B )

A) C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示

B) 若在定义语句double a,b;之后,因为变量a,b已正确定义,因此立刻执行这样的表达式:a=b+9.381是正确的

C) C程序中,常量、变量、函数调用,都是表达式的一种

D) main函数中,变量一经定义,系统将自动赋予初始值

14设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为( C )

A) float B) char C) int D) double

15a=2,b=3,c=4,则表达式 a+b>c&&b= =c&&a||b+c&&b+c的值为( D )

A) 5 B) 8 C) 0 D) 1

16C语言中,逻辑值""的表示是用( D )

A) true B) 整型值0 C) 非另整型值 D) T

17以下不正确的叙述是( C )

A)C程序中,逗号运算的优先级最低

B)C程序中,APHaph是两个不同的变量

C)ab类型相同,在计算了赋值表达式a=bb中的值将放入a,b中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

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

A)i+f B)i*c C)c+f D)i+c+f

19设有逗号表达式(a=3*5a*4)a+15a的值为( B )

A)60 B)30 C)15 D)90

20Int n=3;则有表达式n++n的结果是( C )

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

1若在scanf函数语句中没有非格式字符作输入数据的间隔,则可用( ACD )

作为输入数据的间隔。

A)空格 B)逗号 CTAB D)回车

2使用scanf函数时,在源程序开头( ABC )

A)书写#include "stdio.h" B)书写#include

C)不必写#include D)书写#include "scanf.h"

1C语言规定标识符只能由字母、数字和小数点三种字符组成。

2 C语言使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。

3 C语言中定义了一个变量,代表内存中的一个地址。

4表达式3.5 + 1/2 + 56%10的计算结果是7.5

5 由赋值运算符将一个变量和一个表达式连接起来的式子称为"赋值表达式"

6C语言中,一个int型数据在内存中占2个字节,则int数据的取值范围为-32768-32769

7在使用scanf函数之前应包含头文件"math.h"

8scanf("%c%c",&c1,&c2)函数中,当输入为字符ab时,将a赋给c1,将b赋给c2

9 scanf函数中,如果格式控制串中有普通字符则输入时也要输入该普通字符。

10 假定变量x,y,z在说明时已赋初值,则 if ((x=y+5)>0) z=x; 是正确的

11printf函数中的格式字符,既可以是大写形式,也可以是小写形式。

12printf函数中,格式字符"%5c"可用来输出5个字符。

13printf函数中,格式字符s的意义是:输出单个字符。

14 printf函数中,输出项可以是任意合法的表达式。

15 算术运算符的优先级别高于关系运算符

16 int a=0b=1c=2xy;,则!(x=a)&&(y=b)&&c的值为1

1xn均是int型变量,且x的初值为12,n的初值为5,则执行下面表达式后,x的值为( 0 )。x%=(n%=2)

2假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为【 9 】。

3aint型变量,则执行下面表达式后,a的值为【2 】。a=25/3%3

4表达式1/3*3的计算结果是【 0 】。

5aint型变量,则计算表达式后a的值为【 2 】。a=25/3%3

6在输入字符数据时,若"格式控制字符串"中没有非格式字符,则认为所有输入的字符均为【 有效 】字符。

7scanf函数中,【 &a 】表示变量a的地址。

8以下程序的运行结果是【 computer, com 】。

main()

{ printf("%s,%5.3s","computer","computer"); }

9C语言中,表示逻辑""值用【 非零数

10a=6b=4c=2,则表达式!(a-b)+c-1&&b/3+c/2的值是【 1

11a=-1b=0c=1,则表达式a||b+c&&b==c的值是【 1

12int a=3b=4c=5xy;,则以下表达式的值为【 0

!(x=a)&&(y=b)&&c

基础四

1以下符号中不能用作用户标识符的符号是( )

A)_256 B)void

C)scanf D)Struct

2下面四个选项中,均是合法浮点数的选项是( )

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

3下面四个选项中,均是正确的八进制或十六进制数的选项是( )

A) -1a B)0abc C)0010 D)0a12

0x8f -017 0x11 -0x123

-011 0xc 0xf1 -0xa

4以下选项中,C语言合法的关键字是( )

A)swicth B)cher C)Case D)default

5C语言提供的合法的数据类型关键字是( )

A)Double B)short C)integer D)Char

6下列标识符组中,合法的用户标识符为( )

A)b-babc

B)CCPfloat

C)hiy

D) iswINT

7 属于合法的C 语言长整型常量的是( )

A)5876273 B)0L C)2E10 D)Long5876273int类型数据占两个字节,下8列程序的输出结果是( )。

main()

{

int k=-1;

printf("%d,%u\n",k,k);

}

A)-1-1 B)-132767 C)-132768 D)-165535

9设已定义xdouble类型变量

x=213.82631;

printf("%-6.2e\n",x);

则以上语句( )

A)输出格式描述符的域宽不够,不能输出 B)输出为21.38e+01

C)输出为2.14e+02 D)输出为-2.14e2

10执行x=5>1+2&&2||2*4<4 - !0,X的值为( )

A) -1 B) 0 C) +1 D) 5

11ch是字符变量,其值为A,且有下面的表达式ch=!(ch>='A'&&ch<='z')?ch:(ch+32)则表达式的值是 ( )

A) A B) a C) 2 D) z

12chchar型变量,其值为Z,且有下面的表达式,其值为( )

ch=(ch>='A'&&ch<='Z')?(ch+32):ch

A) A B) a C) Z D) z

13以下的变量定义中,合法的是( )

A)float 3_four = 3.4 ; B)int _abc_= 2 ;

C)double a = 1 + 4e2.0 D)short do =15;

14若有int k = 11;则表达式(k++ * 1/3)的值是( )

A)0 B)3 C)11 D)12

15逻辑运算符两侧运算对象的数据类型是 ( )

A) 只是01 B)只能是0或非0正数

C) 只能是整型或字符型数据 D) 可以是任何类型数据

16下列表达式的值,那一个等于0 ( )

A) 5%6 B) 5/6 C) 5/6.0 D) 5 - 6

17以下正确的叙述是( )

A)C程序中,每行只能写一条语句

B) a 是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C)C程序中,无论是整数还是实数,都能被准确无误地表示

D)C程序中,%是只能用于整数运算的运算符

18以下不正确的语句(设有int p,q)是( )

A)p*=3; B)p/=q; C)p+=3; D)p&&=q;

19如果a=1b=2c=3d=4,则条件表达式aaccd的值为( ).

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

20Int n=2;则++n+1= =4的结果是( )

A)true B)false C)1 D)0

1若输入4位整数到整型变量a中,可用( )

Ascanf("%4d"); Bscanf("%4d",&a);

Cscanf("%4d",a); Dscanf("%d",&a);

2对于scanf("a=%d",&a),a为整型变量,输入5,其输出可为( )

Aa=5 B5 Ca= 5 Da=a=5

1C语言中,要求对所有用到的变量先定义,然后才能使用。

2C语言中,字符数据与整型数据可以互相赋值。

3C实型变量分为单精度和双精度两种。

4a1a2定义成单精度实型变量,并赋初值1的定义语句是float a1=1; a2=1;

5C语言中逗号运算符又称为"顺序求值运算符"

6C提供的三种逻辑运算符是 !, &&, >= .

7在使用scanf函数之前可以不包含头文件"stdio.h"

8scanf("%4d",&i)函数中,输入123456789,只把123456赋予变量i

9a=b=c=d=10;是一个合法的赋值语句。

10C语言的格式输出函数是scanf().

12使用printf函数时,格式控制字符串和各输出项应一一对应。

13printf函数中,格式字符f的意义是:以小数形式输出单精度实数。

14printf函数中,转义字符\b的作用是退格。

15算术运算符的优先级别高于逻辑运算符

16int a=1b=0c=1;,则!(a+b)+c-0&&b+c/2的值为1

1经过下述赋值后,变量x的数据类型是( )。

int x=2;

double y;

y=(int)(float)x;

2已知字母aASCII码的十进制代码为97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【 】。

3sint型变量,且s=6,则下面表达式的值为【 】。

s%2+(s+1)%2

4表达式1.0/2*3的计算结果是【 】。

5a=3b=2c=1时,表达式f=a>b>c的值是【 .

6getchar函数是【 】函数。

7赋值语句是由赋值表达式加上【 】构成的。

8TC中,printf()函数输出表列的求值顺序是【 】。

9yint型变量,请写出描述"y是奇数"的表达式【

10a=2,b=4,则表达式!(x=a)|| (y=b)&&0的值是【

11条件"0x<-3"c语言表达式是【

12int a=3b=4c=5;,则以下表达式的值为【

!(a+b)+c-1&&b+c/2

基础五

1C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )

A)必须为大写

B)必须为下划线

C)必须为字母或下划线

D)可以是字母、数字和下划线中的任一种字符

2下面四个选项,均是合法转义字符的选项是( )

A) '\'' B) '\' C)'\018' D) '\\0''

'\\' '\017' '\f' '\101'

'\n' '\"' 'xab' 'x1f'

3下面四个选项中,均是正确的数值常量或字符常量的选项是( )

A)0.0 B)"a" C)'3' D)+001

0f 3.9E-2.5 011 0xabcd

8.9e 1e1 0xFF00 2e2

'&' '\"' 0a 50

4以下符号中不能用作用户标识符的是( )

A)IF B)Switch C)gets D)case

5C语言中,下列哪个字符为合法的字符常量( )

A)'\084

B)'\x43

C)'ab

D)'\0

6下列四个选项中,均是C语言关健字的选项是( )

A) auto B) switch C) signed D) if

enum typedef union struct

include continue scanf type

7不合法的常量是( )

A)'\2' B)'"' C)" D)"\483"

8a为整型变量,则以下语句( )。

a=-2L;

printf("%d\n",a);

A)赋值不合法 B)输出值为-2 C)输出为不确定值 D)输出值为2

9已定义xfloat型变量

x=213.82631;

printf("%-4.2f\n",x);

则以上语句

A)输出格式描述符的域宽不够,不能输出 B)输出为213.83

C)输出为213.82 D)输出为-213.82

10getchar函数可以从键盘读入一个( )

A) 整型变量表达式值 B) 实型变量值

C)字符串 D) 字符或字符型变量值

11已知int x,y,z;执行语句x=(y=(z=10)+5)-5;xyz的值是( )

A) x=10 B) x=10 C) x=10 D) x=10

y=15 y=10 y=10 y=5

z=10 z=10 z=15 z=10

12 a为整型变量,初值为12,执行完语句a+=a-=a*a,a的值是 ( )

A) 552 B) 144 C) 264 D) -264

13xint型变量,则执行以下语句段后,x的值为( )

A)10 B)20 C)40 D)30

x = 10 ;

x += x -= x - x;

14若有定义,int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )

A) 2.500000 B) 2.750000 C) 3.500000 D) 0.000000

15下列运算符中优先级最高的是 ( )

A) < B) + C) && D) !=

16设以下变量均为int 类型,则值不等于7的表达式是( )

A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1)

C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)

17以下符合C语言语法的,赋值表达式是( )

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

18以下使i的运算结果为4的表达式是( )

A) int i=0j=0

(i=3(j++)+i)

B) int i=1j=0

j=i=((i=3)*2)

C) int i=0j=1

(j= =1)(i=1)(i=3)

D) int i=1j=1

i+=j+=2

19Int n=3;则++n的结果是( )

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

20Int n=2;则有表达式++n+1= =4n的结果是( )

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

1下列能正确输入字符数组a 的语句是( )

Ascanf("%s",a); Bscanf("%s",&a);

Cscanf("%c",a); D)循环执行scanf("%c",&a[i]);

2在输入时,字符变量的值不用空格间隔,其输入函数可为( )

Ascanf("%c %c %c",&a,&b,&c); Bscanf("%c%c%c",&a,&b,&c);

Cscanf("%3c",&a,&b,&c); D)循环执行getchar()

1C的字符常量是用双引号括起来的一个字符。

2字符串常量是一对单引号括起来的字符序列。

3C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为-32768-+32767

4C语言中的实型变量分为两种类型,它们是floatdouble

5 若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为3.500000

(float)(a+b)/2+(int)x%(int)y

6输入语句的格式为:scanf("%d,%d,%d",&a;&b;&c); 是正确的。

7getchar()函数得到的字符可以不赋给任何变量,而作为表达式的一部分。

8scanf函数中无精度控制。

9a+==a=2; 是一个合法的赋值语句,赋值后a的值为:2

10TC中,printf()函数输出表列的求值顺序是从右到左。

11printf函数中,"%ld"表示按十进制正整数输出。

12printfC语言的输出语句。

13printf函数中,格式字符c的意义是:输出单个字符。

14printf函数中,不能使用转义字符。

15关系运算符的优先级别高于逻辑运算符

16C语言中没有逻辑型数据

1表达式8/4*(int)2.5/(int(1.25*(3.7+2.3))值的数据类型为( )。

2xijk都是int型变量,则计算下面表达式后,x的值为【 】。

x=(i=4,j=16,k=32)

3aint型变量,则下面表达式的值为【 】。

(a=4*5,a*2),a+6

4k int 整型变量且赋值7xdouble型变量且赋值8.4,赋值表达式x = k的运算结果是【 】。

5a=1, b=4, c=3, 则表达式 !(a的值是【 .

6使用getchar函数前必须包含头文件【 】。

7在变量说明中给同类变量赋初值时,各变量之间用【 】隔开。

8以下程序的运行结果是【 】。

main()

{int i=5; printf("%d,%d\n",++i,i++); }

9xyz均为int型变量,请写出描述"xy中有一个小于z"的表达式【

10a=1b=4c=3,则表达式 !(a的值是【

11int xyz;x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为【

12a=1b=2,则表达式a的值是【

C语言(分支和循环结构)一

1.以下程序输出结果是( )

main()

{ int m=5;

if(m++>5) printf("%d\n",m);

else printf("%d\n",m--);

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

2以下程序的输出结果为( )

# include

main ( )

{ int i=0, j=0, a=6;

if ((++i>0)&&(++j>0)) a++;

printf ("i=%d, j=%d, a=%d\n", i,j,a);}

A) i=0, j=0, a=6 B) i=1, j=1, a=7

C) i=1, j=0, a=7 D) i=0, j=1, a=7

3有如下程序

main()

{ int a=2,b=-1,c=2;

if(a

if(b<0) c=0;

else c++;

printf("%d\n",c);

}

该程序的输出结果是( )

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

4iint,且有程序如下,则输出结果是( )

i=111;

if(i%3==0)

printf("####");

printf("****");

A) #### B) **** C) ####**** D) 无输出结果

5若运行时x=12,则运行结果为( )

{int x, y;

scanf("%d", &x);

y=x>12 ? x+10:x-12;

printf("%d\n", y);}

A) 0 B) 22 C) 12 D) 10

6以下程序的输出结果是( )

main()

{ int i=0, j=0, k=6;

if ((++i>0)||(++j>0)) k++;

printf("%d, %d, %d\n", i, j, k);

}

A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 7

7若变量都已正确说明,则以下程序段输出为( )

int a=1,b=2,c=3;

if(a>b)

a=b;

b=c;

c=a;

printf("a=%d b=%d c=%d\n",a,b,c);

A)a=1 b=2 c=1 B)a=1 b=2 c=3

C)a=1 b=3 c=1 D)a=2 b=3 c=2

8a=1b=3c=5,d=4,执行完下面一段程序后x的值是( )

if(a

if(c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

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

9以下不正确的语句为( )

A)if(x>y);

B)if(x==y)&&(x!=0)x+=y;

C)if(x!=y)scanf("%d"&x);else scanf("%d"&y);

D)if(x

10有以下程序:

#include"stdio.h"

main( )

{char i;

for (; (i=getchar ())!='\n';)

{switch (i-'a')

{case 0: putchar (i);

case 1: putchar (i+1);break;

case 2: putchar (i+2);

case 3: break;

default: putchar (i);break;

}

}

printf ("\n");

}

输入下列数据后,程序的输出结果是( )

abcde

A) abcde B) abcee

C) abbde D) abccdd

11a bc1c2xy、均是整型变量,正确的switch语句是( )

A) switch(a+b); B) switch(a*a+b*b)

{ case 1:y=a+b; break; {case 3:

case 0:y=a-b; break; case 1:y=a+b;break;

} case 3:y=b-a,break;

}

C) switch a D) switch(a-b)

{ case 1 :y=a-b; break {

case 2: x=a*d; break case c1:case 4:x=a+b;break;

default:x=a+b; case c2:case 11:y=a-b;break;

} default:y=a*b;break;

}

12写出下面程序输出结果( )

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

switch(x)

{case 1:

switch(y)

{case 0: a++;

case 1: b++; }

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 D) a=2, b=2

13C语言的for语句中的表达式可以部分或全部省略,但两个( )不可省略。但当三个表达式

均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。

A) < B) ++ C) ; D) ,

14下面有关for循环的正确描述是( )

A) for循环只能用于循环次数已经确定的情况

B) for循环是先执行循环体语句,后判定表达式

C) for循环中,不能用break语句跳出循环体

D) for循环体语句中,可以包含多条语句,但要用花括号括起来

15以下程序段( )

x=-1;

do

{ x=x*x;}

while(!x)

A) 是死循环 B) 循环执行2 C) 循环执行一次 D) 有语法错误

16如下的数组中,数组array占用的内存空间是( )个字节。

char array[]={'c','h','i','n','a'};

A. 1 B. 5 C. 6 D. 不确定

17设有程序段

int k=10;

while(k=0) k=k-1;

则下面描述正确的是( )

A) while 循环执行10 B) 循环是无限循环

C) 循环体语句一次也不执行 D) 循环体语句执行一次

18下列程序段的运行结果是( )

int n=0;

while(n++<3);

printf("%d",n)

A. 2 B. 3 C. 4 D. 以上都不对

19设有程序段

t=0;

while(printf("*"));

{ t++;

if (t<3) break;

}

下面描述正确的是( )

A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与'0'等价

C) 其中循环控制表达式是不合法的 D) 以上说法都不对

20下面程序的运行结果是( )

#include

main()

{ int y=10;

do { y--;} while(--y);

printf("%d\n",y--);

}

A) -1 B) 1 C) 8 D) 0

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

main()

{ int i=5;

for ( ;i<=15; )

{ i++;

if (i%4==0) printf("%d ",i);

else continue;}

}

A. 8 12 16 B. 8 12 C. 12 16 D. 8

22以下不是无限循环的语句为( )

A) for(y=0,x=1;x>++y;x=i++) i=x;

B) for( ; ;x++=i);

C) while(1){x++;}

D) for(i=10; ; i--) sum+=i;

23有如下语句

int x=3;

do

{ printf("%d\n",x-=2);} while(!(--x));

则上面程序段( )

A. 输出的是1 B. 输出的是1-2

C. 输出的是30 D. 是死循环

24以下不是无限循环的是( )

A. for(y=0,x=1;x>++y;x=i++) i=x;

B. for( ; ;x++=i);

C. while(1) x++;

D. for(i=10; ;i--) s+=i;

25以下正确的描述是( )

A) continue语句的作用是结束整个循环的执行

B) 只能在循环体内和switch语句内使用break语句

C) 在循环体内使用break语句或continue语句的作用相同

D) 从多层循环嵌套中退出时,只能使用goto语句

26以下程序输出结果为( )

#include "stdio.h"

main()

{int i,b,k=0;

for(i=1;i<=5;i++)

{ b=i%2;

while (b-->=0) k++;}

printf("%d,%d\n",k,b);

}

A. 3,-1 B. 8,-1 C. 3,0 D. 8,-2

27以下程序段中循环体总的执行次数是( )

int i,j;

for(i=7;i;i--)

for(j=0;j<6;j++)

{......}

A) 42 B) 21 C) 13 D) 36

28以下不正确的描述是( )

A. break 语句不能用于循环语句和switch语句外的任何其他语句

B. switch语句中使用break语句或continue语句的作用相同

C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行

D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环

1else语句总是和靠它最近的if匹配。

2switch语句中一定有default分支

3case后只能跟常量,不能跟变量

4break语句的作用就是结束本层循环。

5do-while语句构成的循环不能用其它语句构成的循环来代替。

6do-while语句构成循环时,只要while后的表达式为0时就结束循环。

7for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。

8for循环中,如果表达式2为空,则该循环一定是死循环。

9while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。

10for(i=0,j=10;i<=j;i++,j--) k=i+j;执行完后,k的值为50

1ab均为int型变量,a=100,则以下的for循环是死循环.

for (b=100;a!=b;++a,b++) printf("----\n");

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

2以下程序的运行结果是【

main()

{int xyz

x=1;y=2;z=3

x=y--<=x||x+y!=z;

printf("%d%d",xy);

}

3以下程序的运行结果是【

main()

{int x,y,z;

x=1;y=1;z=0;

x=x||y&&z;

printf("%d%d",xx&&!y||z);

}

4以下程序的运行结果是【

main()

{int a,b,c;

int s,w=0,t;

a=-1;b=3;c=3;

if(c>0)s=a+b;

if(a<=0)

{if(b>0)

if(c<=0)w=a-b;

}

else if(c>0)w=a-b;

else t=c;

printf("%d,%d,%d\n",s,w,t);

}

5阅读下面程序:

main()

{ int s, t, a, b;

scanf("%d%d",&a, &b);

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("s=%d, t=%d", s, t);

}

6为了使输出结果t=4, 输入量ab应满足的条件是【

7下面程序的功能是在输入的一批整数中求出最大者,输入0结束循环。

#include main()

{ int a,max=0;

scanf("%d",&a)

while(【 】){ if (max

scanf("%d",&a);

}

printf("%d",max);

}

8执行下面的程序段后,k值是【 】。

k=1; n=263;

do { k*=n%10; n/=10; } while(n);

9等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。请填空。

#include

main()

{ int a,d,sum;

a=2;d=3;sum=0;

do

{ sum+=a;

a+=d;

if (【 】) printf("%d\n",sum);

} while(sum<200);

}

10鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。

for(x=1;x<=29;x++)

{ y=30-x;

if (【 】) printf("%d,%d\n",x,y);

}

11写出下面程序的运算结果【 】。

# include

main ( )

{ int a=14, b=63;

while (a!=b)

{while (a>b) a-=b;

while (a

}

printf ("%d\n",a);

}

12下列程序的输出为【 】。

#include

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("x=%d\n",x);

}

C语言基础一:

1.下列四组选项中,均不是C语言关健字的选项是( A )

A) define B) gect C) include D) while

IF char scanf go

type printf case pow

2.下面四个选项中,均是合法整型常量的选项是( A )

A)160 B)-0xcdf C) -01 D)-0x48a

-0xffff 01a 986,012 2e5

011 0xe 0668 0x

<<02>>B>>2

3.下面四个选项中,均是不合法的转义符的选项是( B )

A) '\"' B) '\1011' C) '\011' D) '\abc'

'\\' '\' '\f' '\101'

'xf' '\A' '\}' 'x1f'

4.下面不正确的字符串常量是( A )

A)'abc' B)"12'12" C)"0" D)" "

5.以下选项中不合法的用户标识符是( A )

A)abc.c B)file C)Main D)PRINT

6.C语言提供的合法关键字是( D )

A) swith

B) cher

C) Case

) Default

7.下列标识符组中,合法的用户标识符为 A

A)_0123ssiped

B)del-wordsigned

C)list*jer

D) keep%wind

8.C语言中,逻辑值""的表示是用( C )

A) true B) 整型值0 C)非另整型值 D) T

9若有以下定义

char s='\092';

则该语句( B

A)使s的值包含一个字符 B)定义不合法,s的值不确定

C)使s的值包含4个字符 D)使s的值包含3个字符

10C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。

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

11已知字母AASCII码为十进制数65,c2为字符型,则执行语句c2='A'+'6'-'3',c2中的值为( A )

A)D B)68 C)不确定的值 D)C

12逻辑运算符两侧运算对象的数据类型是 ( D )

A) 只是01 B) 只能是0或非0正数

C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据

13TURBO Cint类型变量所占字节数是( B )

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

14C语言中,char型数据在内存中的存储形式是( D )

A) 补码 B) 反码 C) 原码 D) ASCII

15若有以下定义,则能使值为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)

16判断char型变量c1是否为小写字母的正确表达式为 ( D )

A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z')

C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')

17 已知各变量的类型说明如下:

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)

tdouble类型,表达式t=1,t+5,t++的值是( D )

A)1 B)6.0 C)2.0 D)1.0

n=10i=4,则赋值运算 n%=i+1执行后,n的值是( A ).

A) 0

B) 3

C) 2

D) 1

Int n=3;则有表达式++nn的结果是( C )

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

用十进制形式输入有符号整数时,在scanf函数语句里格式字符为( AB )

Ad Bi Cn Du

scanf函数语句中可用的修饰符有( ABCD )

A* Bh Cl D)宽度

1数据是操作的对象,操作的结果会改变数据的状况。

2字符型变量用来存放字符常量,注意只能放2个字符。

3C语言中可以把一个字符串赋给一个字符变量。

4 C语言中的实型变量分为两种类型,它们是 float(实型)double(双精度实型)。

5C语言中,要求参加运算的数必须是整数的运算符是% .

6若有以下定义,则执行下面表达式y+=y-=m*=y后,y的值为-6int m=5,y=2;

7输入语句的格式为: scanf("%d%d%d",&a,&b,&c);是正确的。

8scanf("%d,%d",&a,&b)函数中,可以使用一个或多个空格作为两个输入数之间的间隔。

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

10在变量说明中给变量赋初值的方法是:int a=b=c=10;

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

13printf函数称为格式输入函数,它的函数原型在头文件"stdio.h"中。

14printf函数中,不同系统对输出表列的求值顺序不一定相同,TC是按从右到左进行的。

15int x=3; printf("%d",&x);则系统会报错,没有任何结果。

16逻辑运算符的优先级别高于算术运算符

1C语言中,表示逻辑""值用【 1 .

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

3假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是【 8 】。

4xint型变量,则执行下面表达式后,x的值为【 12 】。x=(a=4,6*2)

5k int整型变量且赋值7,请写出赋值表达式 k *= k + 3的运算结果【70 】。

6scanf函数是一个标准库函数,它的函数原型在头文件【 stdio.h 】中。

7getchar函数可以接收【 】个字符,输入数字也按字符处理。

8在语句中,给变量赋值时,赋值语句必须以【 分号 】结尾。

9a=3b=2c=1时,表达式f=a>b>c 的值是【 0

10xyz均为int型变量,请写出描述"x,y中有一个为负数"的表达式【 x<0&&y>=0||y<0&&x>=0

11a=6b=4c=3,则表达式 a&&b||b-c的值是【1

12x=3y=-4z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y=z)的值是【 1

基础二

1下面四个选项中,均是非法常量的选项是( A )

A)'as' B)'\\' C)-0x18 D)0xabc

-0fff '\01' 01177 '\0'

'\0a' 12,456 0xf "a"

2下面四个选项中,均是不合法整型常量的选项是( D )

A)-0f1 B)-0xcdf C) -018 D)-0x48eg

-0xffff 017 999 -068

0011 12,456 5e2 03f

3下面正确的字符常量是( C )

A) "c" B) '\\'' C) 'W' D) '

4以下每个选项都代表一个常量,其中正确的整型常量是( B )

A)1.2 B)-20 C)1,000 D)4 5 6

5以下选项中不合法的用户标识符是( C )

A)_123 B)Printf C)A$ D)Dim

6在下列C语言程序中,可以用做变量名的是( B )

A) 1

B) a1

C) int

D) *p

7C语言提供的合法数据关键字是( A )

A) float

B) Sagned

C) Integer

D) Char

8以下符号中不能用作用户标识符的符号是( B )

A)_256 B)void

C)scanf D)Struct

9kint型变量,则以下语句( C )。

k=8567;

printf("|%-06d|\n",k);

A)输出格式描述不合法 B)输出为|008567|

C)输出为|8567| D)输出为|-08567|

10sizeof(float)( B )

A)一个双精度表达式 B)一个整型表达式

C)一种函数调用 D)一个不合法的表达式

11C语言中, intcharshort三种类型数据在内存中所占用的字节数( D )

A)由用户自己定义 B)均为2个字节

C)是任意的 D)由所用机器的机器字长决定

12判断char型变量c1是否为小写字母的正确表达式为 ( D )

A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z')

C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')

13以下叙述中正确的是( B )

Aa是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号右边即可以是变量也可以是任意表达式

C.执行表达式a=b,在内存中ab存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3

14表达式18/4*sqrt (4.0)/8值的数据类型为( C )

A)int B)float C)double D)不确定

15下列运算符中,不属于关系运算符的是( C )

A) < B) > = C) ! D) ! =

16若希望当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是 ( C )

A) A%2= =1 B) !(A%2= =0) C) !(A%2) D) A%2

17已知各变量的类型说明如下:

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)

18 若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )

A)a=a+7; B)a=7+b+c,a++ C)int 12.3%4 D)a=a+7=a+b

19逗号表达式(a=3*5a*4)a+15的值为( C )

A)15 B)60 C)30 D)不确定

20Int n=3;则n++的结果是( B )

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

1用小数或指数形式输入实数时,在scanf函数语句里格式字符为( BCD )

Ai Bf Ce Dg

2可以使用( CD )输入字符型数据。

Aputchar(c); Bgetchar(c); Cgetchar(); Dscanf("%c",&c);

1C语言中数据有常量与变量之分。

2一般一个字符变量在内存中占一个字节。

3C语言规定,可以在定义变量时,同时使变量初始化。

4k1k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0; 。错

5如果i的原值为3,则:j = ++ ij的值为3

6凡是表达式都有一个值。

7输入语句的格式为:scanf("%d,%d,%d",a,b,c);是正确的。

8scanf("%d%*d%d",&a,&b)函数中,当输入为123时,将1赋给a,将2赋给b

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

10假定变量a,b,c在说明时已赋初值,则 if ((a=b;)>0) c=a;是正确的。

11

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

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

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

15int x=3; printf("%d",&x);则系统不会报错,会输出x的地址。

16int a=0b=1c=2;则表达式a||b+c&&b==c的值为0

1若有以下定义:char c='\010';则变量C中包含的字符个数为( 1 )。

2若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为【 1 】。(x+y)%2+(int)a/(int)b

3aint型变量、且a的初值为6,则执行下面表达式后,a的值为【 60 】。a+=a-=a*a

4xint型变量,则执行下面表达式后,x的值为【 4 】。x=a=4,6*2

5aint型变量,且a的初值为6,则计算表达式后a的值为【 60 】。a+=a-=a*a

6scanf函数的地址表列中给出各变量的地址,地址是由【 地址运算符"&" 】后跟变量名组成的。

7使用getchar函数接收字符,若输入多于一个字符时,只接收第【 】个字符。

8 C语言的格式输出函数是【 printf() 】。

9a=5b=4c=2时,表达式a>b!=c 的值是【 1

10已知A=7.5B=2C=3.6,表达式A>B&&C>A || AB的值是【 0

11a=3b=2c=1,则表达式a-b的值是【0

12int a=0b=4c=5;则表达式a||b+c&&b!=c的值为【 1

基础三

1下面四个选项中,均是不合法的用户标识符的选项是( C )

A) A B) float C) b-a D) _123

p_0 lao goto temp

do _A int INT

2下面四个选项中,均是不合法浮点数的选项是( B )

A) 160. B) 123 C) -018 D) -e3

0.12 2e4.2 123e4 .234

e3 .e5 0.0 1e3

3下面四个选项中,均是不正确的八进制或十六进制数的选项是( D )

A)016 B)0abc C)010 D)0a12

0x8f 017 -0x11 7ff

018 0xa 0x16 -123

4以下每个选项都代表一个常量,其中不正确的实型常量是( B )

A)2.607E-1 B)0.8103e 2 C)-77.77 D)45.6e-2

5可用作用户标识符的一组标识符是( B )

A)void B)a3_b3 C)For D)2a

define _xyz -abc DO

WORD IF Case sigeof

6下列标识符组中,合法的用户标识符为( B )

A) PAdp#d

B) Scanf a10

C) voidmax

D) A*temp

7 B )是C语言提供的合法的数据类型关键字。

A)Float B)signed C)integer D)Char

8以下选项中正确的常量是( B )

A) 012

B) -20

C) 1000

D) 4 5 6

9现已定义整型变量int i=1

执行循环语句while(i+ +<5);后,i的值为( B )

A)1 B)5 C)6 D)以上三个答案均不正确

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

A)int B)float C)double D)不确定

11若有说明语句:char c='\72';则变量c ( C )

A)包含1个字符 B)包含2个字符

C)包含3个字符 D)说明不合法,c的值不确定

12XYZ都是int整型变量,x=2, y=3, z=4,则下面的表达式中,值为0的表

达式是( A )

A) 'x'&&'z' B) (!y= =1)&&(!z= = 0)

C) (x

13以下叙述中正确的是( B )

A) C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示

B) 若在定义语句double a,b;之后,因为变量a,b已正确定义,因此立刻执行这样的表达式:a=b+9.381是正确的

C) C程序中,常量、变量、函数调用,都是表达式的一种

D) main函数中,变量一经定义,系统将自动赋予初始值

14设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为( C )

A) float B) char C) int D) double

15a=2,b=3,c=4,则表达式 a+b>c&&b= =c&&a||b+c&&b+c的值为( D )

A) 5 B) 8 C) 0 D) 1

16C语言中,逻辑值""的表示是用( D )

A) true B) 整型值0 C) 非另整型值 D) T

17以下不正确的叙述是( C )

A)C程序中,逗号运算的优先级最低

B)C程序中,APHaph是两个不同的变量

C)ab类型相同,在计算了赋值表达式a=bb中的值将放入a,b中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

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

A)i+f B)i*c C)c+f D)i+c+f

19设有逗号表达式(a=3*5a*4)a+15a的值为( B )

A)60 B)30 C)15 D)90

20Int n=3;则有表达式n++n的结果是( C )

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

1若在scanf函数语句中没有非格式字符作输入数据的间隔,则可用( ACD )

作为输入数据的间隔。

A)空格 B)逗号 CTAB D)回车

2使用scanf函数时,在源程序开头( ABC )

A)书写#include "stdio.h" B)书写#include

C)不必写#include D)书写#include "scanf.h"

1C语言规定标识符只能由字母、数字和小数点三种字符组成。

2 C语言使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。

3 C语言中定义了一个变量,代表内存中的一个地址。

4表达式3.5 + 1/2 + 56%10的计算结果是7.5

5 由赋值运算符将一个变量和一个表达式连接起来的式子称为"赋值表达式"

6C语言中,一个int型数据在内存中占2个字节,则int数据的取值范围为-32768-32769

7在使用scanf函数之前应包含头文件"math.h"

8scanf("%c%c",&c1,&c2)函数中,当输入为字符ab时,将a赋给c1,将b赋给c2

9 scanf函数中,如果格式控制串中有普通字符则输入时也要输入该普通字符。

10 假定变量x,y,z在说明时已赋初值,则 if ((x=y+5)>0) z=x; 是正确的

11printf函数中的格式字符,既可以是大写形式,也可以是小写形式。

12printf函数中,格式字符"%5c"可用来输出5个字符。

13printf函数中,格式字符s的意义是:输出单个字符。

14 printf函数中,输出项可以是任意合法的表达式。

15 算术运算符的优先级别高于关系运算符

16 int a=0b=1c=2xy;,则!(x=a)&&(y=b)&&c的值为1

1xn均是int型变量,且x的初值为12,n的初值为5,则执行下面表达式后,x的值为( 0 )。x%=(n%=2)

2假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为【 9 】。

3aint型变量,则执行下面表达式后,a的值为【2 】。a=25/3%3

4表达式1/3*3的计算结果是【 0 】。

5aint型变量,则计算表达式后a的值为【 2 】。a=25/3%3

6在输入字符数据时,若"格式控制字符串"中没有非格式字符,则认为所有输入的字符均为【 有效 】字符。

7scanf函数中,【 &a 】表示变量a的地址。

8以下程序的运行结果是【 computer, com 】。

main()

{ printf("%s,%5.3s","computer","computer"); }

9C语言中,表示逻辑""值用【 非零数

10a=6b=4c=2,则表达式!(a-b)+c-1&&b/3+c/2的值是【 1

11a=-1b=0c=1,则表达式a||b+c&&b==c的值是【 1

12int a=3b=4c=5xy;,则以下表达式的值为【 0

!(x=a)&&(y=b)&&c

基础四

1以下符号中不能用作用户标识符的符号是( )

A)_256 B)void

C)scanf D)Struct

2下面四个选项中,均是合法浮点数的选项是( )

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

3下面四个选项中,均是正确的八进制或十六进制数的选项是( )

A) -1a B)0abc C)0010 D)0a12

0x8f -017 0x11 -0x123

-011 0xc 0xf1 -0xa

4以下选项中,C语言合法的关键字是( )

A)swicth B)cher C)Case D)default

5C语言提供的合法的数据类型关键字是( )

A)Double B)short C)integer D)Char

6下列标识符组中,合法的用户标识符为( )

A)b-babc

B)CCPfloat

C)hiy

D) iswINT

7 属于合法的C 语言长整型常量的是( )

A)5876273 B)0L C)2E10 D)Long5876273int类型数据占两个字节,下8列程序的输出结果是( )。

main()

{

int k=-1;

printf("%d,%u\n",k,k);

}

A)-1-1 B)-132767 C)-132768 D)-165535

9设已定义xdouble类型变量

x=213.82631;

printf("%-6.2e\n",x);

则以上语句( )

A)输出格式描述符的域宽不够,不能输出 B)输出为21.38e+01

C)输出为2.14e+02 D)输出为-2.14e2

10执行x=5>1+2&&2||2*4<4 - !0,X的值为( )

A) -1 B) 0 C) +1 D) 5

11ch是字符变量,其值为A,且有下面的表达式ch=!(ch>='A'&&ch<='z')?ch:(ch+32)则表达式的值是 ( )

A) A B) a C) 2 D) z

12chchar型变量,其值为Z,且有下面的表达式,其值为( )

ch=(ch>='A'&&ch<='Z')?(ch+32):ch

A) A B) a C) Z D) z

13以下的变量定义中,合法的是( )

A)float 3_four = 3.4 ; B)int _abc_= 2 ;

C)double a = 1 + 4e2.0 D)short do =15;

14若有int k = 11;则表达式(k++ * 1/3)的值是( )

A)0 B)3 C)11 D)12

15逻辑运算符两侧运算对象的数据类型是 ( )

A) 只是01 B)只能是0或非0正数

C) 只能是整型或字符型数据 D) 可以是任何类型数据

16下列表达式的值,那一个等于0 ( )

A) 5%6 B) 5/6 C) 5/6.0 D) 5 - 6

17以下正确的叙述是( )

A)C程序中,每行只能写一条语句

B) a 是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C)C程序中,无论是整数还是实数,都能被准确无误地表示

D)C程序中,%是只能用于整数运算的运算符

18以下不正确的语句(设有int p,q)是( )

A)p*=3; B)p/=q; C)p+=3; D)p&&=q;

19如果a=1b=2c=3d=4,则条件表达式aaccd的值为( ).

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

20Int n=2;则++n+1= =4的结果是( )

A)true B)false C)1 D)0

1若输入4位整数到整型变量a中,可用( )

Ascanf("%4d"); Bscanf("%4d",&a);

Cscanf("%4d",a); Dscanf("%d",&a);

2对于scanf("a=%d",&a),a为整型变量,输入5,其输出可为( )

Aa=5 B5 Ca= 5 Da=a=5

1C语言中,要求对所有用到的变量先定义,然后才能使用。

2C语言中,字符数据与整型数据可以互相赋值。

3C实型变量分为单精度和双精度两种。

4a1a2定义成单精度实型变量,并赋初值1的定义语句是float a1=1; a2=1;

5C语言中逗号运算符又称为"顺序求值运算符"

6C提供的三种逻辑运算符是 !, &&, >= .

7在使用scanf函数之前可以不包含头文件"stdio.h"

8scanf("%4d",&i)函数中,输入123456789,只把123456赋予变量i

9a=b=c=d=10;是一个合法的赋值语句。

10C语言的格式输出函数是scanf().

12使用printf函数时,格式控制字符串和各输出项应一一对应。

13printf函数中,格式字符f的意义是:以小数形式输出单精度实数。

14printf函数中,转义字符\b的作用是退格。

15算术运算符的优先级别高于逻辑运算符

16int a=1b=0c=1;,则!(a+b)+c-0&&b+c/2的值为1

1经过下述赋值后,变量x的数据类型是( )。

int x=2;

double y;

y=(int)(float)x;

2已知字母aASCII码的十进制代码为97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【 】。

3sint型变量,且s=6,则下面表达式的值为【 】。

s%2+(s+1)%2

4表达式1.0/2*3的计算结果是【 】。

5a=3b=2c=1时,表达式f=a>b>c的值是【 .

6getchar函数是【 】函数。

7赋值语句是由赋值表达式加上【 】构成的。

8TC中,printf()函数输出表列的求值顺序是【 】。

9yint型变量,请写出描述"y是奇数"的表达式【

10a=2,b=4,则表达式!(x=a)|| (y=b)&&0的值是【

11条件"0x<-3"c语言表达式是【

12int a=3b=4c=5;,则以下表达式的值为【

!(a+b)+c-1&&b+c/2

基础五

1C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )

A)必须为大写

B)必须为下划线

C)必须为字母或下划线

D)可以是字母、数字和下划线中的任一种字符

2下面四个选项,均是合法转义字符的选项是( )

A) '\'' B) '\' C)'\018' D) '\\0''

'\\' '\017' '\f' '\101'

'\n' '\"' 'xab' 'x1f'

3下面四个选项中,均是正确的数值常量或字符常量的选项是( )

A)0.0 B)"a" C)'3' D)+001

0f 3.9E-2.5 011 0xabcd

8.9e 1e1 0xFF00 2e2

'&' '\"' 0a 50

4以下符号中不能用作用户标识符的是( )

A)IF B)Switch C)gets D)case

5C语言中,下列哪个字符为合法的字符常量( )

A)'\084

B)'\x43

C)'ab

D)'\0

6下列四个选项中,均是C语言关健字的选项是( )

A) auto B) switch C) signed D) if

enum typedef union struct

include continue scanf type

7不合法的常量是( )

A)'\2' B)'"' C)" D)"\483"

8a为整型变量,则以下语句( )。

a=-2L;

printf("%d\n",a);

A)赋值不合法 B)输出值为-2 C)输出为不确定值 D)输出值为2

9已定义xfloat型变量

x=213.82631;

printf("%-4.2f\n",x);

则以上语句

A)输出格式描述符的域宽不够,不能输出 B)输出为213.83

C)输出为213.82 D)输出为-213.82

10getchar函数可以从键盘读入一个( )

A) 整型变量表达式值 B) 实型变量值

C)字符串 D) 字符或字符型变量值

11已知int x,y,z;执行语句x=(y=(z=10)+5)-5;xyz的值是( )

A) x=10 B) x=10 C) x=10 D) x=10

y=15 y=10 y=10 y=5

z=10 z=10 z=15 z=10

12 a为整型变量,初值为12,执行完语句a+=a-=a*a,a的值是 ( )

A) 552 B) 144 C) 264 D) -264

13xint型变量,则执行以下语句段后,x的值为( )

A)10 B)20 C)40 D)30

x = 10 ;

x += x -= x - x;

14若有定义,int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )

A) 2.500000 B) 2.750000 C) 3.500000 D) 0.000000

15下列运算符中优先级最高的是 ( )

A) < B) + C) && D) !=

16设以下变量均为int 类型,则值不等于7的表达式是( )

A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1)

C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)

17以下符合C语言语法的,赋值表达式是( )

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

18以下使i的运算结果为4的表达式是( )

A) int i=0j=0

(i=3(j++)+i)

B) int i=1j=0

j=i=((i=3)*2)

C) int i=0j=1

(j= =1)(i=1)(i=3)

D) int i=1j=1

i+=j+=2

19Int n=3;则++n的结果是( )

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

20Int n=2;则有表达式++n+1= =4n的结果是( )

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

1下列能正确输入字符数组a 的语句是( )

Ascanf("%s",a); Bscanf("%s",&a);

Cscanf("%c",a); D)循环执行scanf("%c",&a[i]);

2在输入时,字符变量的值不用空格间隔,其输入函数可为( )

Ascanf("%c %c %c",&a,&b,&c); Bscanf("%c%c%c",&a,&b,&c);

Cscanf("%3c",&a,&b,&c); D)循环执行getchar()

1C的字符常量是用双引号括起来的一个字符。

2字符串常量是一对单引号括起来的字符序列。

3C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为-32768-+32767

4C语言中的实型变量分为两种类型,它们是floatdouble

5 若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为3.500000

(float)(a+b)/2+(int)x%(int)y

6输入语句的格式为:scanf("%d,%d,%d",&a;&b;&c); 是正确的。

7getchar()函数得到的字符可以不赋给任何变量,而作为表达式的一部分。

8scanf函数中无精度控制。

9a+==a=2; 是一个合法的赋值语句,赋值后a的值为:2

10TC中,printf()函数输出表列的求值顺序是从右到左。

11printf函数中,"%ld"表示按十进制正整数输出。

12printfC语言的输出语句。

13printf函数中,格式字符c的意义是:输出单个字符。

14printf函数中,不能使用转义字符。

15关系运算符的优先级别高于逻辑运算符

16C语言中没有逻辑型数据

1表达式8/4*(int)2.5/(int(1.25*(3.7+2.3))值的数据类型为( )。

2xijk都是int型变量,则计算下面表达式后,x的值为【 】。

x=(i=4,j=16,k=32)

3aint型变量,则下面表达式的值为【 】。

(a=4*5,a*2),a+6

4k int 整型变量且赋值7xdouble型变量且赋值8.4,赋值表达式x = k的运算结果是【 】。

5a=1, b=4, c=3, 则表达式 !(a的值是【 .

6使用getchar函数前必须包含头文件【 】。

7在变量说明中给同类变量赋初值时,各变量之间用【 】隔开。

8以下程序的运行结果是【 】。

main()

{int i=5; printf("%d,%d\n",++i,i++); }

9xyz均为int型变量,请写出描述"xy中有一个小于z"的表达式【

10a=1b=4c=3,则表达式 !(a的值是【

11int xyz;x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为【

12a=1b=2,则表达式a的值是【

C语言(分支和循环结构)一

1.以下程序输出结果是( )

main()

{ int m=5;

if(m++>5) printf("%d\n",m);

else printf("%d\n",m--);

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

2以下程序的输出结果为( )

# include

main ( )

{ int i=0, j=0, a=6;

if ((++i>0)&&(++j>0)) a++;

printf ("i=%d, j=%d, a=%d\n", i,j,a);}

A) i=0, j=0, a=6 B) i=1, j=1, a=7

C) i=1, j=0, a=7 D) i=0, j=1, a=7

3有如下程序

main()

{ int a=2,b=-1,c=2;

if(a

if(b<0) c=0;

else c++;

printf("%d\n",c);

}

该程序的输出结果是( )

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

4iint,且有程序如下,则输出结果是( )

i=111;

if(i%3==0)

printf("####");

printf("****");

A) #### B) **** C) ####**** D) 无输出结果

5若运行时x=12,则运行结果为( )

{int x, y;

scanf("%d", &x);

y=x>12 ? x+10:x-12;

printf("%d\n", y);}

A) 0 B) 22 C) 12 D) 10

6以下程序的输出结果是( )

main()

{ int i=0, j=0, k=6;

if ((++i>0)||(++j>0)) k++;

printf("%d, %d, %d\n", i, j, k);

}

A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 7

7若变量都已正确说明,则以下程序段输出为( )

int a=1,b=2,c=3;

if(a>b)

a=b;

b=c;

c=a;

printf("a=%d b=%d c=%d\n",a,b,c);

A)a=1 b=2 c=1 B)a=1 b=2 c=3

C)a=1 b=3 c=1 D)a=2 b=3 c=2

8a=1b=3c=5,d=4,执行完下面一段程序后x的值是( )

if(a

if(c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

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

9以下不正确的语句为( )

A)if(x>y);

B)if(x==y)&&(x!=0)x+=y;

C)if(x!=y)scanf("%d"&x);else scanf("%d"&y);

D)if(x

10有以下程序:

#include"stdio.h"

main( )

{char i;

for (; (i=getchar ())!='\n';)

{switch (i-'a')

{case 0: putchar (i);

case 1: putchar (i+1);break;

case 2: putchar (i+2);

case 3: break;

default: putchar (i);break;

}

}

printf ("\n");

}

输入下列数据后,程序的输出结果是( )

abcde

A) abcde B) abcee

C) abbde D) abccdd

11a bc1c2xy、均是整型变量,正确的switch语句是( )

A) switch(a+b); B) switch(a*a+b*b)

{ case 1:y=a+b; break; {case 3:

case 0:y=a-b; break; case 1:y=a+b;break;

} case 3:y=b-a,break;

}

C) switch a D) switch(a-b)

{ case 1 :y=a-b; break {

case 2: x=a*d; break case c1:case 4:x=a+b;break;

default:x=a+b; case c2:case 11:y=a-b;break;

} default:y=a*b;break;

}

12写出下面程序输出结果( )

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

switch(x)

{case 1:

switch(y)

{case 0: a++;

case 1: b++; }

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 D) a=2, b=2

13C语言的for语句中的表达式可以部分或全部省略,但两个( )不可省略。但当三个表达式

均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。

A) < B) ++ C) ; D) ,

14下面有关for循环的正确描述是( )

A) for循环只能用于循环次数已经确定的情况

B) for循环是先执行循环体语句,后判定表达式

C) for循环中,不能用break语句跳出循环体

D) for循环体语句中,可以包含多条语句,但要用花括号括起来

15以下程序段( )

x=-1;

do

{ x=x*x;}

while(!x)

A) 是死循环 B) 循环执行2 C) 循环执行一次 D) 有语法错误

16如下的数组中,数组array占用的内存空间是( )个字节。

char array[]={'c','h','i','n','a'};

A. 1 B. 5 C. 6 D. 不确定

17设有程序段

int k=10;

while(k=0) k=k-1;

则下面描述正确的是( )

A) while 循环执行10 B) 循环是无限循环

C) 循环体语句一次也不执行 D) 循环体语句执行一次

18下列程序段的运行结果是( )

int n=0;

while(n++<3);

printf("%d",n)

A. 2 B. 3 C. 4 D. 以上都不对

19设有程序段

t=0;

while(printf("*"));

{ t++;

if (t<3) break;

}

下面描述正确的是( )

A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与'0'等价

C) 其中循环控制表达式是不合法的 D) 以上说法都不对

20下面程序的运行结果是( )

#include

main()

{ int y=10;

do { y--;} while(--y);

printf("%d\n",y--);

}

A) -1 B) 1 C) 8 D) 0

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

main()

{ int i=5;

for ( ;i<=15; )

{ i++;

if (i%4==0) printf("%d ",i);

else continue;}

}

A. 8 12 16 B. 8 12 C. 12 16 D. 8

22以下不是无限循环的语句为( )

A) for(y=0,x=1;x>++y;x=i++) i=x;

B) for( ; ;x++=i);

C) while(1){x++;}

D) for(i=10; ; i--) sum+=i;

23有如下语句

int x=3;

do

{ printf("%d\n",x-=2);} while(!(--x));

则上面程序段( )

A. 输出的是1 B. 输出的是1-2

C. 输出的是30 D. 是死循环

24以下不是无限循环的是( )

A. for(y=0,x=1;x>++y;x=i++) i=x;

B. for( ; ;x++=i);

C. while(1) x++;

D. for(i=10; ;i--) s+=i;

25以下正确的描述是( )

A) continue语句的作用是结束整个循环的执行

B) 只能在循环体内和switch语句内使用break语句

C) 在循环体内使用break语句或continue语句的作用相同

D) 从多层循环嵌套中退出时,只能使用goto语句

26以下程序输出结果为( )

#include "stdio.h"

main()

{int i,b,k=0;

for(i=1;i<=5;i++)

{ b=i%2;

while (b-->=0) k++;}

printf("%d,%d\n",k,b);

}

A. 3,-1 B. 8,-1 C. 3,0 D. 8,-2

27以下程序段中循环体总的执行次数是( )

int i,j;

for(i=7;i;i--)

for(j=0;j<6;j++)

{......}

A) 42 B) 21 C) 13 D) 36

28以下不正确的描述是( )

A. break 语句不能用于循环语句和switch语句外的任何其他语句

B. switch语句中使用break语句或continue语句的作用相同

C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行

D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环

1else语句总是和靠它最近的if匹配。

2switch语句中一定有default分支

3case后只能跟常量,不能跟变量

4break语句的作用就是结束本层循环。

5do-while语句构成的循环不能用其它语句构成的循环来代替。

6do-while语句构成循环时,只要while后的表达式为0时就结束循环。

7for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。

8for循环中,如果表达式2为空,则该循环一定是死循环。

9while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。

10for(i=0,j=10;i<=j;i++,j--) k=i+j;执行完后,k的值为50

1ab均为int型变量,a=100,则以下的for循环是死循环.

for (b=100;a!=b;++a,b++) printf("----\n");

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

2以下程序的运行结果是【

main()

{int xyz

x=1;y=2;z=3

x=y--<=x||x+y!=z;

printf("%d%d",xy);

}

3以下程序的运行结果是【

main()

{int x,y,z;

x=1;y=1;z=0;

x=x||y&&z;

printf("%d%d",xx&&!y||z);

}

4以下程序的运行结果是【

main()

{int a,b,c;

int s,w=0,t;

a=-1;b=3;c=3;

if(c>0)s=a+b;

if(a<=0)

{if(b>0)

if(c<=0)w=a-b;

}

else if(c>0)w=a-b;

else t=c;

printf("%d,%d,%d\n",s,w,t);

}

5阅读下面程序:

main()

{ int s, t, a, b;

scanf("%d%d",&a, &b);

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("s=%d, t=%d", s, t);

}

6为了使输出结果t=4, 输入量ab应满足的条件是【

7下面程序的功能是在输入的一批整数中求出最大者,输入0结束循环。

#include main()

{ int a,max=0;

scanf("%d",&a)

while(【 】){ if (max

scanf("%d",&a);

}

printf("%d",max);

}

8执行下面的程序段后,k值是【 】。

k=1; n=263;

do { k*=n%10; n/=10; } while(n);

9等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。请填空。

#include

main()

{ int a,d,sum;

a=2;d=3;sum=0;

do

{ sum+=a;

a+=d;

if (【 】) printf("%d\n",sum);

} while(sum<200);

}

10鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。

for(x=1;x<=29;x++)

{ y=30-x;

if (【 】) printf("%d,%d\n",x,y);

}

11写出下面程序的运算结果【 】。

# include

main ( )

{ int a=14, b=63;

while (a!=b)

{while (a>b) a-=b;

while (a

}

printf ("%d\n",a);

}

12下列程序的输出为【 】。

#include

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("x=%d\n",x);

}

C语言(分支和循环结构)二

以下程序的输出结果是( )

main( )

{ int a=-1b=1k;

if((++a<0)&&!(b--<=0))

printf("%d %d\n"ab);

else

printf("%d %d\n"ba);

}

A) -1 1 B) 0 1 C) 1 0 D) 0 0

y=(x>0?1:x<0?-1:0);的功能相同的if语句是( )

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;

若执行以下程序时从键盘上输入9,则输出结果是( )

main()

{ int n;

scanf("%d",&n);

if(n++<10) printf("%d\n",n);

else printf("%d\n",n--);

}

A) 11 B) 10 C) 9 D) 8

iint,且有程序如下,则输出结果是( )

i=111;

if(i%3==0);

printf("####");

printf("****");

A) #### B) **** C) ####**** D) 无输出结果

请读下面程序:

main()

{int x=1, y=2, z=3;

x+=y+=z;

printf("%d\t", x

printf("%d\t", x

}

程序输出结果为( )

A) 5 4 B) 4 5 C) 5 6 D) 6 5

C语言的if语句中,用作判断的表达式为( )

A) 关系表达式 B) 逻辑表达式

C) 算术表达式 D) 任意表达式

若变量都已正确说明,则以下程序段输出为( )

int a=1,b=2,c,d;

if (a=b) c=d=a;

else c=b;d=b;

printf("%d,%d",c,d);

A)c=1,d=1 B)c=1,d=2

C)c=2,d=1 D)c=2,d=2

以下程序的输出结果是( )

main()

{int a=100x=10,y=20a1=5a2=0

if(x

if(y !=10)

if(!a1) a=1;

else

if(a2) a=10;

a=-1;

printf("%d\n",a)

A)1 B) 0 C) 10 D)-1

wxyzm均为int型变量,则执行下面语句后的m值是( )

w=1;x=2;y=3; z=4;

m=(wx;

m=(my;

m=(mz;

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

若有定义: float w; int a, b; 则合法的switch语句是( )

A) switch(w) B) switch(a);

{ case 1.0: printf("*\n"); { case 1 printf("*\n");

case 2.0: printf("**\n"); case 2 printf("**\n");

} }

C) switch(b) D) switch(a+b);

{ case 1: printf("*\n"); { case 1: printf("*\n");

default: printf("\n"); case 2: printf("**\n");

case 1+2: printf("**\n"); default: printf("\n");

} }

若输入B,以下程序的运行结果为 ( )

main()

{ char grade;

scanf("%c", &grade);

switch(grade)

{ case 'A': printf(">=85");

case 'B':

case 'C': printf(">=60");

case 'D': printf("<60");

default: printf("error.");}

}

A) >=85 B) >=60 C) >=60 D) error.

<60

error.

选择出i的正确结果( )

int i=10;

switch(i)

{

case 9: i++;

case 10: i+=1;

case 11:i++;

default: i+=1;

}

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

C语言的do_while循环中,循环由do开始,用while结束;而且在while表达式后面的( )

不能丢,它表示d0_while循环的结束。

A) \n B) ; C) % D) ,

C语言的do_while循环中,循环由do开始,用while结束;而且在while表达式后面的( )

不能丢,它表示d0_while循环的结束。

A) \n B) ; C) % D) ,

以下程序的输出结果是( )

#include

main()

{

int num=0;

while(num<=2)

{

num++;

printf("%d\n",num);

}

}

A) 1 B) 1 C) 1 D) 1

2 2 2

3 3

4

以下程序的输出为( )

# include

main( )

{ int y=10;

while (y--);

printf ("y=%d\n", y);}

A. y=0 B. 无限循环,无结果输出

C. y=1 D. y=-1

设有程序段

int x=0,s=0;

while(!x!=0) s+=++x;

printf("%d",s);

( )

A) 运行程序段后输出0 B) 运行程序段后输出1

C) 程序段中的控制表达式是非法的 D) 程序段执行无限次

下面程序段的运行结果是( )

a=1;b=2;c=2;

while(a

{t=a; b=a; a=t; c--; }

printf("%d ,%d,%d",a,b,c);

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

以下能正确计算1×2×3×4...×10的程序段是( )

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)

下面程序的运行结果是( )

#include

main()

{ int a=1,b=10;

do {b-=a; a++;} while(b--<0);

printf("a=%d,b+%d\n";a,b);

}

A) a=3,b=11 B) a=2,b=8 C) a=1,b=-1 D) a=4,b=9

i为整型变量,则以下循环执行的次数是( )

for(i=2;i==0;) printf("%d",i--);

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

下面程序段的运行结果是( )

for(y=1;y<10;) y=((x=3*y, x+1), x-1);

printf("x=%d,y=%d",x,y);

A) x=27,y=27 B) x=12,y=13 C) ) x=15,y=14 D) x=y=27

以下的for循环( )

for(x=0,y=0;(y!=123)&&(x<4);x++);

A. 执行3 B. 执行4

C. 循环次数不定 D. 是无限循环

下列程序段不是死循环的是( )

A) int i=100;

while(1) {i=i%100+1; if (i>100) break;}

B) for( ; ; );

C) int k=0;

do { ++k;} while(k>=0);

D) int s=36;

while(s) ;--s;

下面程序段( )

for(t=1;t<=100;t++)

{scanf("%d",&x);

if (x<0) continue;

printf("%3d",t);

}

A) x<0时整个循环结束

B) x>=0时什么也不输出

C) printf函数永远也不执行

D) 最多允许输出100个非负整数

以下为死循环的程序段是( )

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--);

若有如下程序段

int m=15;

while(!m==0)

{m+=m; printf("test..."); }

以下说法中正确的是( )

A) 循环体语句执行一次。 B) 循环执行无限次

C) 循环体语句一次也不执行 D) 循环执行两次

下面程序的运行结果是( ).

#include

main()

{ int i,b,k=0;

for(i=1;i<=5;i++)

{ b=i%2;

while(b-->=0) k++;

}

printf("%d,%d",k,b);

}

A) 3,-1 B) 8,-1 C) 3,0 D) 8,-2

语句if(a) x=1; if(a==0)x=1;等价

switch语句中的default分支一定放在最后

while语句do-while语句无论什么情况下,二者的执行结果都一样。

C语言的whiledo-whilefor几个循环语句,可以进行相互嵌套。

do-while语句构成的循环只能用break语句退出。

for( ; ; ) {循环体} 永远是一个死循环。

要使for(表达式1;表达式2;表达式3){循环体}不形成死循环,表达式2一定不能为空。

while循环和do-while循环的while()后一定要有一个分号。

C语言程序的三种基本结构是嵌套结构、递归结构、顺序结构。

C语言中whiledo-while语句的主要区别是do-while的循环体至少无条件执行一次。

语句 x=3; do {printf("%2d",x--);} while(!x); 的执行结果是3

以下循环for (i=0; i<10;printf("*"));

i++;

printf("\n");

是死循环。

以下程序的运行结果是【

main()

{int ab;

int i=5j=7k=0;

a=!k;

b=i!=j;

printf("a=%d,b=%d\n"ab);

}

以下程序的运行结果是【

main()

{if(2*1==2<2*2==4)

printf("##")

else

printf("**")

}

以下程序的运行结果是【

main()

{int a,bcd

a=c=0;

b=1

d=20

if(a)d=d-10;

else if(!b)

if(! c)d=15;

else d=25;

printf("%d"d)

}

若运行时输入:3 5 /<回车>,则以下程序的运行结果是【

main()

{float xy;

char o

double r;

scanf("%f%f%c"&x,&y,&o)

switch(o)

{case '+':r=x+y;break;

case '-':r=x-y;break;

case '*':r=x*y;break;

case '/':r=x/y;break;

}

printf("%f",r);

}

当运行下面程序时,从键盘键入right?<回车>,则下面程序的运行结果是【 】。

#include

main()

{ char c;

while((c=getchar())!='?') putchar(++c);

}

下面程序段的运行结果是【 】。

x=2;

do { printf("*"); x--; } while(!x==0)

当运行以下程序时,从键盘键入1 2 3 4 5 -1 <回车>,则下面程序的运行结果是【 】。

#include

main()

{ int k=0,n;

do { scanf("%d",&n); k+=n; } while(n!=-1);

printf("k=%d n=%d\n",k,n);

}

下面程序段的运行结果是【 】。

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

{ a++;

printf("%2d",a);

}

printf("%2d",i);

以下程序输出结果为【 】。

main()

{

int x=-5;

do

{ printf("%3d",x+=2);}

while (!(x++));

}

xy均为int型变量,则执行下的循环后,y值为【 】。

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

  { if(x>=10)break;

  if (x%2==1)

  { x+=5; continue;}

  x-=3;

  }

C语言(分支和循环结构)三

w = 1, x = 2, y=3, z=4, 则条件表达式 w>x? w : y的结果是( )

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

有如下程序

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("%f\n",y);

}

该程序的输出结果是( )

A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000

iint,且有程序如下,则输出结果是( )

i=322;

if(i%2==0) printf("####");

else printf("****");

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

有程序如下,若由键盘输入70,则输出结果是( )

{int n;

scanf("%d\n", &n);

if(n<=90) printf("A\n");

else if(n<=80) printf("B\n");

else if(n>=60) printf("C\n");

else printf("D\n");

}

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

选择运行结果为4的表达式( )

A) int i=0, j=0;

(i=3,(j++)+i);

B) int i=1, j=0;

j=i=((i=3)*2);

C) int i=0, j=1;

i=(j==1)?(i=1):(i=3);

D) int i=1,j=1;

i+=j=2;

以下程序段输出为( )

int a=1,b=2,c=3;

if(a>b)a=b,

b=c;

c=a;

printf("a=%d b=%d c=%d\n",a,b,c);

A)a=1 b=2 c=1 B)a=1 b=2 c=3

C)a=1 b=3 c=1 D)a=2 b=3 c=2

请问读以下程序:

main()

{int a=5,b=0,c=0;

if(a=b+c)printf("&&&");

else printf("###");

}

以上程序( )

A)有语法错不能通过编译 B)可以通过编译但不能连接

C)输出&&& D)###

以下程序的输出结果是( )

main()

{ int x=2,y=-1,z=2;

if(x

if(y<0) z=0;

else z+=1;

printf("%dn",z);

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

以下程序的运行结果是( )

main()

{int xyz

x=0;y=1;z=3

x=++y<=x||x+y!=z;

printf("%d%d",xy);

}

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

有如下程序

main()

{ int x=1,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 D) a=2,b=2

写出下面程序输出结果( )

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

switch(x)

{case 1:

switch(y)

{case 0: a++; break;

case 1: b++; break;}

case 2: a++; b++; break;}

printf("a=%d, b=%d\n", a, b) ;

}

A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=2

在下列选项中,没有构成死循环的程序段是( ).

A. int i=100

  while (1)

  {i=i%100+1;

  if(i>100)break;

  }

B. for(;;);

C. int k=1000;

  do{--k} while (k)

D. int s=36

  While(s>=0);++s;

语句while (!e);中的条件!e等价于( )

A) e==0; B) e!=1 C) e!=0 D) e

C语言中( )

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

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

C) do_while语句构成的循环,当while语句中的表达式为非0时结束循环

D) do_while语句构成的循环,当while语句中的表达式为0时结束循环

有如下程序

#include

main()

{

while(putchar(getchar())!='?');

}

当输入"china?"时,程序的执行结果是( )

A) china B) dijob C) dijob? D) china?

定义如下变量:

int n=25;

则下列循环的输出结果是( )

While(n>22)

{ n--;

printf("%d\n",n);

}

A) 22 B) 24 C) 23 D) 1

21 23 22 2

20 22 21 0

下列程序段的运行结果是( )

x=y=0;

while(x<10)

x++;y++;

printf("%d,%d\n",x,y);

A. 0,0 B. 10,1 C. 10,10 D. 1,10

下面程序段的运行结果是( )

int n=0;

while(n++<=2);

printf("%d",n);

A) 2 B) 3 C) 4 D) 有语法错

以下描述中正确的是( )

A) 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。

B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

C) do-while循环体中,一定要有能使while后面表达式的值变为“假”的操作

D) do-while循环中,根据情况可以省略while

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

main()

{

int x,i;

for (i=1;i<=100;i++)

{ x=i;

if (++x%2==0)

if (++x%3==0)

if (++x%7=0)

printf("%d ",x);

}

}

A. 39 81 B. 42 84 C. 26 68 D. 28 70

以下for循环的执行次数是( )

for(x=0,y=0;(y=123)&&(x<4);x++);

A) 是无限循环 B) 循环次数不定 C) 执行4 D) 执行3

下面程序段的运行结果是( )

for(x=3;x<6;x++)

printf((x%2)?("**%d"):("##%d\n"),x);

A) **3 B) ##3 C) ##3 D) **3##4

##4 **4 **4##5 **5

**5 ##5

下面有关for循环的正确描述是( )

A. for循环只能用于循环次数已经确定的情况。

B. for循环是先执行循环体语句,后判断表达式。

C. for循环中,不能用break语句跳出循环体。

D. for循环的循环体语句中,可以包含多条语句。

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

A) 3 B) 4 C) 5 D) 不定

下面程序段( )

x=3;

do { y=x--;

if (!y) {printf("*"); continue;}

printf("#");

} while (1<=x<=2);

A) 将输出## B) 将输出##* C) 是死循环 D) 含有不合法的控制表达式

以下描述正确的是( )

A) goto语句只能用于退出多层循环

B) switch语句中不能出现continue语句

C) 只能用continue语句来终止本次循环

D) 在循环中break语句不能独立出现

与下面呈现等价的是( )

for(n=100;n<=200;n++)

{ if (n%3==0) continue;

printf("%4d",n);

}

A) for(n=100;(n%3)&&n<200;n++) printf("%4d",n);

B) for(n=100;(n%3)||n<200;n++) printf("%4d",n);

C) for(n=100;n<=200;n++) if (n%3!=0) printf("%4d",n);

D) for(n=100;(n%3)&&n<200;n++)

{if (n%3) printf("%4d",n);

else continue;

break;

}

下列程序段的运行结果是( )

a=2;b=1;c=1;

while (a>b>c)

{ t=a;a=b;b=t;c--}

printf("%d,%d,%d\n",a,b,c);

A)1,2,0 B)2,1,0 C)1,2,1 D. 2,1,1

case后如果有多语句不需要用花括号括住。

case语句后一定要加break语句

continue语句的功能就是结束本层循环。

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

do-while语句构成循环时,只有在while后的表达式为非0时结束循环。

for(表达式1;表达式2;表达式3)中,表达式1和表达式3可以同时都为逗号表达式。

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

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

i为整型变量,则以下循环 i=0; while(i=0)i++;一次也不执行。

执行语句 for(i=1;++i<10; ),i的值是10.

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

以下程序段的输出结果是987

int n=10; while (n>7) { n--;printf("%d ",n);}

以下程序的运行结果是【

main()

{int a,b;

int i=5j=7k=0;

a=k&&j;

b=k||j;

printf("a=%d b=%d\n",ab);

}

阅读下列程序

main()

{int thm

scanf("%d"&t);

h=(t100)%12

if(h==0)h=12

printf("%d:"h)

m=t%100;

if(m<10)printf("0")

printf("%d"m)

if(t<1200 ||t==2400)

printf("AM");

else printf("PM");

}

若运行时输入:1605<回车>时,程序的运行结果是【

以下程序的运行结果是【

main()

{int a=2b=3c;

c=a;

if(a>b)c=1

else if(a==b)c=0;

printf("%d\n"c);

}

以下程序段的运行结果是【

int x=1,y=0;

switch(x)

{case 1:

switch (y)

{ case 0:printf("*1*");break;

case 1:printf("*2*");break;}

case 2:printf("*3*");break;

}

下面程序的运行结果是【 】。

#include

main()

{ int a,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7) { n=n*a; s=s+n; ++count; }

printf("%d",s);

}

下面程序段的运行结果是【 】。

i=1; a=0; s=1;

do { a=a+s*i; s=-s; i++; } while(i<=10);

printf("a=%d",a);

下面程序段是找出整数的所有因子,请填空。

scanf("%d",&x);

i=1;

for( ; 【 】; )

{ if (x%i==0) printf("%3d",i);}

i++;

}

以下程序输出结果为【 】。

#include"stdio.h"

main()

{

int i;

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

printf("%d",i);

}

以下程序段中,不是无限循环的是【 】。

A. i=100 B. for(;;)

while (1)

{ i=i%100; i++;

if (i>100) break;

}

C. k=10; D. s=100

do while (s) s-=3;

{ k++; k++;}

while (k>0);

有以下程序

  main()

  { int i, j;

  for(j=10;j<11;j++)

  { for(i=9;i==j-1;i++)printf("%d",j);

  }

  }

输出结果是【 】。

C语言(数组)一

设有程序:

main()

{ int i,a[11]

printf("给数组赋值:\n")

for (i=0i<=10i++)

scanf("%d"( ))

... ...

printf("输出数组:\n")

for(i=0i<=10i++

printf("%d,",( ))

}

则在程序中的两个园括号中分别应填入:

A) &a[i]&a[i]

B) a[i]&a[i]

C) &a[i]a[i]

D) a[i]a[i]

设已定义:int a[15]; 则数组a占用的内存单元数是( ).

A) 15 B) 16 C) 30 D) 32

阅读程序:

main()

{ int a[2]={0},i,j,k=2;

for(i=0;i

for(j=0;j

printf("%d\n",a[k]);

}

以上程序的输出结果是( ).

A) 1 B) 3 C) 2 D) 不确定的值

阅读程序:

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\n",x);

}

以上程序的输出结果是( ).

A) 720 B) 6 C)24 D) 120

以下定义语句中,错误的是( ).

A) int a[ ] = {6,7,8};

B) int n=5, a[n];

C) char a[ ]= "string";

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

以下描述中正确的是( ).

A) 数组名后面的常量表达式用一对圆括弧括起来

B) 数组下标从1开始  

C) 数组下标的数据类型可以是整型或实型

D) 数组名的规定与变量名相同

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

A) scanf("%c",a[0]);

B) scanf("%s",&a);

C) printf("%c",a[3]);

D) printf("%s",a);

若定义数组int a[10] ,其最后一个数组元素为( ).

A) a[0]

B) a[1]

C) a[9]

D) a[10]

若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( )

A) a[8] 的值为0

B) a[1] 的值为1

C) a[3] 的值为4

D) a[9] 的值为0

指出以下错误语句( ).

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};

请读程序:

main()

{int n[2],i,j,k;

for(i=0;i<2;i++) n[i]=0;

k=2;

for(i=0;i

for(j=0;j

printf("%d\n",n[k]);

}

上面程序的输出结果是( ).

A)不确定的值 B)3 C)2 D)1

若有以下的定义和语句:

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]

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

A) a[3]=93;

B) scanf("%c",a[3]);

C) a[3]=getchar();

D) a[3]='a'+3;

以下数组定义中错误的是( ).

A) #define N 30

int a[N+30];

B) #define N 30

int a[N];

C) int a[30];

D) int a[N];

在定义一个一维数组时,不能用来表示数组长度的是( ).

A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量

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

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

设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( ).

A) 6 B) 5 C) 7 D) 1

设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; a[1][2]的初值为( ).

A) 2 B) 4 C) 6 D) 8

设有:int a[4][5]; 则数组a占用的内存字节数是( ).

A) 12 B) 24 C) 40 D) 20

以下数组定义中,不正确的是( ).

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}};

定义数组:int x[2][3]; 则数组x 的维数是( ).

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

若定义数组并初始化int b[2][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

若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++) for(j=0;j<3;j++)

printf("%d",a[i][j]);语句的结果是哪一个( )?

A) 1,2,3,4,5,6

B) 1 2 3 4 5 6

C) 123456

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

A) a数组中有6个元素

B) a[2][3]a数组的最后一个元素的引用

C) a数组中每个元素都为整数

D) a数组是整型数组

定义如下变量和数组:

int i;

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

则下面语句的输出结果是( ).

for(i=0;i<3;i++) printf("%d",x[i][2-i]);

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

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

A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]

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

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("%d",s);

}

A) 18 B) 19 C) 20 D) 21

若已有char b[10][50];则该二维字符数组在内存所占字节数为( ).

A) 10 B)50 C)60 D)500

A)int a[2][3]; B)int b[][3]={0,1,2,3};

C)int c[5][5]={0}; D)int d[3][ ]={{1,2},{1,2,3},{1,2,3,4}};

设有:char a[10]; 下列语句那个是正确的( )

A) scanf("%s",a[0]);

B) scanf("%s",&a);

C) printf("%s",a[0])

D) printf("%s",a)

阅读程序:

main()

{ char a[10];

int i;

for(i=1;i<=5;i++)

scanf("%c",&a[i]);

printf("%c",a[0]);

}

设从键盘输入字符串:abcde,则程序的输出结果是( ).

A) a B)空格 C)不确定 D)0

设有:char a[4][5]; 则数组a占用的内存字节数是( ).

A) 12 B) 24 C) 40 D) 20

合法的数组定义是( ).

A) int a[ ] = "string";

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

C) char a= "string";

D) char a[ ]={'0','1','2','3'};

设有数组定义:char string[ ]="China";则数组string所占的空间为( ).

A) 5个字节  

B) 6个字节  

C) 7个字节  

D) 10个字节

定义字符数组cchar c[ ]={"c language"};数组c在内存中所占字节数是( ).

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

指出以下错误语句( ).

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]= {"1","2"};

D) char a[2]= {'a,'b};

若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( ).

A) 10

B) 5

C) 6

D) 7

若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]( ).

A) 'L'

B) 'E'

C) 'H'

D) 'O'

若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( )

Ab[8]的值为0

Bb[1]的值为1

Cb[3]的值为整数

Db[10]不是b数组中的元素

若定义数组int a[10];指出下列错误语句:

A) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];

B) a数组是整型数组,其元素自动初始化为0;

C) a数组最后一个元素的引用方法是a[10];

D) a数组第一个元素的引用方法是a[1];

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

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

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

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

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

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

数组元素下标的下界是固定的,总是为0

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

若有数组定义为:int a[100];则该数组的下界为0,上界为100。数组元素下标范围是: 下界 <= 下标 < 上界。

设已定义:double a[5][5]; 则数组a在内存中的存放顺序是:a[0][0],a[0][1],a[0][2], ... ,a[4][3],a[4][4]

C语言(数组)二

设已定义:float a[15]; 则数组a可引用的元素有( ).

A) a[1]~a[15]

B) a[0]~a[15]

C) a[1]~a[14]

D) a[0]~a[14]

以下程序段给数组所有元素输入数据:

main()

{ int a[10],i=0;

while(i<10) scanf("%d",( ));

... ...

}

应在园括号中填入的是:

A) a+(i++)

B) &a[i+1]

C) a+i

D) &a[++i]

若有以下定义:double w[100]; 则数组w的元素下标范围是( ).

A) [0,100]

B) [0,99]

C) [1,100]

D) [1,99]

若有以下说明: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]

已知int类型变量在内存中占用2个字节,定义数组int b[8]={2,3,4};则数组b在内存中所占字节数为( ).

A) 3  B) 6  C) 8  D) 16

用数组名作为函数调用时的实参,实际上传送给形参的是( ).

A) 数组首地址 B) 数组的第一个元素值

C) 数组中全部元素的值 D) 数组元素的个数

若定义数组int a[10] ,其数组元素的下标下限为( ).

A) 1

B) 0

C) 9

D) 10

若定义数组int a[10],以下语句哪一个不成立( )

A) a 数组在内存中占有一连续的存储区

B) a代表a数组在内存中占有的存储区的首地址

C) *(a+1)a[1]代表的数组元素相同

D) a是一个变量

若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个成立( )

A) 若引用a[10],编译时报错

B) 若引用a[10],连接时报错

C) 若引用a[10],运行时出错

D) 若引用a[10],系统不报错

若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( )

A) a[10]a数组的最后一个元素的引用

B) a数组中有10个元素

C) a数组中每个元素都为整数

D) a数组是整型数组

执行下面的程序段后,变量k中的值为( ).

int k=3,s[2];

s[0]=k;k=s[1]*10;

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

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

A)scanf("%d%d%d%d",a[0],a[1],a[2],a[3]};

B)scanf("%s",a);

C)a={10,20,30,40};

D)a[0]=10;a[1]=a[0]+10;a[2]=a[1]+10;a[3]=a[2]+10;

下列数组定义正确的是( ).

A) int a[];

B) char a[100]={68,69,70};

C) int n=100,a[n];

D) char n=4,a[n]={"abc"};

一维数组初始化时,若对部分数组元素赋初值,则下面正确的说法是( ).

A)可以只对数组的前几个元素赋初值

B)可以只对数组的中间几个元素赋初值

C)可以只对数组的后几个元素赋初值

D)以上说法全部正确

决定数组所占内存单元多少的是( ).

A)数组的长度 B)数组的类型 C)数组在初始化时被赋值的元素的个数 D) 数组元素的个数及其类型

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

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]);

}

A)258 B)741 C)852 D)369

设有程序段:

#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]

设有:int x[2][4]={1,2,3,4,5,6,7,8};printf("%d",x[2][4]); 则输出结果是( ).

A) 8 B) 1 C) 随机数 D) 语法检查出错

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

main()

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

for(i=0;i<3;i++) printf("%d,",a[i][2-i] );

}

A) 1,5,9  B) 1,4,7  C) 3,5,7  D) 3,6,9

以下数组定义中正确的是( ).

A) float f[3,4]; B) int a[ ][4];

C) char c(3); D) double d[3+2][4];

指出以下错误语句( ).

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}};

若定义数组并初始化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

若定义数组并初始化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

若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}},b[2][3]={ 1,2,3,4,5,6};

以下语句哪一个不成立( )

A) ab数组中各有6个元素

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

C) a数组与b数组中每个对应元素相等

D) ab数组都是整型数组

合法的数组初始化是( ).

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};

在对二维数组初始化时,错误的说法是( ).

A)可对二维数组的全部元素赋初值

B)可对二维数组的部分元素赋初值

C)给二维数组的全部元素赋初值时,可以不指定第一维的长度但第二维的长度不能省略

D)给二维数组的全部元素赋初值时,可以不指定第二维的长度但第一维的长度不能省略

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

main()

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

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);

}

A)0650 B) 1470 C) 5430 D)输出值不确定

在内存中,二维数组存放的顺序是( ).

A)按行顺序 B)按列顺序 C)按元素的大小 D)按元素被赋值的先后顺序

设定义了:char a[10]={'1','2','3','4','5'}; a[5]的正确初值是( ).

A) '5' B) 5 C) '\0' D) ' '

设有:char a[10]; 下列语句那个是正确的( )

A) scanf("%c",a[0]);

B) scanf("%c",a);

C) printf("%c",a)

D) printf("%c",a[0])

设有定义:char a[][5]={{'*'},{'*',' ','*'},{'*',' ',' ',' ','*'},{'*',' ','*'},{'*'}};

a[0][0]a[4][4]的初值分别为( ).

A) *,*

B) 空格,空格

C) 空白符,*

D) *,空白符

设有:char a[]={"I am a student."}; a在内存中占用的字节数是( ).

A) 15 B) 12 C) 16 D) 32

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

A) 数组u和数组v等价       

B) 数组u和数组v的长度相等

C) 数组u的长度大于数组v的长度

D) 数组u的长度小于数组v的长度

若有以下定义和语句,则输出结果是( ).

char string[ ]="Sunny";

printf("%.3s",string);

A) Su  B) Sun  C) Sunn  D) Sunny

C语言中实现字符串输入的库函数是( ).

A) gets(字符数组) B) puts(字符数组)

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

若定义数组并初始化char a[]={"hello"},该数组的元素个数是( ).

A) 不知道

B) 5

C) 6

D) 7

若定义数组并初始化char a[10]={"hello"},该数组的元素中’\0’的个数是( ).

A) 10

B) 5

C) 6

若定义数组并初始化char a[10]={"hello"},该数组的元素中 a[5]( ).

A) 'h'

B) 'o'

C) '\0'

D) 'l'

若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'},指出以下错误语句( )

A)可以用scanf("%s",a[0]);语句对a[0]元素重新赋值。

B)可以用scanf("%s",&a);语句对a数组重新赋值。

C)可以用scanf("%c",a[3]);语句对a[3]元素重新赋值。

D)可以用scanf("%s",a);语句对a数组重新赋值。

数组初始化时,下面说法错误的是( ).

A)当对一维数组的全部元素赋初值时,可以不指定长度

B)当对二维数组的全部元素赋初值时,可以省略维数

C)用字符串对一维字符数组赋值时,可以不指定长度

D)用字符串对二维字符数组赋值时,可以省略维数

可以用如下的语句定义数组aint n10,a[n];

设已定义:int a[15]={1,2,3,4,5}; 则语句 printf("%d",a[5]); 的输出结果是5

数组中的所有元素必须属于同一种数据类型。

数组名表示的是该数组元素在内存中的首地址。

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

定义数组:int a[10]; 则数组a的最后一个元素是a[9],数组 a共有9个元素。

C语言中数组元素用数组名后带圆括弧的下标表示。

C语言中数组所占存储单元的多少仅由数组的长度决定。

定义一维数组int a[10];则语句for(i=0;i<10;i++) scanf("%d",a[i]);是正确的。

给二维数组的全部元素赋初值,可以用如下的语句实现:int a[][]={{1,2,3},{4,5,6},{7,8,9}};

C语言(函数,变量作用范围)一

C语言程序的基本单位是( ).

A) 程序 B) 语句 C) 字符 D) 函数

下列函数定义不正确的是 ( )

Aint max() Bint max(x,y)

{ int x,y,z; int x,y;

z=x>y?x:y; {int z;

} z=x>y?x:y;

C) int max(x,y) return(z);

{ int x,y,z; }

z=x>y?x:y; D) int max()

return (z); { }

}

以下叙述中正确的是( ).

A)C语言中总从第一个开始定义的函数开始执行

B)C语言中所有调用别的函数必须在main函数中定义

C)C语言总是从main函数开始执行

D)C语言中,main函数必须放在最前面

以下说法中正确的是( ).

A) C语言程序是由一个或多个函数组成,其中至少有一个主函数

B)一个C语言文件至少应有一个主函数

C)所有C语言函数都有返回值

DC程序中,main函数必须放在其他函数之后

以下正确的函数定义是( ).

A) double fun(int x,int y);

{int z;

z=x+y; return z}

B) fun(int x,y)

{int z; return z}

C) double fun(int x,int y)

{double z;

z=x+y; return z}

D) double fun( x, y)

int x,y;

{double z; z=x+y; return z}

以下正确的函数声明形式是( ).

A float fun(int x,int y)

B) float fun(int x, y)

C) float fun(int x,int y);

D) float fun(int ,int )

C语言中,函数返回值的类型是由( )决定的。

A)调用函数时临时

Breturn语句中的表达式类型

C)调用该函数的主调函数类型

D)定义函数时,所指定的函数类型

关于return语句,正确的说法是 ( )

A)可以在同一个函数中出现多次

B)必须在每个函数中出现

C)在主函数和其它函数中均可出现

D)只能在除主函数之外的函数中出现一次

C语言中形式参数的作用范围是( ).

A) 其所在的函数内 B) 整个程序文件

以下正确的函数定义形式是( ).

A) double fun(int x,int y)

B) double fun(int x,int y);

C) double fun(int x, y)

D) double fun(int x, y);

以下函数f返回值是( ).

f(int x){return x;}

A)void类型 B) int类型 C) float类型 D) 无法确定返回值类型

以下说法中正确的是( ).

A)定义函数时,形参的类型说明可以放在函数体内

Breturn后面的值不能为表达式

C)如果函数值的类型与返回值的类型不一致,以函数值类型为准

D)如果形参与实参的类型不一致,以实参为准

若用数组作为函数调用的实参,传递给形参的是( ).

A)数组的首地址

B)数组第一个元素的值

C)数组中全部元素的值

D)数组元素的个数

C语言中,调用一个函数时,当形参是变量名时,实参和形参之间的数据传递是( )

A)单纯值传递

B)单纯地址传递

C)值传递和地址传递都有可能

D)由实参传给形参,然后由形参传回给实参,既是双向传递

下列函数调用中,不正确的是 ( )

A)max(a,b); B)max(3,a+b);

C)max(3,5); D)int max(a,b);

若输入ab,程序运行结果为 ( )

main()

{ char a[2];

scanf("%s",a);

printf("%c,%c",a[1],a[2]);

}

Aa,b Ba,

Cb, D)程序出错

在下面对C语言函数的有关描述中,正确的是( ).

A)C语言中调用函数时,若函数参数为简单变量,则只能将实参的值传给形参,形参的值不能传给实参

B)函数必须有返回值,否则不能使用函数

C)C程序中有调用关系的所有函数必须放在同一源程序文件中

C语言中以下正确的说法是( ).

A) 当函数的参数为简单变量时,实参和与其对应的形参各占用独立的存储单元;

B) 当函数的参数为简单变量时,实参和与其对应的形参共占用一个存储单元;

C) 形参是虚拟的,不占用存储单元。

若用数组名作为函数调用的实参,传递给形参的是( ).

A)数组的首地址

B)数组第一个元素的值

C)数组全部元素的值

D)数组元素的个数

程序

f(int x)

{

return x;

}

main()

{

float a=3.14;

a=f(a);

printf("%.2f\n",a);}

执行结果为( ).

A) 3 B) 3.14 C) 3.00 D) 0

执行下列程序后, 变量a的值应为( ).

f1(float x)

{return x+1.3;}

main()

{float a;

a=f1(2.4);

}

A) 3.7 B) 3 C) 4 D) 不确定

下列程序的执行结果为( ).

float f1(float x)

{

int k=2;

k=k*x;

return k;

}

main()

{

float b=4.3;

printf("%.1f",f1(b));

}

A) 8.6 B) 9.0 C) 8.0 D) 8

若有以下函数定义,则在主函数中正确的调用语句是

int fun(int array[3][5])

{ ………..}

main()

{ int a[3][5], b;

……..}

Ab=fun(a[3][5]);

Bb=fun(int a[3][5]);

C) b=fun(a);

E) b=fun(&a);

函数f的定义为:

f(int x)

{return x*x;}

以下程序是嵌套调用的有( ).

A)a=f(2)*f(2);

B)a=sqrt(f2(4)*f(4));

C)以上均不是

D)以上均是

对下列递归函数:

int f(int n)

{

return (n==0)? 1: f(n-1)+2;

}

函数调用f(3)的返回值是( ).

A) 5 B) 6 C) 7 D) 以上均不是

在一个源文件中定义的全局变量的作用域为( )

A)本文件的全部范围。 B)本程序的全部范围。

C)本函数的全部范围。 D)从定义该变量的位置开始至本文件结束。

C语言中全局变量的作用范围是( ).

A) 其所在的函数内 B) 整个程序文件

如果在一个函数中的复合语句中定义了一个变量,则该变量的作用范围为( ).

A)在该函数中有效

B)在该复合语句中有效

一个函数一般由函数说明部分和函数体组成。

执行下列语句后,程序的运行结果为( ).

int a=10;

f( )

{a=12;

}

main()

{f();

printf("%d",a);

}

A) 10 B) 12 C) 0 D) 不确定

以下说法中正确的是( ).

A)主函数中定义的变量是全局变量,其作用范围仅限于函数内部

B)主函数中定义的变量是全局变量,其作用范围从定义之处到文件结束。

C)主函数中定义的变量是局部变量,其作用范围仅限于函数内部

D)主函数中定义的变量是局部变量,其作用范围从定义之处到文件结束。

调用C语言函数时,实参可以是:

A)常量

B)变量

C)表达式

Dvoid

下面程序段是否正确。

main()

{ void fun()

{ ...

}

}

形参应与其对应的实参类型一致。

C语言中,void类型的函数可以不用在主调函数中声明。

用数组名作函数形参和实参时,应在主调函数和被调函数中分别定义数组。

以数组名作为函数参数时,实参数组必须定义为具有确定长度的数组,而形参数组可以不定义长度。

Return语句后面的值不能为表达式。

对于不要求带返回值的函数,函数类型必须是void类型。

数组元素做函数的实际参数,传递的是整个数组。

形参不是局部变量。

在一个函数定义中只能包含一个return语句。

主函数和其它函数可以互相调用。

以下程序运行结果为1357

main()

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

printf("%d,%d,%d,%d\n",a);

}

函数调用可以作为一个函数的实参。

函数的嵌套调用就是在调用一个函数的过程中,又调用另一个函数。

数组名作为函数参数时,传递的是数组第一个元素的值。

C语言中允许函数的递归调用。

下面程序段能否正确执行。

main()

{int m=n;

...

}

int n;

void func()

{int s=3;

n=s;

...

}

不同函数中定义的变量,其作用范围都限制在各自的函数内,在内存中占据的存储单元也各不相同。

C语言中,如果不对函数作类型说明,则函数的隐含类型为【 】。

C语言(函数,变量作用范围)二

1 C语言程序由函数组成,以下说法正确的是( A ).

A)主函数可以在其它函数之前,函数内不可以嵌套定义函数

B)主函数可以在其它函数之前,函数内可以嵌套定义函数

C)主函数必须在其它函数之前,函数内不可以嵌套定义函数

D)主函数必须在其它函数之前,函数内可以嵌套定义函数

2 以下说法中不正确的是 ( A )

A) 主函数main中定义的变量在整个文件或程序中有效

B) 不同的函数中可以使用相同名字的变量

C) 形式参数是局部变量

D) 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

3 下面函数

f(double x)

{printf(%6d\n,x);}

的类型为( C ).

A) 实型 B)void 类型 Cint 类型 D) A)B)C)均不正确

4 以下说法中正确的是( C ).

AC语言程序总是从第一个定义的函数开始执行

B)在C语言程序中,要调用的函数必须在main函数中定义

CC语言程序总是从main函数开始执行

D C语言程序中,main函数必须放在程序的开始部分

5 以下正确的函数定义是( C ).

A) double fun(int x,int y);

{int z;

z=x+y; return z}

B) fun(int x,y)

{int z; return z}

C) double fun(int x,int y)

{double z;

z=x+y; return z}

D) double fun( x, y)

{int x,y;

double z;

z=x+y; return z}

6 定义为void类型的函数,其含义是( A ).

A)调用函数后,被调用的函数没有返回值

B)调用函数后,被调用的函数不返回

C)调用函数后,被调用的函数的返回值为任意的类型

D)以上三种说法都是错误的

7 设有如下定义:

int x=10,y=3,z ;

则语句

printf("%d\n",z=(x%y,x/y));

的输出结果是( D ).

A) 1 B0 C) 4 D3

8 C语言的函数中,( C )

A)必须有形参 B)形参必须是变量名

C)可以有也可以没有形参 D)数组名不能作形参

9 函数调用语句f((x,y),(a,b,c),(1,2,3,4));中,所含的实参个数是( C ).

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

10 如果函数的首部省略了函数返回值的类型名,则函数被默认为( C )

A)void类型 B)空类型

C)int类型 D)char类型

11 用数组名做函数的参数,实际上传递给形参的是( A ).

A) 数组元素的首地址 B) 数组的第一个元素的值 C) 每一个数组元素 D)整个数组的个数

12 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B ).

Afloat

Bint

Clong int

Dvoid

13 已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式是( B ).

int a[3][4];

f(a);

Af(int array[ ][6])

Bf(int array[ 3][ ])

Cf(int array[ ][4])

Df(int array[ 2][5])

14 下列说法中正确的是( D ).

A)调用函数时,实参变量与形参变量可以共用内存单元

B)调用函数时,实参的个数、类型和顺序与形参可以不一致

C)调用函数时,形参可以是表达式

D)调用函数时,将为形参分配内存单元

15 下列语句中,不正确的是 ( D )

Ac=2*max(a,b); Bm=max(a,max(b,c));

Cprintf("%d",max(a,b)); Dint max(int x,int max(int y,int z))

16 以下函数调用语句:

fun(x+y,x-y);中实际参数的个数是( B ).

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

17 C语言可执行程序开始执行点为( C ).

A)程序中第一条可执行语句 B) 程序中第一个函数

C)程序中的main函数 D) 包含文件中的第一个函数

18 若调用一个函数,且此函数中无return语句,则正确的说法是( D ).

A) 没有返回值;

B) 返回若干个系统默认值;

C) 能返回一个用户所希望的函数值;

D) 返回一个不确定的值

19 执行下列程序后, 变量 i 的值应为( A ).

int ma(int x,int y)

{return x*y;

}

main()

{ int i;

i = 5;

i = ma(i,i-1)-7;

}

A) 13 B) 17 C) 19 D) 以上都错

20 下列程序的结果为( C ).

change(int x,int y)

{int t;

t=x;x=y;y=t;

}

main()

{

int x=2,y=3;

change(x,y);

printf("x=%d,y=%d\n",x,y);

}

A) x=3,y=2 B) x=2,y=3 C) x=2,y=2 D) x=3,y=3

21 执行下列程序后, 变量a的值应为( D ).

int f(int x)

{return x+3;}

main()

{int a=1;

while(f(a)<10)

a++;

}

A) 11 B) 10 C) 9 D) 7

22 若有以下函数定义,则在主函数中正确的调用语句是( C ).

void fun(int array[][5]

{ ………..}

main()

{ int a[3][5], b;

……..}

Afun(a[3][5]);

Bb=fun(a);

C) fun(a);

D) fun(a)

23 C语言中的函数( D ).

A)可以嵌套定义。

B)不可以嵌套调用。

C)可以嵌套调用,但不能递归调用。

D)嵌套调用和递归调用均可。

24 C语言中( A )函数的递归调用.

A) 允许 B) 不允许

25 对于以下递归函数f, 调用f(4),其返回值为( B ).

int f(int n)

{ if (n)

return f(n-1)+n;

else

return n;

}

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

26 以下不正确的描述为( B ).

A)在函数之外定义的变量为外部变量,外部变量是全局变量。

B)在函数中既可以使用本函数中的局部变量,又可以使用全局变量。

C)若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。

27 以下正确的说法是:建立函数的目的之一是( B ).

A) 提高程序的执行效率; B) 提高程序的可读性

C) 减少程序的篇幅; D) 减少程序文件所占内存

28 执行下列语句后,a的值为( C ).

int a=12, b=7;

m(int a,int b)

{

a=b;

}

main()

{

m(a,b);

}

A) 0 B) 1 C) 12 D) 7

29 全局变量的有效范围为(D ).

A) 该程序的所有文件

B) 从本源文件的开始到结束

C) 该程序的主函数

D) 从定义变量的位置开始到本源文件结束

30 以下说法中正确的是( C ).

A)形参是全局变量,其作用范围仅限于函数内部

B)形参是全局变量,其作用范围从定义之处到文件结束。

C)形参是局部变量,其作用范围仅限于函数内部

D)形参是局部变量,其作用范围从定义之处到文件结束。

1 若使用一维数组名作为函数实参,则以下说法正确的是( AC

A)必须在主调函数中说明此数组的大小

B)实参数组与形参数组类型可以不匹配

C)实参数组与形参数组的大小可以不一致

D)实参数组名与形参数组名必须一致

1 实参可以是常量、变量或表达式。

2 定义函数时,形参的类型说明可放在函数体内。

3 在有参函数中,定义函数中指定的形参变量在整个程序一开始执行时便分配内存单元。

4 数组名作函数参数时,也采用“值传送”方式。

5 C函数中,当以数组名作为参数时,对形参变量的操作不会影响到调用函数中的实参变量,即形参值不能传回给实参。

6 函数调用可以作为一个函数的形参。

7 数组名做函数的参数时,可以只在主调函数中定义数组,被调用函数只需要确定名称就可以了。

8 数组元素做函数的实参,是双向传递,即“地址传递”方式。

9 形参和实参的变量名称可以一样。

10 除了利用实际参数和形式参数在各函数之间传递数据外,利用全局变量,也可以在各函数间传递数据。

11 函数的实参与形参的类型应一致。

12 C中,形式参数只是局限于所在函数.

13 在一个函数定义中只能包含一个return语句。

14 C语言不允许在调用一个函数的过程中出现直接或者间接地调用该函数本身。

15 C语言中允许函数的嵌套定义和嵌套调用。

16 在同一源文件中,外部变量与局部变量同名时,则在局部变量的作用范围内,外部变量不起作用。

17 不同函数中使用相同名字的变量时,代表的是相同的变量。

18 全局变量在在程序的全部执行过程中都占用存储单元。

1 f( int m )

{

int i, j;

for( i=0; i

for( j=m-1; j>=0; j--)

printf("%1d%c",i+j, j?'*':'#');

}

如果调用f(3)将输出【 2*1*0#3*2*1#4*3*2#

C语言(函数,变量作用范围)三

1 下列定义不正确的有 ( C )

A#define PI 3.141592 B#define S 345

Cint max(x,y); Dchar c;

int x,y ;

{ }

2 下列程序结构中,不正确的是 ( B )

Amain() B main()

{float a,b,c; {float a,b,c;

scanf("%f,%f",&a,&b); scanf("%f,%f",&a,&b);

c=add(a,b); c=add(a,b);

...... .....

} }

int add(float x,float y) float add(float x,float y)

{ ... } { ... }

Cfloat add(float x,float y); Dfloat add(float x,float y)

main() { ... }

{float a,b,c; main()

scanf("%f,%f",&a,&b); {float a,b,c;

c=add(a,b); scanf("%f,%f",&a,&b);

...... c=add(a,b);

} .....

float add(float x,float y) }

{ ... }

3 一个C语言的程序总是从( A )开始执行的.

A)main函数

B)文件中的第一个函数

C)文件中的第一个子函数调用

D)文件中的第一条语句

4 以下正确的函数定义是( D ).

Adouble fun(int x,int y)

{z=x+y; return z}

B) double fun(int x,int y);

{int z;

z=x+y; return z}

C) fun(int x,y)

{int z; return z}

D) double fun(int x,int y)

{double z;

z=x+y; return z}

5 以下正确的函数声明形式是( D ).

A double fun(int x,int y)

B) double fun(int x;int y)

C) double fun(int ,int )

D) double fun(int ,int );

6 以下说法中正确的是( B )

C语言中

A)实参与其对应的形参各占用独立的存储单元

B)实参与其对应的形参占用同一个存储单元

C)只有当实参与形参同名时才占用同一个存储单元

D)实参占用存储单元,但形参是虚拟的,不占用存储单元

7 设有如下函数定义:

int f(char *s)

{ char *p=s ;

while(*p!='\0') p++;

return(p-s) ;

}

如果在主程序中用下面的语句调用上述函数,则输出结果为( A ).

printf("%d\n",f("goodbye!"));

的输出结果是

A) 3 B) 6 C) 8 D) 0

8 下面程序段中,主函数中变量a被初始化为 ( C )

int f()

{

return 3.5;

}

main()

{

int a=f();

}

A3.5 B)无确定值

C3 D)程序出错

9 下面叙述不正确的是( D ).

A) 在函数中,通常用return语句传回函数值;

B) 在函数中,可以有多条return语句;

C) C中,主函数main后的一对圆括号中也可以带有形参;

D) C中,调用函数必须在一条独立的语句中完成;

10-C语言函数返回值的类型是由( C )决定的。

A) 调用该函数的主调函数类型 B) 定义函数时所指定的函数类型

C) return语句中的表达式类型 D) 以上都错

11-以下说法中正确的是( A ).

A)实参可以是常量、变量或表达式

B)形参可以是常量、变量或表达式

C)实参可以为任意类型

D)形参应与其对应的实参类型一致

12-C语言中规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ).

A)地址传递

B)单向值传递

C)由实参传给形参,再由形参传给实参

D)由用户指定传递方式

13-以下程序的输出结果是 ( A )

int power(int x,int y);

main()

{float a=2.6,b=3.4;

int p;

p=power((int)a,(int)b);

printf("%d\n",p);

}

int power(int x,int y)

{int i,p=1;

for(i=y;i>0;i--)

p=p*x;

return p;

}

A) 8 B) 9 C) 27 D) 81

14-以下不正确的描述为( B ).

A)调用函数时,实参可以是表达式

B)调用函数时,实参变量与形参变量可以共用内存单元

C)调用函数时,将为形参分配内存单元

D)调用函数时,实参与形参的类型必须一致

15-下列语句中,不正确的是 ( C )

Achar a[]={"China"}; Bchar a[]="China";

Cprintf("%s",a[0]); Dscanf("%s",a);

16-若有以下函数调用语句fun(a+b, (x,y), fun(n+k,d,(a,b)));在此函数调用语句中实际参数的个数是( A ).

A) 3 B) 4 C) 5 D) 6

17-下面程序

#include

main ( )

{

char *a="1234";

fun(a);

printf("\n");

}

fun ( char *s)

{ char t;

if(*s) {t = *s++; fun(s); }

if(t !='\0') putchar( t );

}

输出为( B ).

A) 1234 B) 4321 C)1324 D) 4231

18-C规定,简单变量做实参时,它与对应形参之间的数据传递方式是( B ).

A) 地址传递

B)单向值传递

C)有实参传递到形参,再由形参传回给实参。

19-执行完下列语句段后, i值为( C ).

int i;

int f(int x)

{ int k = x+1;

int t;

t=k; k=x; x=t;

return x;

}

i=f(f(1));

A) 1 B) 2 C) 3 D) 以上都错

20-下列程序段的运行结果为( B ).

float f(int x)

{

x=x+3.6;

return x;

}

main()

{

printf("%.1f",f(2));

}

A) 6.0 B) 5.0 C) 5.6 D) 以上都不对

21-执行下列程序后, 变量a的值应为( A ).

int f(int x,int y)

{return x*y;}

main()

{int a=2;

a=f(f(a,a*a),f(a+a,a/3));

}

A) 0 B) 2 C) 8 D) 16

22-若有以下函数定义,则在主函数中正确的调用语句是( B ).

viod fun(int array[3][5])

{ ………..}

main()

{ int a[3][5], b;

……..}

Afun(a[3][5]);

Bb=fun(a);

C) fun(a);

D) fun(&a);

23-若有以下变量说明和函数定义:

int a=4,b=6,c,k;

char ch='x';

float x,y,z;

sub(int x, int y, char ch, float *z)

{ switch(ch)

{case '+': *z=x+y;break;

case '-': *z=x-y;break;

case '*': *z=x*y;break;

case '/': *z=x/y;break;

}

}

则以下合法的函数调用语句是( B ).

A) sub(10,20,ch,y);

B) sub(1,2+3,'+',&z);

C) sub(sub(1,2,'+',&y), sub(3,4,'+',&x),'-',&y);

D) sub(a,b,&x,ch);

24-下面程序

#include

f ( int x )

{ if ( x= = 0 || x = = 1 ) return ( 3 ) ;

else return ( x–f(x–2)); 

}

main ()

{

printf ("%d\n", f(9));

}

输出结果是( A ).

A) 7 B) 3 C) 6 D) 8

25-以下说法中正确的是( B ).

A)一个函数在它的函数体内调用它自身称为嵌套调用。

B)一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。

C)一个函数在它的函数体内调用其它函数称为递归调用。这种函数称为递归函数。

D)一个函数在它的函数体内不能调用自身

26-以下叙述中不正确的是( D ).

A) 在不同的函数中可以使用相同名字的变量

B) 函数中的形式参数是局部变量

C) 在一个函数内定义的变量只在本函数范围内有效

D) 在一个函数内的复合语句中定义的变量在本函数范围内有效

27-C函数返回值的类型由( D )决定.

A)调用函数时临时

B)return语句中的表达式类型

C)调用该函数的主调函数类型

D)定义函数时指定的函数返回值类型

28-执行下列语句后,程序的运行结果为( A ).

int a=10;

f( )

{int a;

a=12;

}

main()

{f();

printf("%d",a);

}

A) 10 B) 12 C) 0 D) 不确定

29-以下说法中不正确的是( D ).

A)主函数中定义的变量只在主函数内部有效

B)形式参数是局部变量

C)在函数内部定义的变量只在本函数范围内有效

D)当全局变量与局部变量同名时,局部变量不起作用

30-当全局变量与函数内部的局部变量同名时,则在函数内部( A ).

A)全局变量有效

B)局部变量有效

C)全局变量与局部变量都有效

D)全局变量与局部变量都无效

1-设下面程序段中调用fun函数传送实参ab:

main( )

{ char a[10],b[10];

……

fun(a,b);

……

}

则在fun函数头部中,对形参正确的定义是:(BCD)

A) fun(char a,b)

B) fun(char a1[],char a2[])

C) fun(char p[10], char q[10])

D) fun(char *s1,char *s2)

1 形参可以是常量、变量或表达式。

2 如函数值的类型与返回值类型不一致,以函数值类型为准。

3 下面两种写法等价。

(1) int fun(int x,int y) (2) int fun(x,y)

int x,y ;

4 C语言中,最好使用全局变量.

5 以下说法是否正确:若调用C标准库函数,调用前必须重新定义。

6 形式参数和实际参数的个数可以不同。

7 数组名做函数的参数时,实参数组和形参数组大小一定要一致。

8 用数组名做函数参数,形参数组可以不指定大小。

9 C语言中函数的返回值类型是由return语句中的表达式类型决定的。

10 数组名作为函数参数,应该在主调函数与被调函数中分别定义数组,不能只在一方定义。

11 下面的程序是否有一个整型输出值。

main()

{int a ;

a=pp();

printf("%d",a);

}

void pp()

{ }

12 以数组名作为参数时,数据传送方向是“双向的”。即形参值可以传回给实参。

13 所有的函数都是平行的,一个函数并不从属于另一个函数。

14 只有主函数才可以调用其它函数。

15 C语言中,函数可以递归调用或递归定义。

16 在同一文件中,外部变量与局部变量同名。在局部变量的作用范围内,外部变量的值等于局部变量的值。

17 main函数中定义变量是全局变量。

18 当全局变量与函数内部的局部变量同名时,则在函数内部全局变量有效。

1-执行完下列语句段后, i值为【 1 】。

int i;

int f(int x)

{int k = 0;

x+=k++;

return x;

}

i=f(f(1));

指针一

对于类型相同的指针变量,不能进行哪种运算( )

A) - B) + C) = D) >

若有以下说明,则正确的赋值表达式是( )

int x,*p;

A) p=&x B) p=x C) *p=&x D) *p=*x

有如下语句int a=10,b=20,*p1,*p2;p1=&a;p2=&b;若要实现p1,p2均指向b,可选用的赋值语句是( )

A) *p1=*p2; B) p1=p2; C) p1=*p2; D) *p1=p2;

以下程序的运行结果是( )

sub(int x,int y,int *z)

{*z=y-x;}

main()

{int a,b,c;

sub(10,5,&a);

sub(7,a,&b);

sub(a,b,&c);

printf("%4d,%4d,%4d\n",a,b,c);}

A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7

以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( )

main()

{int *p,*q,a,b;

p=&a;

printf("input a:");

scanf("%d",*p);

……

}

A) *p表示的是指针变量p的地址 B) *p表示的是变量a的值,而不是变量a的地址

C) *p表示的是指针变量p的值 D) *p只能用来说明p是一个指针变量。

变量的指针,其含义是指该变量的( )

A) B) 地址 C) D)一个标志

若有说明:int *p,m=5,n; 以下正确的程序段是( )

A)p=&n; B)p=&n; C)scanf("%d",&n); D)p=&n;

scanf("%d",&p); scanf("%d",*p); *p=n *p=m;

下面程序段运行结果是( )

char *p="%d,a=%d,b=%d\n";

int a=111,b=10,c;

c=a%b; p+=3;

printf(p,c,a,b);

A)1,a=111,b=10 B)a=1,b=111 C)a=111,b=10 D) 以上结果都不对。

执行下面程序段后,ab的值为( )

int *var,ab;

ab=100;var=&ab; ab=*var+10;

A)120 B)110 C)100 D)90

若有定义:int x,*pb;则正确的赋值表达式是( )

A)pb=&x B)pb=x C)*pb=&x D)*pb=*x

下面程序运行结果是( )

void fun(int x)

{ printf("%d\n",++*x);

main()

{int a=25;fun(&a);}

A)23 B)24 C)25 D)26

对于两个类型相同的指针变量,不能进行( )运算?

A. + B. - C. = D. ==

以下程序的输出结果是( )

a. 4 b. 6 c. 8 d. 10

main( )

{ int k=2,m=4,n=6;

int *pk=&k,*pm=&m,*p;

*(p=&n)=*pk*(*pm);

printf("%d\n",n);

}

若有int a[10]={1,2,3,4,5,,6,7,8,9,10}*p=a;则数值为9的表达式是( )

A. *p+9 B. *(p+8) C. *p+=9 D. p+8

若有以下说明和语句,且0i5,则下面哪个答案( )是对数组元素地址的正确表示?

float a[]={1.6,3.0,-5.4,7.8,94.0},*p,i;

p=a;

A) &(p+i) B) a++ C) &p D) &p[i]

若有以下说明, a[*(a+a[3])]的值为( )

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

A) 8 B) 3 C) 0 D) 不合法

以下程序运行后,输出结果是( )

main( )

{

int a[10]={19,23,44,17,37,28,49,36},*p;

p=a;

printf("%d\n",(p+=3)[3]);

}

A) 44 B) 17 C) 49 D) 运行时出错,无定值

本文来源:https://www.2haoxitong.net/k/doc/e9bf3087a66e58fafab069dc5022aaea998f41b1.html

《C语言程序设计 - 习题大全(含答案).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式