C Language Computer Level 2/C Language Final Exam Questions (13) Array Тема 2

Сборник классического компьютерного уровня второго уровня языка C и банка вопросов для выпускного экзамена по языку C

Это не просто организовать, ставьте лайк и собирайте, чтобы поддержать

Желаю всем высоких баллов по компу второго уровня и выпускных экзаменов

Серия статей:

C Language Computer Level 2/C Language Final Exam Questions (1)

C Language Computer Level 2/C Language Final Exam Questions (2)

C Language Computer Level 2/C Language Final Exam Questions (3)

C Language Computer Level 2/C Language Final Exam Questions (4)

C Language Computer Level 2/C Language Final Exam Questions (5)

C Language Computer Level 2/C Language Final Exam Questions (6)

C Language Computer Level 2/C Language Final Exam Questions (7)

C Language Computer Level 2/C Language Final Exam Questions (8)

C Language Computer Level 2/C Language Final Exam Questions (9)

C Language Computer Level 2/C Language Final Exam Вопросы (10) Функциональные темы

C Language Computer Level 2/C Language Final Exam Questions (11) Темы по типам данных, вводу и выводу

C Language Computer Level 2/C Language Final Exam Вопросы (12) Array Тема 1

Оглавление

1. Заполните пропуски, всего 10 вопросов (всего 10 баллов)

2. Один выбор, всего 15 вопросов (всего 15 баллов)

3. Программа для заполнения пропусков, всего 2 вопроса (всего 30 баллов)

4. Исправление ошибок в программе Всего 1 вопрос (всего 15 баллов)

V. Разработка программы Всего 1 вопрос (всего 30 баллов)


1. Заполните пропуски, всего 10 вопросов (всего 10 баллов)

Вопрос 1

Если существует следующий массив a, элементы массива: a[0]~a[9], его значение равно

  9 4 12 8 2 10 7 5 1 3

 Минимальное значение нижнего индекса, доступное для этого массива, равно【1】.

=======(Ответ 1)=======

0

вопрос 2

Если существует следующий массив a, элементы массива: a[0]~a[9], его значение равно

 9 4 12 8 2 10 7 5 1 3

 Среди элементов массива значение нижнего индекса элемента с наибольшим значением равно [1].

=======(Ответ 1)=======

2

Вопрос 3

В порядке памяти все элементы массива char a[2] равны a[1] и [1].

=======(Ответ 1)=======

а[0]

Вопрос 4

Библиотечная функция для нахождения длины строки — [1], просто напишите имя функции.

=======(Ответ 1)=======

стрлен

Вопрос 5

Если существует следующий массив a, элементы массива: a[0]~a[9], его значение равно

 9 4 12 8 2 10 7 5 1 3

 Среди элементов массива значение нижнего индекса элемента с наименьшим значением равно [1].

=======(Ответ 1)=======

8

Вопрос 6

Массив занимает непрерывную область хранения в памяти, и [1] представляет его первый адрес.

=======(Ответ 1)=======

имя массива

Вопрос 7

Библиотечная функция для копирования строк — [1], просто напишите имя функции.

=======(Ответ 1)=======

strcpy

Вопрос 8

В языке C минимальный нижний индекс элемента массива равен [1].

=======(Ответ 1)=======

0

Вопрос 9

Define int a[2][3] означает, что количество элементов в массиве a равно [1].

=======(Ответ 1)=======

6

Вопрос 10

Введите 1 2 3 4 5 6 7 8 9 с клавиатуры, и результат вывода после выполнения будет 【1】.

main()

{   int a[3][3],i,sum=0;

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

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

           scanf("%d",&a[i][j]);

   printf("\n");

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

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

 }

=======(Ответ 1)=======

15

2. Один выбор, всего 15 вопросов (всего 15 баллов)

Вопрос 1

Чтобы определить, больше ли строка s1, чем строка s2, используйте ().

A:if(s1>s2)

