C语言计算机二级/C语言期末考试 刷题(十二)数组专题一

收集了一些经典C语言计算机二级和C语言期末考试题库

整理不易,大家点赞收藏支持一下

祝大家计算机二级和期末考试都高分过

系列文章:

C语言计算机二级/C语言期末考试 刷题(一)

C语言计算机二级/C语言期末考试 刷题(二)

C语言计算机二级/C语言期末考试 刷题(三)

C语言计算机二级/C语言期末考试 刷题(四)

C语言计算机二级/C语言期末考试 刷题(五)

C语言计算机二级/C语言期末考试 刷题(六)

C语言计算机二级/C语言期末考试 刷题(七)

C语言计算机二级/C语言期末考试 刷题(八)

C语言计算机二级/C语言期末考试 刷题(九)

C语言计算机二级/C语言期末考试 刷题(十)函数专题

C语言计算机二级/C语言期末考试 刷题(十一)数据类型及输入输出专题

目录

一、填空   共10题 (共计10分)

二、单选   共20题 (共计20分)

三、程序填空   共2题 (共计20分)

四、程序改错   共1题 (共计20分)

五、程序设计   共1题 (共计30分)


一、填空   共10题 (共计10分)

1.

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

 #include<stdio.h>

 void main()

 {  char s[ ]="abcdef";

    s[3]='\0';

    printf("%s\n",s);  }

=======(答案1)=======

abc

2.

C语言中,数组元素的最小下标为【1】.

=======(答案1)=======

0

3.

复制字符串的库函数是【1】,只写函数名即可.

=======(答案1)=======

strcpy

4.

以下程序可求出所有水仙花数(提示:所谓水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数.如407=4*4*4+0*0*0+7*7*7,故407是一个水仙花数).请填空.

 #include<stdio.h>

 void main()

 {  int x,y,z,a[8],m,i=0;

    printf ("the special number are(in the arrange of 1000):\n");

    for(【1】;m++)

    {  x=m/100;

       y= 【2】;

       z=m%10;

       if(x*100+y*10+z= =x*x*x+y*y*y+z*z*z)

       {【3】;i++ ;}

    }

   for(x=0;x<i;x++)

   printf("%6d",a[x]);

 }
=======(答案1)=======
m=100;m<1000

=======(答案2)=======
m/10%10
=========或=========
m%100/10
=========或=========
(m-m/100*100)/10
=========或=========
m/10-m/100*10

=======(答案3)=======
a[i]=m

5.

C语言中,数组元素的下标下限为【1】.

=======(答案1)=======

0

6.

合并字符串的库函数是【1】,只写函数名即可.

=======(答案1)=======

strcat

7.

下列程序的输出结果是【1】 .

#define N 3

#define Y(n) ((N+1)*n)

void main()

{
	printf("%d\n", 2 * (N + Y(5 + 1)));

}

=======(答案1)=======

Y(n)=((N+1)*n)=4*5+1=21

2*(N+Y(5+1))=2*(3+21)=48

8.

下列程序的输出结果是【1】 .

#define N 20
fun(int a[], int n, int m)
{
	int i, j;
	for (i = m; i > n; i--)
		a[i + 1] = a[i];
}

void main()
{
	int i, a[N] = { 1,2,3,4,5,6,7,8,9,10 };
	fun(a, 2, 9);
	for (i = 0; i < 5; i++)
		printf("%d", a[i]);
}

=======(答案1)=======

1 2 3 4 4

9.

执行语句char str[81]="abcdef";后,字符串str结束标志存储在str[【1】]

 (在括号内填写下标值)中.

=======(答案1)=======

6

10.

若有定义:char s[ ]="china";

 则VC++系统为数组s开辟【1】个字节的内存单元.

=======(答案1)=======

6

二、单选   共20题 (共计20分)

第1题

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

A:int a[2][3]={0};

B:int a[][3]={
   
   {1,2},{0}};

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

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

答案:C

第2题

在C语言中,引用数组元素时,其数组下标的数据类型允许是().

A:整型常量

B:整型表达式

C:整型常量或整型表达式

D:任何类型的表达式

答案:C

第3题

当调用函数时,实参是一个数组名,则向函数传送的是().

A:数组的长度

B:数组的首地址

