4

宿題をしようとしていますが、問題が発生しています。私の宿題は

•forループを使用して、配列の内容を出力します。

出力は次のようになります。

配列の内容の印刷

ABCDEFGHIJKLMNOPQRSTU VWXYZ

私は自分のコードを持っていて、それは機能しています。しかし、私のアルファベットの終わりには、ランダムな文字と記号がたくさん表示されます。私が間違っているとあなたたちが見ていることはありますか?

これが私のコードです。

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

// main FUNCTION BEGIN PROGRAM EXECUTION
int main()
{
// ALPHABET ARRAY DECLARATIONS
char Letters [26] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};


for (int i = 0; i < 27 ; i++)
{
cout<< "PRINTING CONTENTS OF ARRAY" << endl;
cout<< "===============================" << endl;
cout<< Letters << " ";
cout<< endl;
break;
}
return 0 ;
} // ***END main FUNCTION***

基本的に、簡単に言えば、私が望むようにAZを印刷するだけでなく、Zの後にランダムな記号をたくさん印刷するという問題があります。何かアイデアはありますか?私はこれに慣れていないので、おそらくそれは単純なものだと確信しています。前もって感謝します!

4

5 に答える 5

4

文字の配列を出力ストリームに渡す場合、配列は null で終了する必要があります。配列は null で終了していません。そのため、最後に余分なゴミが発生します。

ただし、これはソリューションの主な問題ではありません。次のように、文字にインデックスを付ける必要があります。

cout << Letters[i] << " ";

最後に、26 文字の場合、インデックスは 0 から 25 になるため、ループ継続条件はi < 26i != 26、またはになりi <= 25ます。

于 2013-02-03T03:49:22.367 に答える
1

「ランダムな文字と記号の束」を削除するNULには、 の末尾に a を追加しLettersます。

char Letters [] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 
                    'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 
                    'U', 'V', 'W', 'X', 'Y', 'Z', 0};

これはアルファベットを26回印刷しますが、これはあなたが望むものではないかもしれません。編集:前のステートメントが間違っていました--私はあなたのbreak;.

于 2013-02-03T03:49:13.907 に答える
1

配列の最後に null を追加します。c 関数は、終了するヌル文字をチェックします。

于 2013-02-03T03:54:34.590 に答える
0

配列のインデックスはから0で始まりN、文字には26文字あり、インデックスはからで始まり0ます25

cout<< "PRINTING CONTENTS OF ARRAY" << endl;
cout<< "===============================" << endl;

for (int i = 0; i < 26 ; i++)
{
    cout<< Letters[i] << " ";
}
cout<< endl;

break;通常、特定の条件下でブレークforまたはループするために使用されます。whileあなたはforループfinishes smoothly, you don't need aの中でbreak`をループします。

于 2013-02-03T03:47:50.303 に答える
0

C++ の char 配列は null で終了し、ゼロベースのインデックスから開始されるため、配列を初期化すると

char Letters [26] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

未定義の動作を引き起こす配列を終了するために '\0' にさらに 1 つのスペースが必要であることを考慮していませんでした

Letters[0] を Letters[26] に出力するため、Letters[26] を書き込むと未定義の動作が再び発生するため、ごみの値が表示されます

于 2013-02-03T06:45:09.013 に答える