Rumah >pembangunan bahagian belakang >Tutorial C#.Net >Bagaimana untuk memulakan tatasusunan c

Bagaimana untuk memulakan tatasusunan c

青灯夜游
青灯夜游asal
2021-10-15 14:09:2425654semak imbas

c Kaedah memulakan tatasusunan: 1. Tentukan tatasusunan dahulu dan kemudian tetapkan nilai kepada tatasusunan Sintaks ialah "nama tatasusunan jenis data [panjang]; nama tatasusunan [subskrip] = nilai;"; 2. Mulakan tatasusunan apabila mentakrifkan tatasusunan , sintaks "nama tatasusunan jenis data [panjang] = [senarai nilai]".

Bagaimana untuk memulakan tatasusunan c

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi C 17, komputer Dell G3.

Kadangkala lebih sesuai untuk menetapkan nilai pembolehubah dalam atur cara daripada memasukkan nilai pembolehubah. Walau bagaimanapun, menulis pernyataan tugasan berasingan untuk setiap elemen tatasusunan boleh bermakna banyak menaip, terutamanya untuk tatasusunan besar.

Sebagai contoh, lihat program:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    const int NUM_MONTHS = 12;
    int days[NUM_MONTHS];
    days[0] = 31; // January
    days[1] = 28; // February
    days[2] = 31; // March
    days[3] = 30; // April
    days[4] = 31; // May
    days[5] = 30; // June
    days[6] = 31; // July
    days[7] = 31; // August
    days[8] = 30; // September
    days[9] = 31; // October
    days[10] = 30; // November
    days[11] = 31; // December
    for (int month = 0; month < NUM_MONTHS; month++)
    {
        cout << "Month "<< setw (2) << (month+1) << " has ";
        cout << days[month] << " days.\n";
    }
    return 0;
}

Output program:

Month  1 has 31 days.
Month  2 has 28 days.
Month  3 has 31 days.
Month  4 has 30 days.
Month  5 has 31 days.
Month  6 has 30 days.
Month  7 has 31 days.
Month  8 has 31 days.
Month  9 has 30 days.
Month 10 has 31 days.
Month 11 has 30 days.
Month 12 has 31 days.

Nasib baik, terdapat pilihan yang C benarkan semasa mentakrifkan tatasusunan Mulakan tatasusunan. Dengan menggunakan senarai pemula, anda boleh dengan mudah memulakan semua elemen tatasusunan apabila anda menciptanya. Pernyataan berikut mentakrifkan tatasusunan hari dan memulakannya dengan nilai yang sama yang ditetapkan oleh set penyataan tugasan dalam atur cara sebelumnya:

int days [NUM_MONTHS] = {31,28,31,30,31,30,31,31,30,31,30, 31};

Nilai disimpan dalam elemen tatasusunan dalam susunan di mana ia muncul dalam senarai (bahagian A nilai 31 disimpan dalam hari[0], nilai kedua 28 disimpan dalam hari[1], dsb.). Rajah berikut menunjukkan kandungan tatasusunan selepas permulaan.

Bagaimana untuk memulakan tatasusunan c

Atur cara berikut ialah versi diubah suai bagi atur cara di atas. Ia memulakan tatasusunan hari apabila ia dibuat, dan bukannya menggunakan pernyataan tugasan yang berasingan. Ambil perhatian bahawa senarai permulaan tersebar merentasi berbilang baris. Program ini juga menambah tatasusunan objek rentetan untuk menyimpan nama bulan:

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
    const int NUM_MONTHS = 12;
    string name[NUM_MONTHS]={ "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"};
    int days[NUM_MONTHS] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    for (int month = 0; month < NUM_MONTHS; month++)
    {
        cout << setw(9) << left << name[month] << " has ";
        cout << days [month] << " days. \n";
    }
    return 0;
}

Keluaran program:

January   has 31 days.
February  has 28 days.
March     has 31 days.
April     has 30 days.
May       has 31 days.
June      has 30 days.
July      has 31 days.
August    has 31 days.
September has 30 days.
october   has 31 days.
November  has 30 days.
December  has 31 days.