C:数组每一个元素的地址

D:数组每个元素中的值

答案:B

第4题

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

A:3

B:6

C:10

D:20

答案:D

第5题

下列定义数组的语句中不正确的是().

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

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

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

D:static int a[][]={
   
   {1,2,3},{4,5,6}};

答案:D

第6题

设有数组定义: char array [ ]="China"; 则数组 array所占的空间为().

A:4个字节

B:5个字节

C:6个字节

D:7个字节

答案:C

第7题

若有说明 int a[3][4];则对a数组元素的正确引用是().

A:a[2][4]

B:a[1,3]

C:a[1+1][0]

D:a(2)(1)

答案:C

第8题

若有

char s1[]="abc",s2[20],*t=s2;gets(t);

则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是().

A:if(strcmp(s1,s1)>0)puts(s2);

B:if(strcmp(s2,s1)>0)puts(s2);

C:if(strcmp(s2,t)>0)puts(s2);

D:if(strcmp(s1,t)>0)puts(s2);

答案:D

第9题

若有说明:int a[3][4];则数组a中各元素().

A:可在程序的运行阶段得到初值0

B:可在程序的编译阶段得到初值0

C:不能得到确定的初值

D:可在程序的编译或运行阶段得到初值0

答案:D

第10题

以下不能正确进行字符串赋初值的语句是().

A:char str[5]="good!";

B:char str[]="good!";

C:char *str="good!";

D:char str[5]={'g','o','o','d',0};

答案:A

第11题

若有说明:int a[ ][4]={0,0};,则下面不正确的叙述是().

A:数组a的每个元素都可得到初值0

B:二维数组a的第一维大小为1       

C:因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1

D:只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

答案:D

第12题

下列语句中,不正确的是().

A:static char a[2]={1,2};

B:static int a[2]={'1','2'};

C:static char a[2]={'1','2','3'};

D:static char a[2]={'1'};

答案:C

第13题

已定义两个字符数组a,b,则以下正确的输入格式是().

A:scanf("%s%s", a, b);

B:get(a, b);

C:scanf("%s%s", &a, &b);

D:gets("a"),gets("b");

答案:A

第14题

以下数组定义中不正确的是().

A:int a[2][3];

B:int b[][3]={0,1,2,3};

C:int c[100][100]={0};

D:int d[3][]={
   
   {1,2},{1,2,3},{1,2,3,4}};

答案:D

第15题

在C语言中,一维数组的定义方式为:类型说明符 数组名().

A:[整型常量表达式]

B:[整型表达式] 

C:[整型常量或整型表达式]

D:[整型常量]

答案:A

第16题

以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序.       

#include<stdio.h>
void sort(int a[], int n)
{
	int i, j, t;
	for (i = 0; i < n - 1; i++)
		for (j = i + 1; j < n; j++)
			if (a[i] < a[j])
			{
				t = a[i]; a[i] = a[j]; a[j] = t;
			}
}
void main()
{
	int aa[10] = { 1,2,3,4,5,6,7,8,9,10 }, i;
	sort(&aa[3], 5);
	for (i = 0; i < 10; i++)
		printf("%d,", aa[i]);
	printf("\n");
}

程序运行后的输出结果是().

A:1,2,3,4,5,6,7,8,9,10

B:10,9,8,7,6,5,4,3,2,1

C:1,2,3,8,7,6,5,4,9,10,

D:1,2,10,9,8,7,6,5,4,3

答案:C

第17题

int i,j,a[2][3];按照数组a的元素在内存的排列次序,不能将数1,2,3,4,5,6存入a数组的是().

A:for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;

B:for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;

C:for(i=0;i<6;i++)a[i/3][i%3]=i+1;

D:for(i=1;i<=6;i++)a[i][i]=i;

答案:D

第18题

函数调用:strcat(strcpy(str1,str2),str3)的功能是().

A:将串str1复制到串str2中后再连接到串str3之后

B:将串str1连接到串str2之后再复制到串str3之后

C:将串str2连接到串str1之后再将串str1复制到串str3中

D:将串str2复制到串str1中后再将串str3连接到串str1之后

答案:D

第19题

下列字符数组长度为5的是().

A:char a[]={'h', 'a', 'b', 'c', '\0'};