B:if(strcmp(s1,s2))

C:if(strcmp(s2,s1)>0)

D:if(strcmp(s1,s2)>0)

Ответ: Д

вопрос 2

Если есть определение массива: char array[ ]="China";, то пространство, занимаемое массивом array, равно ().

A:4个字节

B:5个字节

C:6个字节

D:7个字节

Ответ: С

Вопрос 3

Если есть описание int a[3][4], то недопустимой ссылкой на элемент массива будет ().

A:a[0][2*1]

B:a[1][3]

C:a[4-2][0]

D:a[0][4]

Ответ: Д

Вопрос 4

При вызове функции фактическим параметром является имя массива, и функция передается в ().

A:数组的长度

B:数组的首地址

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

D:数组每个元素中的值

Ответ: Б

Вопрос 5

Если есть объяснение: 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

Ответ: Д

Вопрос 6

Правильное описание следующего одномерного целочисленного массива a есть ().

A:int a(10);

B:int n=10,a[n];

C:int n; scanf("%d",&n); int a[n];

D:#define SIZE 10  (换行)  int a[SIZE];

Ответ: Д

Вопрос 7

Имеются следующие программы:

        #include<stdio.h>

        #include<string.h>

        void main()

        {  char a[ ]={'a','b','c','d','e','f','g','h','\0'};

           int i,j;

           i=sizeof(a);j=strlen(a);

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

Вывод программы после запуска ().

A:9,9

B:8,9

C:1,8

D:9,8

Ответ: Д

Вопрос 8

Если есть следующее определение: int t[3][2]; выражение, которое может правильно представить адрес элемента массива t, будет ().

A:&t[3][2]

B:t[3]

C:&t[1]

D:t[2]

Ответ: Д

Вопрос 9

Если есть описание: int a[3][4], то недопустимой ссылкой на элемент массива будет ().

A:a[0][2*1]

B:a[1][3]

C:a[4-2][0]

D:a[0][4]

Ответ: Д

Вопрос 10

Есть следующий сегмент программы:

        char a[3],b[ ]="china";
        a=b;
        printf("%s",a);

но().

A:运行后将输出china

B:运行后将输出ch

C:运行后将输出chi

D:编译出错

Ответ: Д

Вопрос 11

Следующим оператором, который может правильно инициализировать двумерный массив a, является ().

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

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

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

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

Ответ: Б

Вопрос 12

Если есть инструкция int a[3][4]; тогда правильная ссылка на элемент массива a будет ().

A:a[2][4]

B:a[1,3]

C:a[1+1][0]

D:a(2)(1)

Ответ: С

Вопрос 13

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;

Ответ: Д

Вопрос 14

Предполагая, что переменная типа int занимает два байта, она имеет определение: int x[10]={0,2,4};, тогда количество байтов, занимаемых массивом x в памяти, равно ().

A:3

B:6

C:10

D:20

Ответ: Д

Вопрос 15

Правильное описание следующего двумерного массива a есть ().

A:int a[3][]

B:float a(3,4)

C:double a[1][4]

D:float a(3)(4)

Ответ: С

3. Программа для заполнения пропусков, всего 2 вопроса (всего 30 баллов)

Вопрос 1

题目:给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处
     于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在
     主函数中输出处理后的数据序列,并将中间数作为函数值返回。

例如:有9个正整数:1  5  7  23  87  5  8  21  45   按升序排列时的中间数为:8
     处理后主函数中输出的数列为:8  8  8  23  87  8  8  21  45
#include <stdio.h>
#define N 9
int fun(int x[])
{
	int i, j, k, t, mid, b[N];
	for (i = 0; i < N; i++)
		b[i] = x[i];
	for (i = 0; i <= N / 2; i++)
	{
		k = i;
		for (j = i + 1; j < N; j++)
			if (b[k] > b[j])
				k = j;
		if (k != i)
		{
			t = b[i];
			b[i] = 【 ? 】;
			b[k] = t;
		}
	}
	mid = b[【 ? 】];
	for (i = 0; i < N; i++)
		if (x[i] 【 ? 】 mid)
			x[i] = mid;
	return mid;
}

main()
{
	int i, x[N] = { 1,5,7,23,87,5,8,21,45 };
	for (i = 0; i < N; i++)
		printf("%d ", x[i]);
	printf("\nThe mid data is: %d\n", fun(x));
	for (i = 0; i < N; i++)
		printf("%d ", x[i]);
	printf("\n");
}

Отвечать:

=======(答案1)=======
b[k]

=======(答案2)=======
4
=========或=========
N/2

=======(答案3)=======
<

вопрос 2

题目:求数组a[5]中相邻元素的最大公约数,并保存到数组b[5]中
     (a[4]与a[0]看作相邻元素)。

例如:a[5]={18,66,38,87,15}
     b[5]={6,2,1,3,3}
#include <stdio.h>
#define M 5
void Calculate(int a[], int n, int b[])
{
	int i, x, y, r;
	for (i = 0; i < n; i++)
	{
		x = a[i];
		y = a[【 ? 】];
		do
		{
			【 ? 】;
			x = y;
			y = r;
		} while (r);
		b[i] = x;
	}
}

void main()
{
	int i, n = 5, a[5] = { 18,66,38,87,15 }, b[5] = { 0 };
	Calculate(a, n, b);
	for (i = 0; i < n; i++)
		printf("%3d、%3d的最大公约数:%3d\n", a[i], a[(i + 1) % n], b[i]);
}

Отвечать:

=======(答案1)=======
(i+1)%n
=========或=========
(1+i)%n

=======(答案2)=======
r=x%y

4. Исправление ошибок в программе Всего 1 вопрос (всего 15 баллов)

Вопрос 1

功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输
     出主对角线上的元素之和sum。
#include <stdio.h>
void fun()
{
	int a[3][3], sum;
	int i, j;
	a = 0;
	for (i = 0; i < 3; i++)
		for (j = 0; j < 3; j++)
			scanf("%d", a[i][j]);
	for (i = 0; i < 3; i++)
		sum = sum + a[i][j];
	printf("sum=%f\n", sum);
}

main()
{
	fun();
}

Отвечать:

=======(答案1)=======
sum=0;

=======(答案2)=======
scanf("%d",&a[i][j]);

=======(答案3)=======
sum=sum+a[i][i];
=========或=========
sum+=a[i][i];

=======(答案4)=======
printf("sum=%d\n",sum);

V. Разработка программы Всего 1 вопрос (всего 30 баллов)

Вопрос 1

题目:(一维数组)有n个已经按由小到大排好序的整数,再输入一个整数,
      将其插入到这批数据中,要求插入该元素后仍然按由小到大的顺序排列。
#include <stdio.h>
#define N 11
void main()
{
	int a[N], x, p;
	int i;
	printf("Please input %d numbers:", N - 1);
	for (i = 0; i <= N - 2; i++)
		scanf("%d", &a[i]);
	printf("Please input x to be intert:");
	scanf("%d", &x);
	/**********Program**********/



	/**********  End  **********/
	for (i = 0; i <= N - 1; i++)//结果
		printf("%5d", a[i]);
	printf("\n");
}

Отвечать:

for (i = 0; i < N - 1; i++)//寻找插入点,并将插入点保存到p中
{
	if (a[i] > x)
	{
		p = i;
		break;
	}
}
printf("i=%d\n", p);
for (i = N - 2; i >= p; i--)//插入点之后元素后移一位,为新元素空出位置
	a[i + 1] = a[i];
a[p] = x; //插入新元素

Если у вас есть какие-либо ошибки или вопросы, пожалуйста, оставьте сообщение в области комментариев для обсуждения.

Supongo que te gusta

Origin blog.csdn.net/qq_57342311/article/details/129891419
Recomendado
Clasificación