• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 详解C++中的一维数组和二维数组

详解C++中的一维数组和二维数组

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++指针详解,c++编程实例详解,c++关键字详解,c++编程实例详解pdf,c++ 虚函数详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C++一维数组
定义一维数组

定义一维数组的一般格式为:
    类型标识符  数组名[常量表达式];
例如:

  int a[10];
</div>


它表示数组名为a,此数组为整型,有10个元素。

关于一维数组的几点说明:
1) 数组名定名规则和变量名相同,遵循标识符定名规则。

2) 用方括号括起来的常量表达式表示下标值,如下面的写法是合法的:

  int a[10];
  int a[2*5];
  int a[n*2]; //假设前面已定义了n为常变量
</div>

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的值决定数组的长度
</div>


如果把第1,2行改为下面一行就合法了:

  const int n=5;
</div>


引用一维数组的元素

数组必须先定义,然后使用。只能逐个引用数组元素的值而不能一次引用整个数组中的全部元素的值。

数组元素的表示形式为:
    数组名[下标]
下标可以是整型常量或整型表达式。例如:

  a[0]= a[5]+ a[7]- a[2*3]
</div>

【例】数组元素的引用。

#include <iostream>
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<<a[i]<<" ";
  cout<<endl;
  return 0;
}
</div>

运行结果如下:

9 8 7 6 5 4 3 2 1 0
</div>

程序使a[0]~a[9]的值为0~9,然后按逆序输出。
一维数组的初始化

1) 在定义数组时分别对数组元素赋予初值。例如:

  int a[10]={0,1,2,3,4,5,6,7,8,9};
</div>

2) 可以只给一部分元素赋值。例如:

  int a[10]={0,1,2,3,4};
</div>

3) 如果想使一个数组中全部元素值为1,可以写成:

  int a[10]={1,1,1,1,1,1,1,1,1,1};
</div>


不能写成

  int a[10]={1*10};
</div>


不能给数组整体赋初值。

4) 在对全部数组元素赋初值时,可以不指定数组长度。例如:

  int a[5]={1,2,3,4,5};
</div>


可以写成

  int a[]={1,2,3,4,5};
</div>


一维数组程序举例

【例】用数组来处理求Fibonacci数列问题。

可以用20个元素代表数列中的20个数,从第3个数开始,可以直接用表达式f[i]=f[i-2]+f[i-1]求出各数。程序如下:

#include <iostream>
#include <iomanip>
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<<endl; //控制换行,每行输出5个数据
   cout<<setw(8)<<f[i]; //每个数据输出时占8列宽度
  }
  cout<<endl; //最后执行一次换行
  return 0;
}
</div>

运行结果如下:


【例】编写程序,用起泡法对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 <iostream>
using namespace std;
int main( )
{
  int a[11];
  int i, j, t;
  cout<<"input 10 numbers :"<<endl;
  for (i=1;i<11;i++) //输入a[1]~a[10]
   cin>>a[i];
  cout<<endl;
  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<<"the sorted numbers :"<<endl;
  for(i=1;i<11;i++) //输出10个数
   cout<<a[i]<<" ";
  cout<<endl;
  return 0;
}
</div>

运行情况如下:

input 10 numbers:
3 5 9 11 33 6 -9 -76 100 123↙
the sorted numbers:
-76 -9 3 5 6 9 11 33 100 123
</div>

C++二维数组
具有两个下标的数组称为二维数组。有些数据要依赖于两个因素才能惟一地确定,例如有3个学生,每个学生有4门课的成绩,显然,成绩数据是一个二维表,如书中表所示。


想表示第3个学生第4门课的成绩,就需要指出学生的序号和课程的序号两个因素,在数学上以S3,4表示。在C++中以s[3][4]表示,它代表数据73。
定义二维数组

定义二维数组的一般形式为:
    类型标识符 数组名[常量表达式][常量表达式];
例如:

  float a[3][4], b[5][10];
</div>


定义a为3×4(3行4列)的单精度数组,b为5×10(5行10列)的单精度数组。注意不能写成“float a[3,4], b[5,10];”。C++对二维数组采用这样的定义方式,使我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。例如,可以把a看作是一个一维数组,它有3个元素:a[0],a[1],a[2],每个元素又是一个包含4个元素的一维数组,见图5.4。a[0],a[1],a[2]是3个一维数组的名字。


上面定义的二维数组可以理解为定义了3个一维数组,即相当于:

  float a[0][4], a[1][4], a[2][4];
</div>


此处把a[0],a[1],a[2]作一维数组名。C++的这种处理方法在数组初始化和用指针表示时显得很方便,这在以后会体会到。

C++中,二维数组中元素排列的顺序是:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。图表示对a[3][4]数组存放的顺序。

上面定义的二维数组可以理解为定义了3个一维数组,即相当于:

  float a[0][4], a[1][4], a[2][4];
</div>


此处把a[0],a[1],a[2]作一维数组名。C++的这种处理方法在数组初始化和用指针表示时显得很方便,这在以后会体会到。

C++中,二维数组中元素排列的顺序是:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。图5.5表示对a[3][4]数组存放的顺序。


C++允许使用多维数组。有了二维数组的基础,再掌握多维数组是不困难的。例如,定

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++的虚析构详解及实例代码
  • C++二分查找(折半查找)算法实例详解
  • C++ 中指针和引用有什么区别详解
  • C++ 中函数重载、覆盖与隐藏详解
  • C++中指针指向二维数组实例详解
  • C++调用Python基础功能实例详解
  • C++中this指针用法详解及实例
  • C++中函数重载实例详解
  • C++中指针和引用的区别详解
  • C++模版函数详解

相关文章

  • 2017-05-28C++编程异常处理中try和throw以及catch语句的用法
  • 2017-05-28基于C/C++时间函数的使用详解
  • 2017-05-28详解散列表算法与其相关的C语言实现
  • 2017-05-28C++十六进制宏的用法详解
  • 2017-05-28浅析C#与C++相关概念的比较
  • 2017-05-28C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数
  • 2017-05-28模拟鼠标事件的实现思路及代码
  • 2017-05-28C++使用一个栈实现另一个栈的排序算法示例
  • 2018-08-06string函数功能实现
  • 2017-05-28深入解析C语言中typedef的四个用途

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++ 自定义控件的移植问题
    • C语言连续子向量的最大和及时间度量实例
    • 原码, 反码与补码基础知识详细介绍
    • C语言 二叉树的链式存储实例
    • 解析C++编程中如何使用设计模式中的状态模式结构
    • C语言 结构体数组详解及示例代码
    • C语言判断字符是否为可打印字符的方法
    • C++函数重载的深入解析
    • C语言数据结构二叉树简单应用
    • C语言 一级指针与二级指针详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有