C语言程序设计 习题大全(含答案) C语言-2 下载本文

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

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

A) '\\\ '\\\\' '\\' '\\f' '\\101' 'xf' '\\A' '\\}' 'x1f' 4.下面不正确的字符串常量是( A )。

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

A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。

A) swith B) cher C) Case D). Default 7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed 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个字符

10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。 A)1 B)2 C)8 D)4

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

A)D B)68 C)不确定的值 D)C 12逻辑运算符两侧运算对象的数据类型是 ( D )。

A) 只是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据

13TURBO C中int类型变量所占字节数是( B )。 A)1 B)2 C)3 D)4

14在C语言中,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) 若t为double类型,表达式t=1,t+5,t++的值是( D )。 A)1 B)6.0 C)2.0 D)1.0

设n=10,i=4,则赋值运算 n%=i+1执行后,n的值是( A ). A) 0 B) 3 C) 2 D) 1

设Int n=3;则有表达式++n,n的结果是( C )。 A)2 B)3 C)4 D)5

用十进制形式输入有符号整数时,在scanf函数语句里格式字符为( AB )。 A)d B)i C)n D)u 在scanf函数语句中可用的修饰符有( ABCD )。

A)* B)h C)l D)宽度 1数据是操作的对象,操作的结果会改变数据的状况。 对 2字符型变量用来存放字符常量,注意只能放2个字符。 错 3C语言中可以把一个字符串赋给一个字符变量。 错

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

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

6若有以下定义,则执行下面表达式y+=y-=m*=y后,y的值为-6。int m=5,y=2; 对 7输入语句的格式为: scanf(\是正确的。 对

8在scanf(\函数中,可以使用一个或多个空格作为两个输入数之间的间隔。9getchar函数的功能是接收从键盘输入的一串字符。 错 10在变量说明中给变量赋初值的方法是:int a=b=c=10; 错

12printf函数是一个标准库函数,它的函数原型在头文件\中。 对 13printf函数称为格式输入函数,它的函数原型在头文件\中。 错

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

15若int x=3; printf(\则系统会报错,没有任何结果。 错 16逻辑运算符的优先级别高于算术运算符 错 1在C语言中,表示逻辑\真\值用【 1 】.

2表达式pow(2.8,sqrt(double(x)))值的数据类型为( doubt )。 3假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是【 8 】。 4若x是int型变量,则执行下面表达式后,x的值为【 12 】。x=(a=4,6*2)

5若k为 int整型变量且赋值7,请写出赋值表达式 k *= k + 3的运算结果【70 】。 6scanf函数是一个标准库函数,它的函数原型在头文件【 stdio.h 】中。 7getchar函数可以接收【 单 】个字符,输入数字也按字符处理。 8在语句中,给变量赋值时,赋值语句必须以【 分号 】结尾。

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

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

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

12设x=3,y=-4,z=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 \2下面四个选项中,均是不合法整型常量的选项是( D )。 A)-0f1 B)-0xcdf C) -018 D)-0x48eg -0xffff 017 999 -068 0011 12,456 5e2 03f 3下面正确的字符常量是( C )。

A) \

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

9若k为int型变量,则以下语句( C )。 k=8567;

printf(\

A)输出格式描述不合法 B)输出为|008567| C)输出为|8567| D)输出为|-08567|

10sizeof(float)是( B )。

A)一个双精度表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式

11在C语言中, int、char和short三种类型数据在内存中所占用的字节数( 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 )。

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

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

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,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*5,a*4),a+15的值为( C )。 A)15 B)60 C)30 D)不确定

20设Int n=3;则n++的结果是( B )。 A)2 B)3 C)4 D)5

1用小数或指数形式输入实数时,在scanf函数语句里格式字符为( BCD )。 A)i B)f C)e D)g 2可以使用( CD )输入字符型数据。

