1. 程式人生 > >Part6 數組、指針與字符串 6.1 數組的定義與初始化

Part6 數組、指針與字符串 6.1 數組的定義與初始化

例如 auto 組元 ostream key acc 們的 fibonacci turn

1 數組的定義與使用
數組是具有一定順序關系的若幹相同類型變量的集合體,組成數組的變量稱為該數組的元素。

使用數組元素必須先聲明,後使用。
一般只能逐個引用數組元素,而不能一次引用整個數組

//6-1數組
#include<iostream>
using namespace std;
int main(){
    int a[10],b[10];
    for(int i = 0;i < 10; i++){
        a[i] = i*2 - 1;
        b[10 - i - 1] = a[i];
    }
    for(int i = 0;i < 10; i++){
        cout 
<< "a[" << i << "] = " << a[i] << " "; cout << "b[" << i << "] = " << b[i] << endl; } return 0; }

2 數組的存儲與初始化
一維數組的存儲:
  數組元素在內存中順次存放,它們的地址是連續的。元素間物理地址上的相鄰,對應著邏輯次序上的相鄰。
  數組名是數組首元素的內存地址。數組名是一個常量,不能被賦值。

一維數組的初始化:
  1 列出全部元素的初始值
    例如:static int a[10]={0,1,2,3,4,5,6,7,8,9};
  2 可以只給一部分元素賦初值
    例如:static int a[10]={0,1,2,3,4};
  3 在對全部數組元素賦初值時,可以不指定數組長度
    例如:static int a[]={0,1,2,3,4,5,6,7,8,9};

二維數組的存儲:
  按行存放,每一行可以看做一個一維數組

二維數組的初始化:
  1 將所有初值寫在一個{}內,按順序初始化
    例如:static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
  2 分行列出二維數組元素的初值
    例如:static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
  3 可以只對部分元素初始化
    例如:static int a[3][4]={{1},{0,6},{0,0,11}};
  4 列出全部初始值時,第1維下標個數可以省略
    例如:static int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    或:static int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

註意:
  1 如果不作任何初始化,內部auto型數組中會存在垃圾數據,static數組中的數據默認初始化為0;
  2 如果只對部分元素初始化,剩下的未顯式初始化的元素,將自動被初始化為零;

//6-2求Fibonacci數列的前20項
#include<iostream>
using namespace std;
int main(){
    int f[20] = {1,1};
    for(int i = 2; i < 20; i++){
        f[i] = f[i-2] + f[i-1];
    }
    for(int i = 0; i < 20; i++){
        if(i%5 == 0) cout << endl; //每行輸出5個
        cout.width(12);//設置輸出寬度為12
        cout << f[i];
    }
    return 0;
}

//6-3循環從鍵盤讀入若幹組選擇題答案,計算並輸出每組答案的正確率,直到輸入ctrl+z為止。
//每組連續輸入5個答案,每個答案可以是‘a‘..‘d‘。
#include<iostream>
using namespace std;
int main(){
    const char key[] = {a,c,b,a,d};
    const int NUM_QUES = 5;
    char c;
    int ques = 0, numCorrect = 0;
    cout << "Enter the " << NUM_QUES << " question tests:" << endl;
    while(cin.get(c)){
        if(c != \n){
            if(c == key[ques]){
                numCorrect++;cout << " ";
            }else cout << "*";
            ques++;
        }else{
            cout << " Score " << static_cast<float>(numCorrect)/NUM_QUES*100 << "%";
            ques = 0;
            numCorrect = 0;
            cout << endl;
        }
    }
    return 0;
}


Part6 數組、指針與字符串 6.1 數組的定義與初始化