目录
一、数组
一组具有相同数据类型数据的有序集合
数组元素的类型称为该数组的基类型
1.1定义与初始化
1.1.1语法形式
类型说明符 数组名[常量表达式][常量表达式]……
1.1.2使用
先声明,后使用
只能逐个引用数组元素,而不能一次引用整个数组
1.1.3存储
1、一维数组
数组元素在内存中顺次存放,它们的地址是连续的。元素间物理地址上的相邻,对应着逻辑次序上的相邻,如
2、二维数组
按行存放,如: float a[3][4]; 可理解为:
其中数组a的存储顺序为:a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23
1.1.4初始化
1、一维数组
在定义数组时给出数组元素的初始值
- 列出全部元素的初始值,如: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[]={0,1,2,3,4,5,6,7,8,9}
2、二维数组
- 将所有初值写在一个{}内,按顺序初始化,如:static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
- 分组列出二维数组元素的初值,例如:static int a[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12}};
- 只对部分元素初始化,如:static int a[3][4]={ {1},{0,6},{0,0,11}};
- 列出全部初始值时,第1维下标个数可以省略,如:static int a[][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12}};
如果不作任何初始化,内部auto型数组中会存在垃圾数据,static数组中的数据默认初始化为0
如果只对部分元素初始化,剩下的未显式初始化的元素,将自动被初始化为0
#include<iostream>
using namespace std;
const char key[] = { 'a', 'c', 'b', 'a', 'd' };
const int NUM = 5;
int main() {
char c;
int que = 0, correct = 0;
cout << "Enter 5 answers:\n";
while(cin.get(c)) { //条件 " cin.get(c) " 中是句号而不是逗号
if(c == '\n') { //输入完通过回车显示结果,但换行符不能算作输入的内容
cout << "\nScore " << (float)correct / NUM * 100 << "%\n";
que = 0, correct = 0; //计数器清零,且位于输出结果之后
} else {
if(c == key[que])
correct++, cout << " "; //空格表示正确
else
cout << "*"; //星号表示错误
que++; //无