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%

最新文章

  1. 仿window系统自带的日期差计算器类
  2. SQL Server 常用高级语法笔记
  3. coderforces 721b
  4. 十分钟搞定CSS选择器
  5. [HDU5015]233 Matrix
  6. PISCES P4-vSwitch 安装以及一次失败的测试
  7. C#类和成员的修饰符
  8. 自定义ContentProvider
  9. 基于jsp+servlet图书管理系统之后台用户信息查询操作
  10. logstash Codec
  11. android4.0 的图库Gallery2代码分析(二)
  12. 不root手机的情况下查看Android数据库
  13. C#保存日志文件到txt中,可追加保存,定时删除最后一次操作半年前日志文件
  14. LODOP设置打印机不存在不打印
  15. 浅谈前端JavaScript编程风格
  16. 清理Visual Studio 2017的项目历史记录或手工修改Visual Studio 2017的注册表设置
  17. mybatis 枚举的支持
  18. @Scheduled 定时
  19. 访问Google的办法
  20. 004-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-共享服务中心建设原则

热门文章

  1. codechef Scoring Pairs
  2. Byte 一个字节的数据大小范围为什么是-128~127
  3. 【spring boot】SpringBoot初学(5)&ndash; WebService之Jersey
  4. 【spring】spring源码阅读之xml读取、bean注入(BeanFactory)
  5. Windows资源管理器卡死(未响应)的解决办法
  6. Linux环境搭建及基础操作
  7. Django---Django返回HTML文件
  8. processing data
  9. PTA L2-029 | 特立独行的幸福 (打表+递归)
  10. 05-SV面向对象编程基础