第18卷 一维数组的定义和使用 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》

2025-10-29
| 2份
| 24页
| 93人阅读
| 1人下载

内容正文:

编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。 本专辑第18卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】: (九)一维数组的定义和使用 湖南省普通高等学校对口招生考试 计算机应用类 《C语言程序设计》考点双析卷 第18卷 一维数组的定义和使用 学生练习卷 时间:45分钟 总分:100分 班级_______ 姓名_______ 学号_______ 成绩_______ 一、单项选择题(本大题共20小题,每题3分,共60分) 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是(     ) A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 【答案】C 【详解】在C语言中,引用数组元素时使用的数组下标必须是整型。这包括整型常量和整型表达式。 2.若有定义:int ch1[10];,则不能代表数组元素ch1[1]地址的是(   ) A.&ch1[0]+1 B.&ch1[l] C.&ch1[0]++ D.ch1+1 【答案】C 3.假定一个 int型变量占用两个字节,若有定义:int x[5]={0,2,4};则数组x在内存中所占字节数是(   ) A.6 B.10 C.20 D.3 【答案】B 4.以下对一维数组的定义中不正确的是(   ) A.double x[5]={2.0,0,6.0,8.0,10.0}; B.int y[5]={2,1,3,5,7,9}; C.char z[ ]={‘1’,‘2’,‘3’}; D.char h[ ]={‘\x10’,‘\xa’,‘\x8’}; 【答案】B 5.以下对一维数组a的定义中正确的是(   ) A.char a(10); B.int    a[0..10]; C.int a[10]; D.int c=10; int a[c]; 【答案】C 6.有以下程序 #include <stdio.h> void main() { int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) { case 0: switch(a[i]%2) {case 0:a[i]++;break; case 1:a[i]--;} break; case 1:a[i]=0; } for(i=0;i<4;i++) printf("%d",a[i]); printf(" "); } 程序运行后的输出结果是(   ) A.2 0 5 0 B.3 3 4 4 C.3 0 4 0 D.0 3 0 4 【答案】C 【详解】使用两个嵌套的 for 循环和 switch 语句来修改数组 a 的元素。外层 for 循环遍历数组索引,内层 switch 根据索引的奇偶性对数组元素进行操作。当索引 i 为偶数时,进一步检查数组元素 a[i] 的奇偶性。如果是偶数,将其加 1;如果是奇数,将其减 1。当索引 i 为奇数时,直接将数组元素 a[i] 设置为 0。 初始数组 a 是 {2, 3, 5, 4}。经过循环,数组变为 {3, 0, 4, 0}。最后的 for 循环打印数组元素,输出结果是 3040。 7.在C语言的一维数组中,以下选项中的值会被默认初始化为0的是(   ) A.float数组 B.char数组 C.int数组 D.string数组 【答案】C 【详解】在C语言中,未进行显式初始化的一维数组元素会被默认初始化为0。 8.可以使用下列哪种方式对一维整型数组的所有元素进行赋值(   ) A.arr[0] = {1, 2, 3, 4}; B.int arr[4] = {1, 2, 3, 4}; C.arr = {1, 2, 3, 4}; D.int arr[] = {1, 2, 3, 4}; 【答案】D 【详解】在定义数组时可以使用选项D的方式对一维整型数组进行赋值,其中省略了数组大小。 9.在定义一维数组时可以省略数组大小, A.但必须在初始化时指定数组大小 B.但无法进行初始化 C.但此时数组大小默认为0 D.但必须在后续代码中进行赋值来确定数组大小 【答案】A 【详解】在定义一维数组时可以省略数组大小,但在初始化时需要指定数组大小。 10.下列哪种初始化方式对整型数组是合法的(   ) A.int arr[] = {1, 2, 3}; B.int arr[3]; C.int arr[3] = {1, 2, 3, 4}; D.int arr[3] = {1, 2}; 【答案】A 【详解】选项A中给出了正确的整型数组初始化方式,提供了与数组大小相符合的初始化值。 11.C语言中的一维数组初始化必须满足的条件是(   ) A.初始化值的个数不能超过数组的大小 B.初始化值的个数必须与数组的大小相同 C.初始化值的个数可以少于或等于数组的大小 D.不需要满足任何条件,初始化个数没有限制 【答案】C 【详解】初始化一维数组时,可以提供少于或等于数组大小的初始化值,多余的元素会被初始化为0。 12.在C语言中,以下对一维数组初始化说法正确的是(   ) A.只能在定义数组时进行初始化,之后无法更改 B.可以在定义数组时进行初始化,也可以在后续代码中进行赋值 C.只能在后续代码中进行赋值,不能在定义数组时进行初始化 D.一维数组无法进行初始化 【答案】B 【详解】一维数组可以在定义时进行初始化,并且在后续代码中也可以对数组进行赋值操作。 13.执行int a[3]={1};后,a[1]的值是(   ) A.0 B.1 C.随机值 D.语法错误 【答案】A 14.数组名arr表示的是(   ) A.第一个元素的地址 B.所有元素的地址 C.最后一个元素的地址 D.数组长度 【答案】A 15.执行int a[5]={1,2};后,a[4]的值是(   ) A.0 B.随机值 C.1 D.编译错误 【答案】A 16.执行下列语句后,a[6]的值为(   ) int a[10]={12,23,5,20,3,6,18}; a[6]+=a[2]+a[5]+a[4]-a[3]; A.20 B.12 C.18 D.24 【答案】B 【详解】执行语句 a[6]+=a[2]+a[5]+a[4]-a[3]; 后,a[6] 的新值是初始值 18 加上表达式 5+6+3-20 的结果,即 18 + (-6) = 12。因此,a[6] 的值变为 12。 17.下列哪项是一维数组 b 的正确初始化方式(   ) A.int b[5] = {0, 1, 2, 3}; B.int b[5] = {}; C.int b[] = {4, 5, 6, 7, 8}; D.int b[5] = "Hello"; 【答案】B 【详解】数组的大小和初始化值的数量不匹配,在C语言中,使用花括号 {} 可以省略数组的初始化值,系统会自动初始化为0。字符串字面量应该用来初始化字符数组,而不是整型数组。 18.在C语言中,关于一维数组的特性,以下叙述正确的是(   ) A.数组的大小在定义后可以改变,但数组内的元素必须是同一数据类型。 B.数组的大小在定义后是固定的,但可以包含不同类型的数据。 C.数组的大小在定义后是固定的,且数组内的所有元素必须是同一数据类型。 D.数组的大小是可变的,也可以包含不同类型的数据。 【答案】C 【详解】C语言中的数组是一种固定长度的序列,其大小在数组定义时确定,并在程序的整个运行期间保持不变。此外,数组的所有元素必须是相同的数据类型。 19.在C语言中,以下哪个选项是一维数组 a 的正确声明语句(   ) A.int a(10); B.int N=5, a[N]; C.int n; D.#define SIZE 9 int a[SIZE]; 【答案】D 【详解】在C语言中,数组的声明不需要使用圆括号。数组的大小在C语言中必须在编译时就确定,不能由运行时的变量值决定。使用预处理器定义了一个宏 SIZE,其值为9,然后声明了一个大小为 SIZE 的整型数组 a。这是一个有效的数组声明语句。 20.下面程序中有错误的行是 (每行程序前面的数字表示行号)(   ) 1 main() 2 { 3 float a[3]={1}; 4 int i; 5 scanf(“%f”,a); 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“a[0]=%d ”,a[0]); 8 } A.3 B.6 C.7 D.5 【答案】C 【详解】printf中的格式说明符应该是%f,因为a[0]是float类型的,而不是%d。 二、程序设计题(本大题共4小题,每题10分,共40分) 21.函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中, 接着把a所指数组中的最大值放在a[1]元素中,再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3], 以此类推。例如,若a所指数组中的数据最初排列为: 9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为: 1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标   #include<stdio.h>   #define N 9   void fun(int a[],int n)   {       int i,j,max,min,px,pn,t;       for(i=0;i<n-1;i+=2)       {           /*******space*******/           /*******space*******/ }                 if (pn != i)       {             t = a[i];             a[i] = min;             a[pn] = t;             if(px == i)  px =pn;       }       if (px != i+1)       {               t=a[i+1];             a[i+1]=max;             a[px]=t;       } } void main() {           int  b[N]={9,1,4,2,3,6,5,8,7}, i;         printf("【The original data:】 ");          printf("【");         for (i=0; i<N; i++)                 printf("%4d ", b[i]);         printf("】 ");         fun(b, N);         printf("【The data after moving:】 ");         for (i=0; i<N; i++)                 printf("%4d ",b[i]);         printf(" "); } 【答案】max=min=a[i]; px=pn=i; for(j=i+1;j<n;j++) {                   if (max<a[j]){                        max = a[j];                        px = j;                   }                   if (min>a[j]){                        min = a[j];                        pn = j;                      } } 【详解】把该数组中分为按照每两个分为多轮,每一轮找到当前的最大值和最小值,然后放在指定的位置,进行多次即可。 22.编写函数fun,其功能是:求出1~100之间能被8和9整除,但不同同时被8和9整除的所有整数,并将其放在a所指的数组中,通过n返回这些个数。    #include<stdio.h>    void fun(int *a,int *n)    {         /*******space*******/        /*******space*******/    }    main(){        int b[100],n,k;        fun(b,&n);        for(k=0;k<n;k++)        {            if((k+1)%10==0)                printf(" ");            else                printf("%5d",b[k]);        }    } 【答案】int i,j=0; for(i=1;i<100;i++)         {             if((i%8==0 && i%9!=0) || (i%8!=0 && i%9==0))   a[j++]=i;         } *n=j; 【详解】函数主要处理满足条件的数满将这些数放在数组中,所以在自定义函数里取出1~100以内的数,注意该条件的判断,将满足的数存放在接受实参b数组的形参a中。 23.函数功能:将一维数组(不超过50个元素)中的最小元素和最大元素交换。输入的第一个值是一维数组元素的个数,然后输入数组的元素值。    #include<stdio.h>    void fun(int a[],int n)    {        Int i,min,max,min_id=0,max_id=0;        /*******space*******/       /*******space*******/    }    void main()    {       int i,a[50],n;       scanf("%d",&n);       for(i=0;i<n;i++)       {           scanf("%d",&a[i]);       }       fun(a,n);       for(i=0;i<n;i++){           printf("%d",a[i]);       }   } 【答案】min=max=a[0];        for(i=1;i<n;i++)        {            if(max<a[i]){                max=a[i];                max_id=i;            }            if(min>a[i]){                min=a[i];                min_id=i;            }        }        t=a[max_id];        a[max_id]=a[min_id]; a[min_id]=t; 【详解】假设数组中的第一个值为最大值也为最小值,然后记下最大值和最小值给max和min,同时记下最大值的索引和最小值的索引max_id和min_id。拿着最大值和最小值去和后面所有的值进行比较,一旦找到更大的,则改变最大值和最大值的索引,一旦找到更小的,则改变最小值和最小值的索引。最后拿着最大值索引以及最小值的索引,二者交换位置即可。 24.以下程序的功能是删去一维数组s中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。    #include<stdio.h>    int del(int s[],int n){        int i,j=1;        /*******space*******/        /*******space*******/    }    int main(){        Int s[]={2,3,3,3,3,4,4,4,4,4,10,10,10,10,13,13,15,15,18,18};        int i,m,n=sizeof(s)/sizeof(int);        for(i=0;i<n;i++)           printf("%d ",s[i]);        m=del(s,n); printf(" ");        for(i=0;i<m;i++)            printf("%d ",s[i]);        printf(" ");        return 1;    } 【答案】for(i=0;i<n;i++){             if(s[i]!=s[j]){                   j++;                   s[j]=s[i];             } } 【详解】去重的固定方法,i从0开始,j从1开始,i和j用作判断是否相等的索引,同时j还做重新存放值的索引,当两个不相等时,往j位置存放即可,注意存放时j的索引先+1。 试卷第6页,共6页 试卷第5页,共6页 学科网(北京)股份有限公司 $ 编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。 本专辑第18卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】: (九)一维数组的定义和使用 湖南省普通高等学校对口招生考试 计算机应用类 《C语言程序设计》考点双析卷 第18卷 一维数组的定义和使用 学生练习卷 时间:45分钟 总分:100分 班级_______ 姓名_______ 学号_______ 成绩_______ 一、单项选择题(本大题共20小题,每题3分,共60分) 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是(     ) A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 2.若有定义:int ch1[10];,则不能代表数组元素ch1[1]地址的是(   ) A.&ch1[0]+1 B.&ch1[l] C.&ch1[0]++ D.ch1+1 3.假定一个 int型变量占用两个字节,若有定义:int x[5]={0,2,4};则数组x在内存中所占字节数是(   ) A.6 B.10 C.20 D.3 4.以下对一维数组的定义中不正确的是(   ) A.double x[5]={2.0,0,6.0,8.0,10.0}; B.int y[5]={2,1,3,5,7,9}; C.char z[ ]={‘1’,‘2’,‘3’}; D.char h[ ]={‘\x10’,‘\xa’,‘\x8’}; 5.以下对一维数组a的定义中正确的是(   ) A.char a(10); B.int    a[0..10]; C.int a[10]; D.int c=10; int a[c]; 6.有以下程序 #include <stdio.h> void main() { int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) { case 0: switch(a[i]%2) {case 0:a[i]++;break; case 1:a[i]--;} break; case 1:a[i]=0; } for(i=0;i<4;i++) printf("%d",a[i]); printf(" "); } 程序运行后的输出结果是(   ) A.2 0 5 0 B.3 3 4 4 C.3 0 4 0 D.0 3 0 4 7.在C语言的一维数组中,以下选项中的值会被默认初始化为0的是(   ) A.float数组 B.char数组 C.int数组 D.string数组 8.可以使用下列哪种方式对一维整型数组的所有元素进行赋值(   ) A.arr[0] = {1, 2, 3, 4}; B.int arr[4] = {1, 2, 3, 4}; C.arr = {1, 2, 3, 4}; D.int arr[] = {1, 2, 3, 4}; 9.在定义一维数组时可以省略数组大小, A.但必须在初始化时指定数组大小 B.但无法进行初始化 C.但此时数组大小默认为0 D.但必须在后续代码中进行赋值来确定数组大小 10.下列哪种初始化方式对整型数组是合法的(   ) A.int arr[] = {1, 2, 3}; B.int arr[3]; C.int arr[3] = {1, 2, 3, 4}; D.int arr[3] = {1, 2}; 11.C语言中的一维数组初始化必须满足的条件是(   ) A.初始化值的个数不能超过数组的大小 B.初始化值的个数必须与数组的大小相同 C.初始化值的个数可以少于或等于数组的大小 D.不需要满足任何条件,初始化个数没有限制 12.在C语言中,以下对一维数组初始化说法正确的是(   ) A.只能在定义数组时进行初始化,之后无法更改 B.可以在定义数组时进行初始化,也可以在后续代码中进行赋值 C.只能在后续代码中进行赋值,不能在定义数组时进行初始化 D.一维数组无法进行初始化 13.执行int a[3]={1};后,a[1]的值是(   ) A.0 B.1 C.随机值 D.语法错误 14.数组名arr表示的是(   ) A.第一个元素的地址 B.所有元素的地址 C.最后一个元素的地址 D.数组长度 15.执行int a[5]={1,2};后,a[4]的值是(   ) A.0 B.随机值 C.1 D.编译错误 16.执行下列语句后,a[6]的值为(   ) int a[10]={12,23,5,20,3,6,18}; a[6]+=a[2]+a[5]+a[4]-a[3]; A.20 B.12 C.18 D.24 17.下列哪项是一维数组 b 的正确初始化方式(   ) A.int b[5] = {0, 1, 2, 3}; B.int b[5] = {}; C.int b[] = {4, 5, 6, 7, 8}; D.int b[5] = "Hello"; 18.在C语言中,关于一维数组的特性,以下叙述正确的是(   ) A.数组的大小在定义后可以改变,但数组内的元素必须是同一数据类型。 B.数组的大小在定义后是固定的,但可以包含不同类型的数据。 C.数组的大小在定义后是固定的,且数组内的所有元素必须是同一数据类型。 D.数组的大小是可变的,也可以包含不同类型的数据。 19.在C语言中,以下哪个选项是一维数组 a 的正确声明语句(   ) A.int a(10); B.int N=5, a[N]; C.int n; D.#define SIZE 9 int a[SIZE]; 20.下面程序中有错误的行是 (每行程序前面的数字表示行号)(   ) 1 main() 2 { 3 float a[3]={1}; 4 int i; 5 scanf(“%f”,a); 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“a[0]=%d ”,a[0]); 8 } A.3 B.6 C.7 D.5 二、程序设计题(本大题共4小题,每题10分,共40分) 21.函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中, 接着把a所指数组中的最大值放在a[1]元素中,再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3], 以此类推。例如,若a所指数组中的数据最初排列为: 9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为: 1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标   #include<stdio.h>   #define N 9   void fun(int a[],int n)   {       int i,j,max,min,px,pn,t;       for(i=0;i<n-1;i+=2)       {           /*******space*******/           /*******space*******/ }                 if (pn != i)       {             t = a[i];             a[i] = min;             a[pn] = t;             if(px == i)  px =pn;       }       if (px != i+1)       {               t=a[i+1];             a[i+1]=max;             a[px]=t;       } } void main() {           int  b[N]={9,1,4,2,3,6,5,8,7}, i;         printf("【The original data:】 ");          printf("【");         for (i=0; i<N; i++)                 printf("%4d ", b[i]);         printf("】 ");         fun(b, N);         printf("【The data after moving:】 ");         for (i=0; i<N; i++)                 printf("%4d ",b[i]);         printf(" "); } 22.编写函数fun,其功能是:求出1~100之间能被8和9整除,但不同同时被8和9整除的所有整数,并将其放在a所指的数组中,通过n返回这些个数。    #include<stdio.h>    void fun(int *a,int *n)    {         /*******space*******/        /*******space*******/    }    main(){        int b[100],n,k;        fun(b,&n);        for(k=0;k<n;k++)        {            if((k+1)%10==0)                printf(" ");            else                printf("%5d",b[k]);        }    } 23.函数功能:将一维数组(不超过50个元素)中的最小元素和最大元素交换。输入的第一个值是一维数组元素的个数,然后输入数组的元素值。    #include<stdio.h>    void fun(int a[],int n)    {        Int i,min,max,min_id=0,max_id=0;        /*******space*******/       /*******space*******/    }    void main()    {       int i,a[50],n;       scanf("%d",&n);       for(i=0;i<n;i++)       {           scanf("%d",&a[i]);       }       fun(a,n);       for(i=0;i<n;i++){           printf("%d",a[i]);       }   } 24.以下程序的功能是删去一维数组s中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。    #include<stdio.h>    int del(int s[],int n){        int i,j=1;        /*******space*******/        /*******space*******/    }    int main(){        Int s[]={2,3,3,3,3,4,4,4,4,4,10,10,10,10,13,13,15,15,18,18};        int i,m,n=sizeof(s)/sizeof(int);        for(i=0;i<n;i++)           printf("%d ",s[i]);        m=del(s,n); printf(" ");        for(i=0;i<m;i++)            printf("%d ",s[i]);        printf(" ");        return 1;    } 试卷第6页,共6页 试卷第5页,共6页 学科网(北京)股份有限公司 $

资源预览图

第18卷 一维数组的定义和使用 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
1
第18卷 一维数组的定义和使用 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
2
第18卷 一维数组的定义和使用 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。