6、数组 指针与字符串

6.1 数组 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量成为数组的元素。数组属于构造类型。

一维数组的声明: 类型说明符 数组名[常量表达式],若int a[10],a是整形数组,有十个元素,为a[0]……a[9]。

引用:必须先声明后使用,只能逐个引用数组元素,而不能一次引用整个数组。每个元素相当于单个变量。

#include <iostream>

using namespace std;

int main()

{

         int A[10],B[10];

         int i;

         for(i=0;i<10;i++)

         {

                   A[i]=i*2-1;

                   B[10-i-1]=A[i];

         }

         for(i=0;i<10;i++)

         {

                   cout<<"A["<<i<<"]="<<A[i];

                   cout<<" B["<<i<<"]="<<B[i]<<endl;

         }

}

  

数组元素在内存中顺次存放,他们的地址是连续的,数组的名字是数组首元素的内存存放地址,数组名是一个常量,不能被赋值。

6.2 一维数组的初始化

可以在编译阶段使数组得到初值:

在声明数组时对数组元素赋以初值。
例如:static int a[10]={0,1,2,3,4,5,6,7,8,9};

可以只给一部分元素赋初值。如:static int a[10]={0,1,2,3,4};

在对全部数组元素赋初值时,可以不指定数组长度。如:static int a[]={1,2,3,4,5}

例:用数组来处理求Fibonacci数列问题

#include<iostream>

using namespace std;

int main()

{ int i;

  static int f[20]={1,1};//初始化第0、1个数

  for(i=2;i<20;i++) //求第2~19个数

   f[i]=f[i-2]+f[i-1];

  for(i=0;i<20;i++) //输出,每行5个数//

  { if(i%5==0) cout<<endl;

           cout.width(12); //设置输出宽度为12

           cout<<f[i];

  }

}

  

运行结果:

         1       1       2       3       5      

         8       13     21     34     55

         89     144   233   377   610

         987   1597  2584  4181  6765

应用举例:循环从键盘读入若干组选择题答案,计算并输出每组答案的正确率,知道输入ctrl+z为止。每组连续输入5个答案,a~d。

#include <iostream>

using namespace std;

int main()

{ char key[ ]={'a','c','b','a','d'};

  char c;

  int ques=0,numques=5,numcorrect=0;

  cout<<"Enter the "<<numques<<" question tests:"<<endl;

  while(cin.get(c))//从键盘取值

  { if(c != '\n')

            if(c == key[ques])

            { numcorrect++; cout << " "; }

     else cout<<"*";

    else

    { cout<<" Score "<<float(numcorrect)/numques*100<<"%";

      ques = 0;

      numcorrect = 0;

      cout << endl;

      continue;

    }

           ques++;

         }

}

  

运行结果:

acbba

   **  Score  60%

acbad

       Score  100%

abbda

 * **  Score  40%

bdcba

*****  Score  0%

