> 文章列表 > 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语言期末考试 刷题(九)

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

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

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

目录

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

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

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

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

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


一、填空   共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)=======

a[0]

第4题

求字符串长度的库函数是【1】,只写函数名即可.

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

strlen

第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题

定义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

二、单选   共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)

答案:D

第2题

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

A:4个字节B:5个字节C:6个字节D:7个字节

答案:C

第3题

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

A:a[0][2*1]B:a[1][3]C:a[4-2][0]D:a[0][4]

答案:D

第4题

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

A:数组的长度B:数组的首地址C:数组每一个元素的地址D:数组每个元素中的值

答案:B

第5题

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

A:数组a的每个元素都可得到初值0B:二维数组a的第一维大小为1       C:因为二维数组a中初值的个数不能被第二维大小的值整除,
则第一维的大小等于所得商数再加1,故数组a的行数为1D:只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

答案:D

第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];

答案:D

第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,9B:8,9C:1,8D:9,8

答案:D

第8题

若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是().

A:&t[3][2]B:t[3]C:&t[1]D:t[2]

答案:D

第9题

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

A:a[0][2*1]B:a[1][3]C:a[4-2][0]D:a[0][4]

答案:D

第10题

有下面的程序段:

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

则().

A:运行后将输出chinaB:运行后将输出chC:运行后将输出chiD:编译出错

答案: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}};

答案:B

第12题

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

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

答案:C

第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;

答案:D

第14题

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

A:3B:6C:10D:20

答案:D

第15题

以下对二维数组a的正确说明是().

A:int a[3][]B:float a(3,4)C:double a[1][4]D:float a(3)(4)

答案:C

三、程序填空   共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

四、程序改错   共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);

五、程序设计   共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; //插入新元素

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