内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第15练,内容是5.1 一维数组的定义和使用。
《编程语言基础——C语言》(第5版)一课一练 第15练
5.1 一维数组的定义和使用
一、单选题
1. 以下一维数组定义中,合法的是( )
A. int a[10];
B. int a(10);
C. int n=10; int a[n];
D. int a[10,5];
2. 定义 int a[10]; 后,以下对数组元素的引用中,合法的是( )
A. a[10] = 5;
B. a[-1] = 5;
C. a[0] = 5;
D. a[5.5] = 5;
3. 以下对一维数组初始化的描述中,正确的是( )
A. int a[5]={1,2,3,4,5,6}; 是将6个元素赋给长度为5的数组
B. int a[]; 不写长度是合法的定义方式
C. int a[5]={0*5}; 可使所有元素初始化为0
D. int a[5]={1,2,3}; 则a[3]和a[4]的值为0
4. 定义 int a[] = {1, 3, 5, 7, 9}; 则数组a的长度是( )
A. 4
B. 5
C. 10
D. 不确定
5. 有以下程序段:
int i, a[5] = {2, 4, 6, 8, 10};
for (i = 1; i < 5; i++)
a[i] = a[i-1] + a[i];
执行后a[4]的值是( )
A. 10
B. 30
C. 20
D. 28
6. 关于数组在内存中的存储方式,正确的描述是( )
A. 数组元素在内存中连续存放,数组名表示首地址
B. 数组元素在内存中随机存放
C. 数组元素按字母顺序排列
D. 数组元素存放在不同的内存区域
7. 有以下程序段:
int a[5] = {0}, i;
for (i = 0; i < 5; i++)
scanf("%d", &a[i]);
若输入: 10 20 30 40 50,则a[2]的值是( )
A. 10
B. 20
C. 30
D. 0
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
main()
{
int i, a[8] = {1, 1};
for (i = 2; i < 8; i++)
a[i] = a[i-1] + a[i-2];
for (i = 0; i < 8; i++)
{
if (i % 4 == 0 && i != 0)
printf("
");
printf("%4d", a[i]);
}
}
三、程序填空题
9. 以下程序的功能是:输入10个整数存入一维数组,然后按逆序输出。请填空。
#include <stdio.h>
main()
{
int i, a[10];
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
for (______【1】______)
printf("%d ", a[i]);
}
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是找出数组中的最大值及其下标。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 main()
L3 {
L4 int i, max, index, a[6] = {23, 45, 12, 67, 34, 89};
L5 max = a[0];
L6 index = 0;
L7 for (i = 0; i <= 6; i++)
L8 if (a[i] > max)
L9 {
L10 max = a[i];
L11 index = i;
L12 }
L13 printf("max=%d, index=%d
", max, index);
L14 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第15练,内容是5.1 一维数组的定义和使用。
《编程语言基础——C语言》(第5版)一课一练 第15练
5.1 一维数组的定义和使用
一、单选题
1. 以下一维数组定义中,合法的是( )
A. int a[10];
B. int a(10);
C. int n=10; int a[n];
D. int a[10,5];
【答案】A
【解析】一维数组的定义格式为:类型说明符 数组名[常量表达式]。选项B括号错误,选项C中n是变量不允许动态定义,选项D格式错误。
2. 定义 int a[10]; 后,以下对数组元素的引用中,合法的是( )
A. a[10] = 5;
B. a[-1] = 5;
C. a[0] = 5;
D. a[5.5] = 5;
【答案】C
【解析】数组下标从0开始,a[10]的下标范围是0~9(共10个元素)。a[10]和a[-1]下标越界,a[5.5]下标类型错误。C语言不对下标做越界检查,但编程时应遵守范围。
3. 以下对一维数组初始化的描述中,正确的是( )
A. int a[5]={1,2,3,4,5,6}; 是将6个元素赋给长度为5的数组
B. int a[]; 不写长度是合法的定义方式
C. int a[5]={0*5}; 可使所有元素初始化为0
D. int a[5]={1,2,3}; 则a[3]和a[4]的值为0
【答案】D
【解析】部分初始化时,未被赋值的元素自动为0,所以a[3]=a[4]=0。选项A初值个数超过数组长度不合法;选项B不写长度也没有初值不合法;选项C写法错误。
4. 定义 int a[] = {1, 3, 5, 7, 9}; 则数组a的长度是( )
A. 4
B. 5
C. 10
D. 不确定
【答案】B
【解析】当给出全部元素的初始值时,数组长度可以省略,编译器会根据初值个数自动确定数组长度。这里有5个初值,所以数组长度为5。
5. 有以下程序段:
int i, a[5] = {2, 4, 6, 8, 10};
for (i = 1; i < 5; i++)
a[i] = a[i-1] + a[i];
执行后a[4]的值是( )
A. 10
B. 30
C. 20
D. 28
【答案】B
【解析】初始:a[0]=2,a[1]=4,a[2]=6,a[3]=8,a[4]=10。i=1:a[1]=2+4=6;i=2:a[2]=6+6=12;i=3:a[3]=12+8=20;i=4:a[4]=20+10=30。
6. 关于数组在内存中的存储方式,正确的描述是( )
A. 数组元素在内存中连续存放,数组名表示首地址
B. 数组元素在内存中随机存放
C. 数组元素按字母顺序排列
D. 数组元素存放在不同的内存区域
【答案】A
【解析】定义数组时C语言分配足够的内存来存放所有元素,这些元素在内存中是连续存放的,数组名本身表示内存的首地址。
7. 有以下程序段:
int a[5] = {0}, i;
for (i = 0; i < 5; i++)
scanf("%d", &a[i]);
若输入: 10 20 30 40 50,则a[2]的值是( )
A. 10
B. 20
C. 30
D. 0
【答案】C
【解析】循环依次为a[0]~a[4]读取输入值:a[0]=10,a[1]=20,a[2]=30,a[3]=40,a[4]=50。a[2]的值为30。
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
main()
{
int i, a[8] = {1, 1};
for (i = 2; i < 8; i++)
a[i] = a[i-1] + a[i-2];
for (i = 0; i < 8; i++)
{
if (i % 4 == 0 && i != 0)
printf("
");
printf("%4d", a[i]);
}
}
【答案】 1 1 2 3
5 8 13 21
【解析】这是一个Fibonacci数列生成程序。a[0]=1,a[1]=1,然后a[2]=2,a[3]=3,a[4]=5,a[5]=8,a[6]=13,a[7]=21。每4个数换行,最终输出两行,每行4个数。
三、程序填空题
9. 以下程序的功能是:输入10个整数存入一维数组,然后按逆序输出。请填空。
#include <stdio.h>
main()
{
int i, a[10];
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
for (______【1】______)
printf("%d ", a[i]);
}
【答案】【1】i = 9; i >= 0; i--
【解析】逆序输出即从最后一个元素a[9]开始,依次向前到a[0]。循环初始i=9,条件i>=0,每次i--。
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是找出数组中的最大值及其下标。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 main()
L3 {
L4 int i, max, index, a[6] = {23, 45, 12, 67, 34, 89};
L5 max = a[0];
L6 index = 0;
L7 for (i = 0; i <= 6; i++)
L8 if (a[i] > max)
L9 {
L10 max = a[i];
L11 index = i;
L12 }
L13 printf("max=%d, index=%d
", max, index);
L14 }
【答案】【1】L7: for (i = 0; i <= 6; i++) → 修改为 for (i = 0; i < 6; i++)(数组a长度为6,有效下标范围0~5,i<=6导致访问a[6]越界)
【解析】数组a长度为6,有效下标范围是0~5。循环条件i<=6会使i取到6,访问a[6]导致越界。改为i<6即可修正。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$