C++——一维数组的更多相关文章

  1. PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?

    如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...

  2. Java语言程序设计(基础篇) 第七章 一维数组

    第七章 一维数组 7.2 数组的基础知识 1.一旦数组被创建,它的大小是固定的.使用一个数组引用变量,通过下标来访问数组中的元素. 2.数组是用来存储数据的集合,但是,通常我们会发现把数组看作一个存储 ...

  3. C语言一维数组、二维数组、结构体的初始化

    C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...

  4. C语言回顾-整型变量修饰符和一维数组

    1.整型变量修饰符 1)改变整型变量的存储空间 #include <stdio.h> int main(int argc, const char * argv[]) { //改变整型变量占 ...

  5. c语言操作一维数组-3

    C语言选择题#includemain(){double a[15],k;k=fun(a);} 则以下选项中错误的fun函数首部是 ( D)A.double fun(double a[15]) B.do ...

  6. ASP数组全集,多维数组和一维数组[转]

    ASP数组是比较好用的装载大量数据的容器.1 定义数组 有两种方式:DIM和REDIM. DIM定义的是固定个数.数据类型的数组:而REDIM则不同,它可以定义不同类型的数据,也可以定义个数并非固定的 ...

  7. 《数据结构》 java的一维数组的内存结构与其特性

    1{数组的概念: 数组是相同类型变量的集合,可以使用共同的名字引用它.数组也可以被定义为任何类型,可以是一维或者二维的.数组的访问时通过其对应的下标来实现的.数组提供了一种将有联系的信息便利分组的方式 ...

  8. C#的一维数组和二维数组定义方式:

    一维数组: //一维数组定义与初始化 ,, };//第一种方式 , , }; //第二种方式 int[] one3; //第三种方式 one3=,,}; 二维数组: //二维数组定义与初始化 //不规 ...

  9. 【C语言入门教程】4.1 一维数组

    数组与指针涉及到数据在内存中的存储位置问题,数组由连续的存储单元组成,最低地址对应于数组的第一个单元,最高地址对应于数组的最后一个单元.指针是一种特殊的变量,该变量所存放的是内存地址,通过指针变量可访 ...

  10. 问题 A: 【动态规划】采药_二维数组_一维数组

    问题 A: [动态规划]采药 时间限制: 1 Sec  内存限制: 64 MB提交: 35  解决: 15[提交][状态][讨论版] 题目描述 山洞里有一些不同的草药,采每一株都需要一些时间,每一株也 ...

随机推荐

  1. jQuery---jquery.ui实现新闻模块

    jquery.ui实现新闻模块 jquery也有ui,了解即可,用的不多,类似element ui 和bootstrap JQuery UI API: jquery.ui实现新闻模块 draggale ...

  2. Vue(八)---组件(Component)

    组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码. 注册一个全局组件语法格式如下: Vue.component(tagName, optio ...

  3. php 获取当前目录和当前文件夹

    <?php /** * PHP获取路径或目录实现 */ //魔术变量,获取当前文件的绝对路径 echo "__FILE__: ========> ".__FILE__; ...

  4. windows10使用任务计划提醒自己

    转载自:https://www.cnblogs.com/yourstars/p/6505991.html 利用Win10计划任务 + 弹窗,提醒你自己 步骤: 1.打开Win10控制面板 -> ...

  5. 使用nginx代理gogs遇到推送代码错误的问题(RPC failed; HTTP 413 curl 22 The requested URL returned error: 413)

    前提 代码管理我是用Gogs.Git,前些阵子使用Nginx将git.balabiu.com反向代理到了Gogs的默认端口,其他二级域名准备做其他使用, 导致上报代码出现了错误. 问题 推送代码报错误 ...

  6. vue 问题总结

    1. 动态设置图片, <img :src="url"> data() { return { url: require(相对路径) // 直接写相对路径会出错 } } 2 ...

  7. Linux下快速删除大量小文件引起的磁盘inode(目录索引)过满

    1)首先建立一个空白文件夹. mkdir /tmp/empty 然后安装下rsync yum install -y rsync 2)之后使用以下语句即可快速的删除文件. rsync --delete- ...

  8. EOFError: Compressed file ended before the end-of-stream marker was reached解决办法(在Windows下查看已下载的MNIST数据文件)

    出现这个问题的原因是因为文件下载到一半就中断了,解决办法是删除datasets中下载到一半的数据包. 下面以我遇到的问题为例: 我下载数据下载到最后一个包就没有反应了,于是我强制终止了运行,可能是因为 ...

  9. 问题 B: 基础排序III:归并排序

    #include <cstdio> #include <vector> #include <algorithm> using namespace std; void ...

  10. DirectX11--HLSL语法入门

    前言 编写本内容仅仅是为了完善当前的教程体系,入门级别的内容其实基本上都是千篇一律,仅有一些必要细节上的扩充.要入门HLSL,只是掌握入门语法,即便把HLSL的全部语法也吃透了也并不代表你就能着色器代 ...