A)putchar(c); B)getchar(c); C)getchar(); D)scanf(\1C语言中数据有常量与变量之分。

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

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

4把k1、k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0; 。错 5如果i的原值为3,则:j = ++ i,j的值为3。 错 6凡是表达式都有一个值。

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

8在scanf(\,%*d,%d\函数中,当输入为1,2,3时,将1赋给a,将2赋给b。 错

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

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

12printf函数是一个标准库函数,它的函数原型在头文件\中。 错 13在printf函数中,格式字符d的意义是:以十进制形式输出带符号整数。 14 在printf函数中,输出表列的各输出项之间可用冒号分隔。 错 15若int x=3; printf(\则系统不会报错,会输出x的地址。 16int a=0,b=1,c=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 3若a是int型变量、且a的初值为6,则执行下面表达式后,a的值为【 60 】。a+=a-=a*a 4若x是int型变量,则执行下面表达式后,x的值为【 4 】。x=a=4,6*2 5若a是int型变量,且a的初值为6,则计算表达式后a的值为【 60 】。a+=a-=a*a 6scanf函数的地址表列中给出各变量的地址,地址是由【 地址运算符\】后跟变量名组成的。

7使用getchar函数接收字符,若输入多于一个字符时,只接收第【 一 】个字符。 8 C语言的格式输出函数是【 printf() 】。

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

10已知A=7.5,B=2,C=3.6,表达式A>B&&C>A || AB的值是【 0 】 11若a=3,b=2,c=1,则表达式a-b

if(m++>5) printf(\else printf(\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 (\ 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(\该程序的输出结果是( )

A) 0 B) 1 C) 2 D) 3 4若i为int型,且有程序如下,则输出结果是( ) i=111; if(i%3==0)

printf(\ printf(\

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

5若运行时x=12,则运行结果为( ) {int x, y;

scanf(\ y=x>12 ? x+10:x-12; printf(\

A) 0 B) 22 C) 12 D) 10 6以下程序的输出结果是( ) main()

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

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

printf(\}

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)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 8当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( ) if(a

if(a

if(b

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(\,&x);else scanf(\,&y); D)if(x

#include\ 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 (\ }

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

A) abcde B) abcee C) abbde D) abccdd

11若a、 b、c1、c2、x、y、均是整型变量,正确的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) 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(\

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(\}

A) -1 B) 1 C) 8 D) 0 21以下程序段的输出结果是( ). main() { int i=5;

for ( ;i<=15; ) { i++;

if (i%4==0) printf(\ 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(\ 则上面程序段( )

A. 输出的是1 B. 输出的是1和-2 C. 输出的是3和0 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 \ main()

{int i,b,k=0;

for(i=1;i<=5;i++) { b=i%2;

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

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语句构成的循环不能用其它语句构成的循环来代替。

6用do-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。 1若a、b均为int型变量,且a=100,则以下的for循环是死循环. for (b=100;a!=b;++a,b++) printf(\执行语句:for(i=1;i++<4;++i);后;变量i的值是5。 2以下程序的运行结果是【 】 main()

{int x,y,z; x=1;y=2;z=3; x=y--<=x||x+y!=z;

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

3以下程序的运行结果是【 】 main()

{int x,y,z; x=1;y=1;z=0; x=x||y&&z;

printf(\,%d\,x&&!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(\}

5阅读下面程序: 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(\}

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

7下面程序的功能是在输入的一批整数中求出最大者,输入0结束循环。 #include main() { int a,max=0; scanf(\

while(【 】){ if (max

printf(\}

8执行下面的程序段后,k值是【 】。 k=1; n=263;

do { k*=n; 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(\} while(sum<200); }

10鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。 for(x=1;x<=29;x++) { y=30-x;

if (【 】) printf(\}

11写出下面程序的运算结果【 】。 # include main ( )

{ int a=14, b=63; while (a!=b)

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

while (a

printf (\ }

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(\ }

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

C语言(数组)一 设有程序: main()

{ int i,a[11];

printf(\给数组赋值:\\n\; for (i=0;i<=10;i++)

scanf(\,( )); ... ...

printf(\输出数组:\\n\; for(i=0;i<=10;i++)

printf(\; }

则在程序中的两个园括号中分别应填入:

A) &a[i]和&a[i] B) a[i]和&a[i] C) &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

和a[i] D) a[i] printf(\}

以上程序的输出结果是( ).

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(\}

以上程序的输出结果是( ).

A) 720 B) 6 C)24 D) 120 以下定义语句中,错误的是( ).

A) int a[ ] = {6,7,8}; B) int n=5, a[n]; C) char a[ ]= \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(\printf(\

若定义数组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

上面程序的输出结果是( ).

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(\以下数组定义中错误的是( ).

A) #define N 30 B) #define N 30 int a[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};

B) 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(\语句的结果是哪一个( )? 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(\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(\}

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(\B) scanf(\C) printf(\D) printf(\阅读程序: main()

{ char a[10]; int i;

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

设从键盘输入字符串:abcde,则程序的输出结果是( ). A) a B)空格 C)不确定 D)0 设有:char a[4][5]; 则数组a占用的内存字节数是( ). A) 12 B) 24 C) 40 D) 20 合法的数组定义是( ).

A) int a[ ] = \a[ ]={'0','1','2','3'};

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

定义字符数组c:char c[ ]={\;数组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]= {\’,'b’};

若定义数组并初始化char a[10]={\该数组的元素个数是( ). A) 10 B) 5 C) 6 D) 7

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

若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( )?

A)b[8]的值为0 B)b[1]的值为1 C)b[3]的值为整数 D)b[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(\ ... ... }

应在园括号中填入的是:

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分别赋值给数组a的4个元素,下面正确的赋值方式是( ).

A)scanf(\B)scanf(\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]={\

一维数组初始化时,若对部分数组元素赋初值,则下面正确的说法是( ). A)可以只对数组的前几个元素赋初值 B)可以只对数组的中间几个元素赋初值 C)可以只对数组的后几个元素赋初值 D)以上说法全部正确 决定数组所占内存单元多少的是( ).

