c语言中一维数组和二维数组,详解C++中的一维数组和二维数组
C++一维数组
定义一维数组
定义一维数组的一般格式为:
类型标识符 数组名[常量表达式];
例如:
int a[10];
它表示数组名为a,此数组为整型,有10个元素。
关于一维数组的几点说明:
1) 数组名定名规则和变量名相同,遵循标识符定名规则。
2) 用方括号括起来的常量表达式表示下标值,如下面的写法是合法的:
int a[10];
int a[2*5];
int a[n*2]; //假设前面已定义了n为常变量
3) 常量表达式的值表示元素的个数,即数组长度。例如,在“int a[10];”中,10表示a数组有10个元素,下标从0开始,这10个元素是: a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7], a[8],a[9]。注意最后一个元素是a[9]而不是a[10]。
4) 常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。也就是说,C++不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:
int n;
cin>>n; //输入a数组的长度
int a[n]; //企图根据n的值决定数组的长度
如果把第1,2行改为下面一行就合法了:
const int n=5;
引用一维数组的元素
数组必须先定义,然后使用。只能逐个引用数组元素的值而不能一次引用整个数组中的全部元素的值。
数组元素的表示形式为:
数组名[下标]
下标可以是整型常量或整型表达式。例如:
a[0]= a[5]+ a[7]- a[2*3]
【例】数组元素的引用。
#include
using namespace std;
int main( )
{
int i, a[10];
for (i=0;i<=9;i++)
a[i]=i;
for (i=9;i>=0;i--)
cout<
cout<
return 0;
}
运行结果如下:
9 8 7 6 5 4 3 2 1 0
程序使a[0]~a[9]的值为0~9,然后按逆序输出。
一维数组的初始化
1) 在定义数组时分别对数组元素赋予初值。例如:
int a[10]={0,1,2,3,4,5,6,7,8,9};
2) 可以只给一部分元素赋值。例如:
int a[10]={0,1,2,3,4};
3) 如果想使一个数组中全部元素值为1,可以写成:
int a[10]={1,1,1,1,1,1,1,1,1,1};
不能写成
int a[10]={1*10};
不能给数组整体赋初值。
4) 在对全部数组元素赋初值时,可以不指定数组长度。例如:
int a[5]={1,2,3,4,5};
可以写成
int a[]={1,2,3,4,5};
一维数组程序举例
【例】用数组来处理求Fibonacci数列问题。
可以用20个元素代表数列中的20个数,从第3个数开始,可以直接用表达式f[i]=f[i-2]+f[i-1]求出各数。程序如下:
#include
#include
using namespace std;
int main( )
{
int i;
int f[20]={1,1}; //f[0]=1,f[1]=1
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; //在i的值为2时,f[2]=f[0]+f[1],依此类推
for(i=0;i<20;i++) //此循环的作用是输出20个数
{
if(i%5==0) cout<
cout<
}
cout<
return 0;
}
运行结果如下:
【例】编写程序,用起泡法对10个数排序(按由小到大顺序)。
起泡法的思路是:将相邻两个数比较,将小的调到前头。见图5.2。然后进行第2趟比较,对余下的前面5个数按上法进行比较,见图。
可以推知,如果有n个数,则要进行n-1趟比较(和交换)。在第1趟中要进行n-1次两两比较,在第j趟中要进行n-j次两两比较。
根据以上思路写出程序,今设n=10,本例定义数组长度为11,a[0]不用,只用a[1]~a[10],以符合人们的习惯。从前面的叙述可知,应该进行9趟比较和交换。
#include
using namespace std;
int main( )
{
int a[11];
int i, j, t;
cout<
for (i=1;i<11;i++) //输入a[1]~a[10]
cin>>a[i];
cout<
for (j=1;j<=9;j++) //共进行9趟比较
for(i=1;i<=10-j;i++)//在每趟中要进行(10-j)次两两比较
if (a[i]>a[i+1]) //如果前面的数大于后面的数
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
}//交换两个数的位置, 使小数上浮
cout<
for(i=1;i<11;i++) //输出10个数
cout<
c语言中一维数组和二维数组,详解C++中的一维数组和二维数组相关推荐
- java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换
JSON使用阿里的fastJson为依赖包 gradle依赖管理如下: compile group: "com.alibaba", name: "fastjson&quo ...
- java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较
1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...
- python中groupby()函数讲解与示例_详解python中groupby函数通俗易懂
一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[ ...
- python中get函数是什么意思_详解python中get函数的用法(附代码)_后端开发
strncmp函数用法详解_后端开发 strncmp函数为字符串比较函数,其函数语法为"int strncmp ( const char * str1, const char * str2, ...
- java中的静态变量的作用域_详解JAVA中static的作用
1.深度总结 引用一位网友的话,说的非常好,如果别人问你static的作用:如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的:如果是说 可以构成 静态代码块,那别人认为你还可以: 如果你说 ...
- python中heapq的库是什么_详解Python中heapq模块的用法
详解Python中heapq模块的用法 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...
- python 中split函数的应用_举例详解Python中的split()函数的使用方法
函数:split() python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...
- python中字典和json的区别_详解python中的json和字典dict
定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式 ...
- python中__init__后面加特殊符号_详解Python中的__new__、__init__、__call__三个特殊方法...
__new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是sel ...
- python中的get函数什么意思_详解python中get函数的用法(附代码)
描述 Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法:dict.get(key, default=None) 参数 key – 字典中要查找 ...
最新文章
- 《Visual Studio程序员箴言》笔记
- numpy的cumsum ()函数
- 机器学习算法如何应用于控制_将机器学习算法应用于NBA MVP数据
- C++远征之封装篇——常对象成员、常成员函数
- 图片句柄_PC微信逆向:自动保存加密的聊天图片
- 下拉菜单(含有阻止事件冒泡)
- Rust中Turbofish之函数后面双冒号(::)用法
- 【bzoj4443】[Scoi2015]小凸玩矩阵 二分+二分图最大匹配
- crontab计划任务的失败记录查找
- java相对应的键盘输入_Java 实现输入键盘上任意键显示出相对应的ASCII
- php如何做支付,php实现银联支付
- WinRAR 无广告注册安装
- 【汇编程序】实现判断输入的年份是否为闰年
- android 7 sl4a,SL4A 伴随Android7 浴火重生
- [PED01]Deep Subspace Clustering Networks
- 最短路径--狄克斯特拉(Dijkstra)算法
- slot卡槽封装公共组件
- 人大金仓KingbaseES大小写敏感性专题
- 从blob协议的加密视频地址下载视频
- envi classic中怎么进行掩膜处理?为什么是非黑即白?
热门文章
- 使用Keil uVision5进行开发的必备知识
- 【.Net码农】【淘宝API】淘宝API开发
- word中的字号相当于多少px
- gre计算机科学,电子工程与计算机科学留学分享会(内含回顾实录+GRE福利包)...
- Visual Studio 2022离线下载
- 从学龄前开始解读FFMPEG代码 之 AVDictionary结构体以及av_dict_set()相关函数
- 工作面试:工作交接(5)
- iOS警告:ignoring file /Users/apple/Documents/拷贝1/.../CorePlot_1.3/Binar
- 计算机网络相关拓展材料
- 1085 PAT单位排行 (25分)-PAT乙级真题-C++实现