云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Lab6-1 - 一维数组

Lab6-1 - 一维数组

  • 62 次阅读
  • 3 次下载
  • 2026/1/8 3:14:33

班级: 学号: 姓名:

请设计人员务必控制好数组下标,防止越界访问。

6. Q:数组在内存中如何存放,一个数组会占用多少内存?

A:数组是一种复合数据类型,与变量一样都是用来存放数据,区别在于变量是一个数据,数组是一批数据。系统会为数组在内存中分配一块连续的空间,所占内存大小为:元素个数*sizeof(数据类型)个字节的存储单元,比如CFree和VC6.0等32位开发环境下,int array[10];它共占用10*4=40个字节。数据存放顺序按照a[0], a[1], a[2], ……, a[9]来存放。

7. Q:若有数组声明int a[5];则a代表什么?

A:对于一个变量,它的第一个字节的位置称为该变量的内存起始地址。同样的,一个数组,占用一段连续的内存空间,其中第一个字节的位置成为该数组的起始地址(首地址)。数组名代表了数组的首地址,所以a代表了整个数组的起始地址。a是一个常量,不能被修改。

【实验内容】

1. 从键盘输入10个学生的考试成绩,放入数组中,求数组中最高分、最低分及其所在元素

的位置。

2. 在上题基础上,将数组中最高分换到第0位、最低分放入最后一位。然后输出调整后的

数组。

3. 下面程序段的功能是将一个数组中的值按逆序重新存放,例如下图中第一行是原来的顺

序,第二行是逆序存放后的顺序。

4. 从键盘输入一个班学生的某门课程的成绩(不超过20人),当输入为负值时,输入结束,

分别实现以下功能: 1) 统计不及格人数。

2) 统计成绩在全班平均分以上(含平均分)的学生人数。 3) 统计各分数段的学生人数及所占的百分比。

5. 设计程序模拟骰子的500次投掷,然后统计1~6每一面出现的概率,放入数组

frequency中。提示:随机种子发生器设置语句:srand(time(NULL));利用随机函数产生1~6之间的随机整数:rand()%6+1;以上代码需要stdlib.h以及time.h库支持。

【课后练习】

1. 选择题:

1) C语言中,访问数组元素时,数组下标的数据类型允许是 。

A. 整型常量

B. 整型表达式 D. 任何类型的表达式 B. int n=10, a[n]; D. #define SIZE 10

5

C. 整型常量或者整型表达式 A. int a(10); C. int n;

2) 以下对一维整型数组a的正确说明是 。

班级: 学号: 姓名:

scanf(“%d”, &n);

int a[SIZE];

int a[n];

3) 若有说明 int a[10];则对a数组中元素的正确访问是 。 A. a[10] B. a[3.5] C. a(5) D. a[10-10] 4) 以下对数组的正确定义是 。

A. float b[5.0]; B. float b[5]; C. float b(5); D. float b[]; 5) 对语句int a[10] = {6,7,8,910}; 的正确理解是 。 A. 将5个初值依次赋给a[1]至a[5],其余元素均为0 B. 将5个初值依次赋给a[0]至a[4],其余元素均为0 C. 将5个初值依次赋给a[6]至a[10],其余元素均为0 D. 因为数组长度与初值个数不相同,所以该语句错误

6) 以下能对一维数组a进行正确初始化的语句是 。 A. int a[5];

a={0,1,2,3,4};

B. int a[3]; for(i=0; i<3; i++) scanf(“%d”, a); D. int a[5];

for(i=0; i<3; i++) scanf(“%d”, &a[i]);

C. int a[3] = {0,1,2,3};

2. 概念填空:

1) 构成数组的各个元素必须具有相同的 。如果一维数组的长度为n,则

数组下标的最小值为 ,最大值为 。 2) C语言中,一维数组的定义方式为: 类型说明符 数组名 。 3) 已知数组b定义为int b[ ]={9,6,3}; 则b数组最小下标是_______,最大下标

是____ ___。各元素的值分别是b[0]=_ ___, _=_ _, _=_ _。

3. 有一个已经排好序的数组,输入一个数,要求按原来的顺序规律将其插入到数组中合适的位置上,如下图所示。

#include #define N 10 main() {

int i, pos=0, newNum, a[N]={20, 18, 15, 9, 6, 4, 3, 2, -1};

//插入操作前,输出数组元素 for(i=0; i

printf(\

printf(\

6

班级: 学号: 姓名:

}

//插入操作完成后,再次输出数组元素 for(i=0; i

printf(\printf(\}

if( )

a[0]=newNum;

//从后向前依次比较,将小于newNum的数据逐个后移 for(i= ; ; i--) {

if( ) //遇到大于等于newNum的数据时,停止比较,插入被比较数据之后 { }

else //将当前小于newNum的数据后移一个单元 { }

break;

//接受用户输入一个数据

printf(\scanf(\

4. 以下是一个交错数列的前10项,请完成以下程序,效果如图所示:

#include main() {

int i, flag, f[10]; //交错数列f中前10个元素,flag用于符号控制

flag = 1;

for( ; ; i++) {

f[i] = ; flag = ; }

for(i=0; ; i++) {

7

班级: 学号: 姓名:

printf(\ ); }

printf(\}

5. 以下程序的功能是给一维数组a输入任意6个整数。假设为:0 1 2 3 4 5,如

下图。则程序

1) 将首先输出该数组,再向右轮转该数组,即该数组变为5 0 1 2 3 4。这样

的动作重复6遍,得到以下结果。试完成此程序。

#include #define N 10 main() {

int a[ ],n, i, j, k, m;

printf(\ scanf(\

for(i=0; i

printf(\ ]= \ ); scanf(\ ); }

printf(\

/*轮转输出*/

for( i=n-1; i>=0; i--) {

/*输出数组*/

for(m= ; ; m++) printf(\ ; printf(\

8

搜索更多关于: Lab6-1 - 一维数组 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

班级: 学号: 姓名: 请设计人员务必控制好数组下标,防止越界访问。 6. Q:数组在内存中如何存放,一个数组会占用多少内存? A:数组是一种复合数据类型,与变量一样都是用来存放数据,区别在于变量是一个数据,数组是一批数据。系统会为数组在内存中分配一块连续的空间,所占内存大小为:元素个数*sizeof(数据类型)个字节的存储单元,比如CFree和VC6.0等32位开发环境下,int array[10];它共占用10*4=40个字节。数据存放顺序按照a[0], a[1], a[2], ……, a[9]来存放。 7. Q:若有数组声明int a[5];则a代表什么?

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com