A)数组的长度 B)数组的类型 C)数组在初始化时被赋值的元素的个数 D) 数组元素的个数及其类型

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

{int i , a[10]};

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

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(\则输出结果是( ). 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(\}

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) a和b数组中各有6个元素B) b数组的初始化是错误的C)a数组与b数组中每个对应元素相等D)a、b数组都是整型数组 合法的数组初始化是( ).

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(\}

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(\B) scanf(\C)printf(\

D)printf(\设有定义:char a[][5]={{'*'},{'*',' ','*'},{'*',' ',' ',' ','*'},{'*',' ','*'},{'*'}};

则a[0][0]和a[4][4]的初值分别为( ).

A) *,* B) 空格,空格 C) 空白符,* D) *,空白符 设有:char a[]={\则a在内存中占用的字节数是( ). A) 15 B) 12 C) 16 D) 32

给出以下定义:char u[ ]=\则下列正确的描述为( ).

A) 数组u和数组v等价 B) 数组u和数组v的长度相等 C) 数组u的长度大于数组v的长度 D) 数组u的长度小于数组v的长度 若有以下定义和语句,则输出结果是( ). char string[ ]=\printf(\

A) Su B) Sun C) Sunn D) Sunny C语言中实现字符串输入的库函数是( ). A) gets(字符数组) B) puts(字符数组)

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

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

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

若定义数组并初始化char a[10]={\该数组的元素中 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(\语句对a[0]元素重新赋值。 B)可以用scanf(\语句对a数组重新赋值。

C)可以用scanf(\语句对a[3]元素重新赋值。 D)可以用scanf(\语句对a数组重新赋值。 数组初始化时,下面说法错误的是( ).

A)当对一维数组的全部元素赋初值时,可以不指定长度 B)当对二维数组的全部元素赋初值时,可以省略维数 C)用字符串对一维字符数组赋值时,可以不指定长度 D)用字符串对二维字符数组赋值时,可以省略维数

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

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

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

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

