第五单元 数组作业

第五单元         数组

重点:

数组就是一组相同类型的变量,他们往往都是为了表示同一批对象的统一属性,数组可以是一维的,也可以是二维的或多维的。

一位定义一维数组的格式如下:

类型标识符    数组名   [常量表达式];

其中,类型标识符可以是任何基本数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义。数组名必须是合法的标识符。常量表达式的值即为数组元素的个数。

如果定义一个有50个元素的数组h,则它们的编号从0开始到49,eg:h[0~49]

数组定义好后,可以引用数组中的任意一个元素,引用格式为:数组名   [下标],数组下标从0开始计数,下标的值不应超过常量表达式最大值减1。

!!注意:不能一次引用整个数组,只能逐个引用数组的单个元素。

批量数据可以使用键盘读入和直接赋值的方法,一次性输入到一维数组中

C++里还提供了两个函数给数组整体赋值memset函数

memset函数是给数组按字节进行赋值,一般用在char型数组中,如果是int类型的数组,一般赋值为0和-1.使用前需要包含头文件

#include<cstring>。

此函数只起清零作用,格式为

memset(h,0,sizeof(h)),就是将h数组中所有元素均服值为零。

fill函数

fill函数是给数组按元素进行赋值,可以是整个数组,也可以是部分连续元素,可以赋任何值,使用前需要包含头文件#include<algorithm>。

例如fill(a,a+10,5)就是将a数组的前10个元素赋值为5。

另外,C++还支持在定义数组的同时,给所有或者部分元素赋值。

例如:

a[10]={0,1,2,3,4,5,6,7,8,9};

int      a[10]={0,1,2,3,4,};

部分赋初值后面的元素自动初始化为零

a[]={1,2,3,4,5,};

不定义数组长度,直接根据赋值个数定

数组的插入删除操作:

插入一个元素,需要先找到插入的位置,假设下标为x,将这个元素及其之后的所有元素依次往后移一位,注意要从后往前进行操作,再将给定的元素插入或覆盖到位置x。删除某一个元素,也需要先找到删除的位置,假设下表为x将下标为x+1及其之后的所有元素,依次向前移一位覆盖原来位置上的元素。插入或者删除一个区间(连续若干个数)只要重复以上单个元素的操作即可。另外,插入操作需要注意把数组下标定义的足够大。

例1    插队问题。

【问题描述】

有n个人(每个人有一个唯一的编号,用1~n之间的整数表示)在一个水龙头前排队准备接水,现在第n个人有特殊情况,经过协商,大家允许他插队到第x个位置。输出第n个人插队后的排队情况

【输出格式】

第一行一个正整数n,表示有n个人,2<n≤100

第二行包含n个正整数之间,用一个空格隔开表示排在队伍中的第1~第n个人的编号。

第三行包含一个正整数x,表示第n个人插队的位置1≤x<n。

【输出格式】

一行包含n个正整数,之间用一个空格隔开,表示第n个人插队后的排队情况。

【输入样例】

7

7 2 3 4 5 6 1

3

【输出样例】

7 2 1 3 4 5 6

【问题分析】

N个人的排队情况可以用数组q表示,q[i]表示排在第i个位置上的人。定义数组时多定义一个位置,然后重复执行:q[i+1]=q[i],其中,从n~x。最后再执行q[x]=q[n+1],输出q[1]~q[n]。

//p5-3

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值