admin 管理员组

文章数量: 1184232


2024年4月22日发(作者:描述接口和抽象类的区别)

第一章、 数组

一.选择题 8.以下能对二维数组a进行正确初始化的语句是(

B

1.若有语句int a[8];则下述对a 的描述正确的是(A)int a[2][]={{1,0,1},{5,2,3}};(B)int

A

)。 a[][3]={{1,2,3},{4,5,6}};

(A)定义了一个名称为a的一维整型数组,共有8个(C)int a[2][4]={{1,2,3},{4,5},{6}};(D)int

元素 a[][3]={{1,0,1}{},{1,1}};

(B)定义了一个数组a,数组a共有9个元素 9.若有说明:int a[3][4]={0};则下面正确的叙述是

(C)说明数组a的第8个元素为整型变量 (

D

(D)以上可选答案都不对 (A)只有元素a[0][0]可得到初值0(B)此说明语句

2.在C语言中,引用数组元素时,其数组下标的数据类不正确

型允许是(

C

)。 (C)数组a中各元素都可得到初值,但其值不一定为0

(A)整型常量 (D)数组a中每个元素均可得到初值0

(B)整型表达式 10.以下各组选项中,均能正确定义二维实型数组a的

(C)整型常量或整型表达式 选项是(

C

(D)任何类型的表达式 (A)float a[3][4]; float a[][4]; float

3.下述对C语言字符数组的描述正确的是(

A

)。 a[3][]={{1},{0}};

(A)任何一维数组的名称都是该数组存储单元的开始(B)float a(3,4); float a[3][4]; float

地址,且其每个元素按照顺序连续占用存储空间 a[][]={{0};{0}};

(B)一维数组的元素在引用时其下标大小没有限制 (C)float a[3][4]; static float a[][4]={{0},{0}};

(C)任何一个一维数组的元素,可以根据内存的情况(D)float a[3][4]; float a[3][];

按照其先后顺序以连续或非连续的方式占用存储空间 11.若二维数组a有m列,则计算任一元素a[i][j]在数

(D)一维数组的第一个元素是其下标为1的元素 组中位置的公式为(

D

4.下述对C语言字符数组的描述中正确的是(

B

)。 (假设a[0][0]位于数组的第一个位置上。)

(A)任何一个一维数组的元素在引用时,其下标可以(A)i*m+j(B)j*m+i(C)i*m+j-1(D)i*m+j+1

是整型、实型或字符型常量 12.对以下说明语句的正确理解是(

B

(B)一维数组的元素实质上就是一个变量,代表内存int a[10] = {6,7,8,9,10};

中的一个存储单元 (A)将5个初值依次赋给a[1]至a[5] (B)将5个

(C)如果要引用数组中的每一个元素,则直接使用该初值依次赋给a[0]至a[4]

数组名称即可

(C)将5个初值依次赋给a[6]至a[10](D)因为数组

(D)以上都不对 长度与初值的个数不相同,语句有错

5.以下对一维整型数组a的正确说明是(

D

)。 13.若有说明:int a[][3]={1,2,3,4,5,6,7};则a数

(A)int a(10); (B)int n=10,a[n]; (C) int n; 组第一维的大小是(

B

scanf(“%d”,&n);int a[n]; (A)2 (B)3 (C)4 (D)不确定

(D) #define SIZE 10 int a[SIZE]; 14.定义如下变量和数组:

6.以下能对一维数组a进行正确初始化的语句是(

C

)int I;

B? int x[3][3]={1,2,3,4,5,6,7,8,9};

(A)int a[10]=(0,0,0,0,0);(B)int a[10]={};(C)则下面语句的输出结果是(

C

int a[]={0};(D)int a[10]=(10*1); for(I=0;I<3;I++)

7.若有说明:int a[3][4];则对a数组元素的正确引用printf(“%d”,x[I][2-I]);

是(

C

) (A)1 5 9(B)1 4 7(C)3 5 7(D)3 6 9

(A)a[2][4] (B)a[1,3] (C)a[1+1][0] (D)a(2)(1)

15下面程序的运行结果是(

C

main()

{int a[6][6],I,j;

for(I=1;I<6;I++)

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

a[I]][j]=(I/j) * (j/I)

for(I=1;I<6;I++)

{for(j=1;j<6;j++)

printf(“%2d”,a[I][j]);

printf(“n”);}

}

(A)1 1 1 1 1 (B)0 0 0 0 1 (C)1 0 0 0 0 (D)1 0 0 0 1

1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0

1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0

1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0

1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1

16.下面程序的运行结果是(

C

) for(I=1;I<6;I++)

main() {a[I]=9*(I-2+4*(I>3))%5;

{int a[6]; printf(“%2d”,a[I]);

1

}

}

(A)-4 0 4 0 4(B)-4 0 4 0 3(C)-4 0 4 4 3(D)

-4 0 4 4 0

17.下列定义正确的是(

A

(A)static int a[]={1,2,3,4,5}(B)int b[2]={2,5,7}

(C)int a(10)(D)int 4e[4]

18.若有说明:int a[][4]={0,0};则下列叙述不正确

的是(

D

(A)数组a的每个元素都可得到初值0(B)二维数组

a的第一维的大小为1

(C)因为对二维数组a的初值个数除以第二维的大小,

“abcd”;

28.下列语句的执行结果是(

C

static char str[10] = “china”;

printf(“%d”,strlen(str));

(A)10 (B)6 (C)5 (D)0

29合法的数组定义是(

A

(A)int a[] = “language”;(B)int

a[5]={0,1,2,3,4,5};

(C)char a=”string”;(D)char

a[]={“0,1,2,3,4,5”};D选项应为

Char a[]={‘0’,’1’,’2’,’3’,’4’,’5’};

30.若有以下程序片段:

商为0,所以数组a的行数为1

(D)只有元素a[0][0]和a[0][1]可得到初值0,其余

元素均得不到初值

19.设有char str[10],下列语句正确的是(

D

(A)scanf(“%s”,&str);(B)printf(“%c”,str);

(C)printf(“%s”,str[0]);(D)printf(“%s”,str);

20.以下语句定义正确的是(

D

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

x[3][]={{1},{2},{3}};

(C)long b[2][3]={{1},{1,2},{1,2,3}};(D)double

y[][3]={0};

21下列的说法正确的是(

D

(A)在C语言中,可以使用动态内存分配技术,定义

元素个数可变的数组

(B)在C语言中,数组元素的个数可以不确定,允许

随机变动

(C)在C语言中,数组元素的数据类型可以不一致

(D)在C语言中,定义了一个数组后,就确定了它所

容纳的具有相同数据类型元素的个数

22.假设array是一个有十个元素的整型数组,则下列

写法中正确的是(

A

(A)array[0]=10(B)array=0(C)array[10]=0(D)

array[-1]=0

23.若用数组名作为函数调用的实参,传递给形参的是

A

(A)数组的首地址(B)数组的第一个元素的值

(C)数组中全部元素的值(D)数组元素的个数

24.若使用一维数组名作函数实参,则以下正确的说法

是(

C

(A)在被调函数中,与该实参相对应的形参必须是指

针型变量

(B)实参数组类型与形参类型可以不匹配

(C)在被调函数中,不需要考虑形参数组的大小

(D)实参数组名与形参数组名必须一致

25.下述对C语言字符数组的描述错误的是(

C

(A)字符数组可以存放字符串(B)字符数组中的字符

串可以整体输入、输出

(C)可以在赋值语句中通过赋值运算符”=”对字符数

组整体赋值

(D)不可以用关系运算符对字符数组中的字符串进行

比较

26.设有char str1[10], str2[10],c1; 则下列语句正

确的是(

D

)(不能用赋值语句将一个字符串常量或者

字符数组赋给一个字符数组)

(A)str1 = {“china”}; str2 = str1;(B)c1=”

ab”;

(C)str1 = {“china”}; str2 = {“people”};

strcpy(str1,str2);(D)c1=’a’;

27.以下能正确进行字符串赋值、赋初值的语句组是

A

(A)char s[5] = {‘a’,’b’,’c’,’d’,’e’};

(B)char *s; s=”abcde”;

(C)char s[5] = “abcde”;( D )char s[5]; s =

charstr[]=

"abn012""

;printf(“%d”,strlen

(str));

则输出结果是(

C

(‘012’ 代表八进制数,不

是空值符 ’0’)

(A)3 (B)4 (C)6 (D)12

31.库函数strcpy用以复制字符串。若有以下定义和语

句:

char str1[] = “string”, str2[8], *str3, *str4=”

string” ;

则对库函数strcpy的不正确调用是(

C

(A)strcpy(str1,”hello1”);(B)strcpy(str2,”

hello2”);

(C)strcpy(str3,”hello3”);(D)strcpy(str4,”

hello4”);

32.下面程序段的运行结果是(

D

char a[7] = “abcdef “;

char b[4] =”ABC”;

strcpy(a,b);

printf(“%c”,a[5]);

(A)为空格(B)0(C)e(D)f

33.有下面的程序段

D

char a[3],b[] = “China”;

a = b;

printf(“%s”, a);

(A)运行后将输出China(B)运行后将输出Ch(C)

输出Chi(D)编译出错

二.填空题

1.数组名命名规则和变量名相同,遵循(

标识符

命名规则。

2.对于一维数组的定义”类型说明符 数组名[常量表

达式]”其中常量表达式可以包括(

常量

)和(

符号

常量

),不能包含(

变量

)。

3.对于数组a[m][n]来说,使用数组的某个元素时,行

下标最大值是(

m-1

),列下标最大值是(

n-1

)。

4.在C语言中,将字符串作为(

字符数组

)处理。

5.在C语言中,数组的首地址是(

)。

()

{int k,*p;

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

p = a;

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

printf(“%d,”, *p++);

}程序的运行结果是(

1,2,3,

7.程序

main()

{int k,*p;

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

p = a;

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

printf(“%d,”,*++p);

}则运行结果是(

2,3,4,

8.下面程序的功能是将字符串s中所有的字符c删除。

2

补足所缺语

#include

main()

{

char s[80];

int i , j;

gets(s);

for (i = j = 0; s[i] != ‘0’;i++)

if(s[i] != ‘c’) (

s[j++]=s[i]

);

s[j] = ‘0’;

puts(s);

}

9.下面程序的功能是从键盘输入一行字符,统计其中有

多少个单词,单词之间用空格分隔。补足所缺语句。

第二章、 函数

一.选择题

1. 关于建立函数的目的以下说法正确的是

___

_B___

___。

(A) 提高程序的执行效率

(B) 提高程序的可读性

(C) 减少程序的篇幅

(D) 减少程序文件所占内存

2. 以下说法正确的是__

__D

______。

(A) 用户若需调用标准库函数,调用前必须重新定义

(B) 用户可以重新定义标准库函数,若如此,该函数将

失去原有含义

(C) 系统根本不允许用户重新定义标准库函数

(D) 用户若需调用标准库函数,调用前不必使用预编译

命令将该函数所在文

件包括到用户源文件中,系统自动去调用.

3. 以下函数形式正确的是__

_D__

_____。

(A) double fun(int x,int y)

{ int z=x+y;return z; }

(B) fun(int x,y)

{ int z;

return z; }

(C) fun(x,y)

{ int x,y; double z;

z=x+y; return z; }

(D) double fun(int x,int y);

{ double z;

z=x+y;return z; }

4. 关于C语言以下说法正确的是__

__B___

___。

(A) 实参和与其对应的形参各占用独立的存储单元

(B) 实参和与其对应的形参共占用一个存储单元

(C) 只有当实参和与其对应的形参同名时才共占用存

储单元

(D) 形参是虚拟的,不占用存储单元

5. 若调用一个函数,且此函数中没有return语句,则正

确的说法是该函数____

__D_

___。

(A) 没有返回值

(B) 返回若干个系统默认值

(C) 能返回一个用户所希望的函数值

(D) 有返回值,但返回一个不确定的值

6. 按照C语言的规定以下说法不正确的是

___

_D__

____。

(A) 形参可以是常量、变量或表达式

(B) 实参可以为任意类型

(C) 实参可以是常量、变量或表达式,在传递给形参时,

要求实参必须有确定的值

(D) 形参与其对应的实参类型要求可以不一致

#include

main()

{char s[80], c1, c2 ; int i = 0, num = 0;

gets(s);

while(s[i] != ‘0’)

{ c1 = s[i];

if(i == 0 ) c2 = ‘ ‘;

else c2 = s[i–1];

if (

c1!=' '&&c2 ==' '

) num ++ ;

i++;

}

printf(“There are %d words.n”,num);

}(

两个单引号‘’之间有空格

)

7. 以下说法正确的是___

_C___

___。

(A) 定义函数时,形参的类型说明可以放在函数体内,

也可以放在函数体外

(B) return后边的值不能为表达式

(C) 如果函数值的类型与返回值类型不一致,以函数值

类型为准

(D) 如果形参与实参的类型不一致,以实参类型为准

8. C语言规定,简单变量做实参时,它和对应形参之间

的数据传递方式是__

_B_

______。

(A) 地址传递

(B) 单向值传递

(C) 由实参传给形参,再由形参传回给实参

(D) 由用户指定传递方式

9. C语言允许函数值类型缺省定义,此时该函数值隐含

的类型是___

_B__

_。

(A) float型

(B) int型

(C) long型

(D) double型

10. C语言规定,函数返回值的类型是由___

_D__

____。

(A) return语句中的表达式类型所决定

(B) 调用该函数时的主调函数类型所决定

(C) 调用该函数时系统临时决定

(D) 在定义该函数时所指定的函数类型决定

11. 下面函数调用语句含有实参的个数为

___

_B_

_____。

func((a,b,c,d),(e,f,g));

(A) 1

(B) 2

(C) 4

(D) 以上都不对

12. 以下描述正确的是___

_A

______。

(A) 函数调用可以出现在执行语句或表达式中

(B) 函数调用不能做为一个函数的实参

(C) 函数调用可以做为一个函数的形参

(D) 以上都不正确

13. 在C语言程序中,以下描述正确的是____

B_

_____。

(A) 函数的定义可以嵌套,但函数的调用不可以嵌套

(B) 函数的定义不可以嵌套,但函数的调用可以嵌套

(C) 函数的定义和函数的调用均不可以嵌套

(D) 函数的定义和函数的调用均可以嵌套

14. 如果在一个函数的复合语句中定义了一个变量,则

该变量___

A_

_____。

(A) 只在该复合语句中有效,在该复合语句外无效

(B) 在该函数中任何位置都有效

(C) 在本程序的原文件范围内均有效

3

(D) 此定义方法错误,其变量为非法变量

15. 以下程序的正确运行结果是___

_D__

____。

#define MAX 10

int a[MAX],i;

main( )

{ printf("\

n");sub1();sub3(a);sub2();sub3(a); }

sub2()

{ int a[MAX],i,max;

max=5;

for(i=0;i<max;i++) a[i]=i;

}

sub1()

{ for(i=0;i<MAX;i++) a[i]=i+i;

}

sub3(int a[])

{ int i;

for(i=0;i<MAX;i++) printf("%d",a[i]);

printf("\n");

}

}

(A) 0 2 4 6 8 10 12 14 16 18

0 1 2 3 4

(B) 0 1 2 3 4

0 2 4 6 8 10 12 14 16 18

(C) 0 1 2 3 4 5 6 7 8 9

0 1 2 3 4

(D) 0 2 4 6 8 10 12 14 16 18

0 2 4 6 8 10 12 14 16 18

16. 以下程序的输出结果是__

A___

_____。

main( )

{

int k=4,m=1,p;

p=func(k,m);

printf("%d,",p);

p=func(k,m);

printf("%d",p);

}

func(int a,int b)

{

static int m,k=2;

k+=m+1;

m=k+a+b;

return(m);

}

(A) 8,17

(B) 8,16

(C) 8,20

(D) 8,8

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

B_

_____。

main()

{ int i=1, j=3;

printf("%d,",i++);

{ int i=0; i+=j*2;

printf("%d,%d,",i,j); }

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

(A) 1,6,3,1,3

(B) 1,6,3,2,3

(C) 1,6,3,6,3

(D) 1,7,3,2,3

18. 以下程序的输出结果是___

_B__

____。

main()

{ int a[]={1,2,3,4},i,x=0;

for(i=0; i<4; i++) { sub(a,&x);

printf("%d",x); }

printf("\n");

}

sub(int*s, int *y)

{ static int t=3;

*y=s[t]; t--;

}

(A) 1234

(B) 4321

(C) 0000

(D) 444412.

19. 以下程序的输出结果是__

_C__

_____。

void fun(int *s)

{ static int j=0;

do

s[j]+=s[j+1];

while(++j<2);

}

main( )

{ int k,a[10]={1,2,3,4,5};

for(k=1; k<3; k++) fun(a);

for(k=0; k<5; k++) printf("%d",a[k]);

}

(A) 34756

(B) 23445

(C) 35745

(D) 12345

20. 以下程序的输出结果是__

_D___

____。

f(int a)

{ int b=0;

static int c=3;

a=c++,b++;

return(a);

}

main( )

{ int a=2,i,k;

for(i=0; i<2; i++) k=f(a++);

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

}

(A) 3

(B) 6

(C) 5

(D) 4

21. 以下程序的输出结果是__

_B____

___。

int m=13;

int fun2(int x,int y)

{ int m=3;

return(x*y-m);

}

main( )

{ int a=7,b=5;

printf("%d\n",fun2(a,b)/m);

}

(A) 1

(B) 2

(C) 7

(D) 10

22. C语言中,形参缺省的存储类说明是___

_A__

____。

(A) auto()

(B) static(静态)

(C) register(寄存器)

(D) extern(外部)

23. 以下叙述中不正确的是_____

_C__

__。

(A) 一个变量的作用域完全取决于变量定义语句的位

(B) 全局变量可以在函数以外的任何部位进行定义

4

(C) 局部变量的"生存期"只限于本次函数调用,因此不

可能将局部变量的

运算结果保存至下一次调用

(D) 一个变量说明为static存储类是为了限制其他编

译单位的引用

二.填空题

1. 以下程序的输出结果是

_2,5,1,2,3,-2_

________。

main( )

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

c-=++b; b*=a+c;

{ int b=5,c=12;

c/=b*2; a-=c;

printf("%d,%d,%d,",a,b,c);

a+=--c;

}

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

}

2. 以下程序的输出结果是

_2468_

________。

void fun( )

{ static int a;

a+=2;

printf("%d",a); }

main( )

{ int cc;

for(cc=1; cc<=4; cc++) fun();

printf("\n");

}

3. 以下程序的输出结果是

funct result

is:12__

___。

unsigned funct(unsigned num)

{ unsigned int k=1;

do

{ k*=num%10; num/=10; }

while(num);

return k;

}

main()

{ unsigned int n=26;

printf("funct result is:%d\n",funct(n));

}

4. 以下程序的输出结果是

funct result

is:_***9.0__

_______。(*代表空格)

double sub(double x,double y,double z)

{ y-=1.0; z=z+x; return z; }

main()

{ double a=2.5,b=9.0;

printf("function running result is:%6.1f\

n",sub(b-a,a,a));

}

5. 下面pi函数的功能是,根据以下公式返回满足精度

ε要求的π的值。

根据以下算法要求补足所缺语句。

π

/2=1+1/3+1/3·2/5+1/3·2/5·3/7+1/3·2/5·3/7·4/9+…

double pi(double eps)

{ double s=0.0,t=1.0;

int n;

for(__

_n=1__

_____; t>eps; n++)

{ s+=t; t=n*t/(2*n+1); }

return (2.0* _

_s_

_______);

}

5


本文标签: 数组 函数 元素