定义一维数组int a[10];则语句for(i=0;i<10;i++) scanf(\;是正确的。 给二维数组的全部元素赋初值,可以用如下的语句实现:int a[][]={{1,2,3},{4,5,6},{7,8,9}}; C语言(函数,变量作用范围)一 C语言程序的基本单位是( ).

A) 程序 B) 语句 C) 字符 D) 函数 下列函数定义不正确的是 ( )。

A)int max() B)int 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语言函数都有返回值 D)C程序中,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)调用函数时临时 B)return语句中的表达式类型

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)定义函数时,形参的类型说明可以放在函数体内 B)return后面的值不能为表达式

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(\

printf(\}

A)a,b B)a ,C)b, 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(\ 执行结果为( ).

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(\ }

A) 8.6 B) 9.0 C) 8.0 D) 8

若有以下函数定义,则在主函数中正确的调用语句是 int fun(int array[3][5]) { ???..} main()

{ int a[3][5], b; ??..}

A)b=fun(a[3][5]);B)b=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(\ }

A) 10 B) 12 C) 0 D) 不确定 以下说法中正确的是( ).

A) 主函数中定义的变量是全局变量,其作用范围仅限于函数内部

B) B)主函数中定义的变量是全局变量,其作用范围从定义之处到文件结束。 C)主函数中定义的变量是局部变量,其作用范围仅限于函数内部

D)主函数中定义的变量是局部变量,其作用范围从定义之处到文件结束。 调用C语言函数时,实参可以是: A)常量 B)变量 C)表达式 D)void 下面程序段是否正确。 main()

{ void fun() { ... }

}

形参应与其对应的实参类型一致。

C语言中,void类型的函数可以不用在主调函数中声明。

用数组名作函数形参和实参时,应在主调函数和被调函数中分别定义数组。

以数组名作为函数参数时,实参数组必须定义为具有确定长度的数组,而形参数组可以不定义长度。

Return语句后面的值不能为表达式。

对于不要求带返回值的函数,函数类型必须是void类型。 数组元素做函数的实际参数,传递的是整个数组。 形参不是局部变量。

在一个函数定义中只能包含一个return语句。 主函数和其它函数可以互相调用。 以下程序运行结果为1,3,5,7。 main()

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

printf(\}

函数调用可以作为一个函数的实参。

函数的嵌套调用就是在调用一个函数的过程中,又调用另一个函数。 数组名作为函数参数时,传递的是数组第一个元素的值。 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(“m\\n”,x);} 的类型为( C ).

A) 实型 B)void 类型 C)int 类型 D) A)、B)、C)均不正确 4 以下说法中正确的是( C ).

A)C语言程序总是从第一个定义的函数开始执行

B)在C语言程序中,要调用的函数必须在main函数中定义 C)C语言程序总是从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)调用函数后,被调用的函数不返回B) C)调用函数后,被调用的函数的返回值为任意的类型 D)以上三种说法都是错误的 7 设有如下定义: int x=10,y=3,z ; 则语句

printf(\的输出结果是( D ).

A) 1 B)0 C) 4 D)3 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 ). A)float B)int C)long int D)void

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

A)f(int array[ ][6]) B)f(int array[ 3][ ]) C)f(int array[ ][4]) D)f(int array[ 2][5])

14 下列说法中正确的是( D ).

A)调用函数时,实参变量与形参变量可以共用内存单元 B)调用函数时,实参的个数、类型和顺序与形参可以不一致

C)调用函数时,形参可以是表达式 D)调用函数时,将为形参分配内存单元 15 下列语句中,不正确的是 ( D )。

A)c=2*max(a,b); B)m=max(a,max(b,c));

C)printf(\)int 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(\ }

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; ??..}

A)fun(a[3][5]);B)b=fun(a);C) fun(a); D) fun(a) 23 C语言中的函数( D ).

A)可以嵌套定义。 B)不可以嵌套调用。

)可以嵌套调用,但不能递归调用。 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 全局变量在在程序的全部执行过程中都占用存储单元。 对