Setakat ini, ia telah ditunjukkan cara mengisi tatasusunan dengan angka nilai, dan kemudian Tunjukkan semua nilai. Walau bagaimanapun, kadangkala lebih banyak fungsi mungkin diperlukan, seperti mendapatkan semula nilai tertentu daripada tatasusunan. Program berikut ialah variasi program di atas yang memaparkan bilangan hari dalam sebulan yang dipilih oleh pengguna.

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
    const int NUM_MONTHS = 12;
    int choice;
    string name[NUM_MONTHS]={ "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"};
    int days[NUM_MONTHS] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    cout << "This program will tell you how many days are "<< "in any month.\n\n";
    // Display the months
    for (int month = 1; month <= NUM_MONTHS; month++)
        cout << setw (2) << month << " " << name [month-1] << endl;
    cout << "\nEnter the number of the month you want: ";
    cin >> choice;
    // Use the choice the user entered to get the name of
    // the month and its number of days from the arrays.
    cout << "The month of " << name [choice-1] << " has " << days[choice-1] << " days.\n";
    return 0;
}

Hasil keluaran program ialah:

This program will tell you how many days are in any month.

1 January
2 February
3 March
4 April
5 May
6 June
7 July
8 August
9 September
10 october
11 November
12 December

Enter the number of the month you want: 4
The month of April has 30 days.

Bermula dari elemen tatasusunan 1

Wujud dalam dunia nyata Terdapat sebilangan besar perkara yang secara logiknya bermula dengan 1. Apabila membina model untuk perkara sedemikian, ramai guru akan lebih suka pelajar tidak menggunakan elemen 0, sebaliknya mula menyimpan data sebenar daripada elemen 1. Bilangan bulan dalam setahun adalah contoh yang baik. Dalam kes ini, anda boleh mengisytiharkan tatasusunan nama dan hari mempunyai 13 elemen setiap satu dan memulakannya seperti berikut:

string name[NUM_MONTHS+1]={" ", "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"};
int days[NUM_MONTHS+1] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

Perhatikan bahawa elemen tatasusunan 0 tidak digunakan. Ia hanya nilai maya. Ini akan menyimpan nama Januari dalam nama[1], nama Februari dalam nama[2] dan seterusnya. Begitu juga, bilangan hari pada bulan Januari akan disimpan dalam elemen hari[1], bilangan hari pada bulan Februari dalam elemen hari[2] dan seterusnya.

Jika kaedah di atas digunakan untuk mentakrif dan memulakan tatasusunan, gelung hendaklah ditulis semula sebagai bentuk berikut. Ia akan memaparkan kandungan elemen tatasusunan 1~12 dan bukannya elemen 0~11 seperti sebelum ini.

for (int month = 1; month <= NUM_MONTHS; month++)
{
    cout << setw(9) << left << name[month] << " has ";
    cout << days[month] << " days.\n";
}

Jika data sebenar disimpan bermula dengan elemen 1, maka tidak perlu menambah 1 pada subskrip tatasusunan untuk mencari data tertentu. Berikut ialah pengubahsuaian penyata yang menyenaraikan nombor dan nama setiap bulan:

for (int month = 1; month <= NUM_MONTHS; month++)
    cout << setw (2) << month << " " << name [month] << endl;

Kod yang memaparkan bilangan hari dalam bulan yang dipilih oleh pengguna hendaklah diubah suai seperti berikut.

cout << "The month of " << name[choice] << " has "<< days [choice] << " days . \n";

Pemulaan separa tatasusunan

Apabila tatasusunan dimulakan, C tidak perlu mendapatkan nilai setiap elemen, ia boleh juga Mulakan hanya sebahagian daripada tatasusunan, seperti yang ditunjukkan di bawah:

int numbers[7] = {1, 2, 4, 8};

Takrifan ini hanya memulakan 4 elemen pertama tatasusunan 7 elemen, seperti yang ditunjukkan di bawah.

Bagaimana untuk memulakan tatasusunan c
Rajah 2

Perlu dinyatakan bahawa elemen yang tidak dimulakan dalam Rajah 2 semuanya akan ditetapkan kepada sifar. Inilah yang berlaku apabila tatasusunan berangka dimulakan sebahagiannya. Apabila tatasusunan objek rentetan dimulakan sebahagiannya, elemen yang tidak dimulakan semuanya akan mengandungi rentetan kosong, iaitu rentetan panjang 0. Ini benar walaupun tatasusunan yang dimulakan separa ditakrifkan secara setempat. Walau bagaimanapun, jika tatasusunan tempatan tidak dimulakan sepenuhnya, elemennya akan mengandungi "sampah", sama seperti pembolehubah tempatan yang lain.