B:char b[]= {'h', 'a', 'b', 'c', 'd', '\0'};

C:char c[10]= {'h', 'a', 'b', 'c', 'd'};

D:char d[6]= {'h', 'a', 'b', 'c', '\0' };

答案:A

第20题

若有说明 int a[3][4];则a数组元素的非法引用是().

A:a[0][2*1]

B:a[1][3]

C:a[4-2][0]

D:a[0][4]

答案:D

三、程序填空   共2题 (共计20分)

第1题

题目:下列给定程序中,函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放
     到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。

例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所
     指数组中的数据为:9、1、3、5、7,返回值为5。
#include <stdio.h>
#define N 9
int fun(int a[], int n)
{
	int i, j;
	j = 0;
	for (i = 0; i < n; i++)
		if (a[i] % 2 == 【 ? 】)
		{
			a[j] = a[i]; 【 ? 】;
		}
	return 【 ? 】;
}

main()
{
	int b[N] = { 9,1,4,2,3,6,5,8,7 }, i, n;
	printf("\nThe original data  :\n");
	for (i = 0; i < N; i++) printf("%4d ", b[i]);
	printf("\n");
	n = fun(b, N);
	printf("\nThe number of odd  : %d \n", n);
	printf("\nThe odd number  :\n");
	for (i = 0; i < n; i++) printf("%4d ", b[i]);
	printf("\n");
}

答案:

=======(答案1)=======
1

=======(答案2)=======
j++

=======(答案3)=======
j

第2题

题目:给定程序中,函数fun的作用是:统计整型变量m中各数字出现的次数,并存放到数组a中,
     其中:a[0]存放0出现的次数,a[1]存放1出现的次数,…… a[9]存放9出现的次数。 

例如:若m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1,  
#include <stdio.h>
void fun(int m, int a[10])
{
	int i;
	for (i = 0; i < 10; i++)
		【 ? 】 = 0;
	while (m > 0)
	{
		i = 【 ? 】;
		a[i]++;
		m = 【 ? 】;
	}
}

main()
{
	int m, a[10], i;
	printf("请输入一个整数 :  ");
	scanf("%d", &m);
	fun(m, a);
	for (i = 0; i < 10; i++)
		printf("%d,", a[i]);
	printf("\n");
}

答案:

=======(答案1)=======
a[i]

=======(答案2)=======
m%10

=======(答案3)=======
m/10

四、程序改错   共1题 (共计20分)

第1题

功能:利用二维数组输出如图所示的图形。

        *******

         *****

          ***

           *

          ***

         *****

        *******
#include <stdio.h>
#include <conio.h>
#define N= 7
main()
{
	char a[N][N];
	int i, j, z;
	for (i = 0; i < N; i++)
		for (j = 0; j < N; j++)
			a[i][j] = ;
	z = 0;
	for (i = 0; i < (N + 1) / 2; i++)
	{
		for (j = z; j < N - z; j++)
			a[i][j] = '*';
		z = z + 1;
	}
	z = 0;
	for (i = (N + 1) / 2; i < N; i++)
	{
		z = z - 1;
		for (j = z; j < N - z; j++)
			a[i][j] = '*';
	}
	for (i = 0; i < N; i++)
	{
		for (j = 0; j < N; j++)
			printf("%d", a[i][j]);
		printf("\n");
	}
}

答案:

=======(答案1)=======
#define N  7

=======(答案2)=======
a[i][j]=' ';

=======(答案3)=======
z=z-1;
=========或=========
z--;
=========或=========
z=-1+z;

=======(答案4)=======
printf("%c",a[i][j]);

五、程序设计   共1题 (共计30分)

第1题

题目:(一维数组)将1-200中所有11的倍数存放到一个一维数组中,并输出。
#include <stdio.h>
void main()
{
	int i, j = 0, a[100];
	/**********Program**********/




	/**********  End  **********/
	for (i = 0; i < j; i++)
		printf("%d ", a[i]);
	printf("\n");
}

答案:

for (i = 1; i < 200; i++)
{
	if (i % 11 == 0)
	{
		a[j] = i;
		j++;
	}
}

若有错误或疑问,欢迎评论区留言讨论。

猜你喜欢

转载自blog.csdn.net/qq_57342311/article/details/129888172
今日推荐