Atur cara berikut menunjukkan kandungan tatasusunan nombor selepas pemulaan separa:

#include <iostream>
using namespace std;
int main ()
{
    const int SIZE = 7;
    int numbers[SIZE] = {1, 2, 4, 8}; // Initialize the first 4 elements
    cout << "Here are the contents of the array: \n";
    for (int index = 0; index < SIZE; index++)
    cout << numbers [index] << " ";
    cout << endl;
    return 0;
}

Keluaran program:

Here are the contents of the array:
1 2 4 8 0 0 0

Walaupun nilai-nilai permulaan tatasusunan senarai boleh Kurang daripada elemen tatasusunan dibenarkan, tetapi tidak ada nilai lebih daripada elemen tatasusunan dibenarkan. Pernyataan berikut adalah menyalahi undang-undang kerana tatasusunan nombor hanya boleh mengandungi 7 nilai, tetapi senarai permulaan mengandungi 8 nilai.

int numbers [7] = {1, 2, 4, 8, 3, 5, 7, 9};    //不合法

Selain itu, jika elemen dibiarkan tanpa dimulakan, semua elemen selepas elemen itu harus dibiarkan tanpa dimulakan. C tidak menyediakan cara untuk melangkau elemen dalam senarai permulaan. Berikut ialah satu lagi contoh haram:

int numbers [7] = {1, , 4, , 3, 5, 7};    // 不合法

Saiz tatasusunan tersirat

可以通过提供一个包含每个元素值的初始化列表来定义一个数组而不指定它的大小。C++ 会计算初始化列表中的项目数,并为数组提供相应数量的元素。例如,以下定义创建 了一个包含5个元素的数组:

double ratings [] = {1.0,1.5,2.0,2.5,3.0};

注意,如果省略大小声明符,则必须指定一个初始化列表。否则,C++ 不知道该数组有多大。

初始化变量的新方法

到目前为止,已经介绍过的定义和初始化常规变量的方法是使用赋值语句,示例如下:

int value = 5;

但是,我们已经学习过使用函数、数组以及类,所以现在是时候来介绍另外两种在定义变量的同时即进行初始化的方法。

第一种新方法是使用函数符号初始化变量。它看起来就像是给一个函数传递参数。如果您已经掌握了类的内容,那么就会注意到,它也很像是在创建类对象时给一个构造函数传递值。以下是使用函数符号定义变量 value 并初始化其值为 5 的示例语句:

int value (5);

第二种初始化变量的新方法是 C++ 11 中新引入的,使用大括号表示法。它看起来就像是刚刚上面所看到的初始化数组的方法,但是其中有两点区别:

  • 因为常规变量只能一次保存一个值,所以通过这种方法初始化变量时,大括号中只有一个值;

  • 和数组初始化列表不一样,通过这种方法初始化变量时,在大括号前面没有赋值运算符(=)。

以下是使用大括号表示法定义变量 value 并初始化其值为5的示例语句。

int value{5}; //该语句仅在C++ 11或更高版本中合法

绝大多数程序员会继续使用赋值运算符来初始化常规变量,本书也将如此,但是,大括号表示法提供了一项优点,它会检查用来初始化变量的值,并确保匹配变量的数据类型。例如,假设 doubleVal 是一个 double 类型变量,存储在其中的值为 6.2。则使用赋值运算符时,可以编写以下两种形式的语句之一:

int valuel = 4.9;    //该语句将给valuel赋值为。4
int vaule2 = doubleVal;    // 该语句将给 value2 赋值为 6

在这两种情况下,值的小数点部分都会被先截断,然后才赋值给被定义的变量。这虽然可能会导致一些问题,但 C++ 编译器是允许的,它也会提出警告,但却仍然能生成可执行文件,并且可以运行。不过,如果在这里使用的是大括号表示法,则编译器会指出这些语句产生了一个错误,并且不会生成可执行文件。必须先修复该错误,然后重新编译项目才能运行该程序。

相关推荐:《C++视频教程

Atas ialah kandungan terperinci Bagaimana untuk memulakan tatasusunan c. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah kandungan program c?Artikel seterusnya:Apakah kandungan program c?