C++数组中的问题

Issue in C++ Arrays

本文关键字:问题 数组 C++      更新时间:2023-10-16

我正在尝试做一些作业,但我遇到了一个问题。我的作业是

•使用 for 循环打印数组的内容。

输出应如下所示:

阵列的打印内容

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

我有我的代码,它正在工作。然而,在我的字母表末尾出现了一堆随机字符和符号。你们看到我做错了什么吗?

这是我的代码。

#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***

基本上,简单地说,问题是它像我想要的那样打印A-Z,但也在Z之后打印一堆随机符号。由于我是新手,我相信这可能是一件简单的事情。提前感谢!

将字符数组传递给输出流时,该数组必须以 null 结尾。您的数组不是以空结尾的;这就是为什么你最后会得到额外的垃圾。

但是,这不是解决方案的主要问题:您需要索引字母,如下所示:

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

最后,对于 26 个字母,索引从 0 变为 25,因此循环延续条件应为 i < 26i != 26i <= 25

要删除"一堆随机字符和符号",请在Letters末尾添加一个NUL

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;

在数组末尾添加一个空值。 C 函数检查要终止的空字符。

数组索引从 0N 开头,你在 Letters 中有 26 个字符,索引从 025 开头:

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

break;通常用于在特定条件下断开forwhile循环。你for循环finishes smoothly, you don't need a在循环中中断。

C++中的字符数组以 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'};

您没有考虑到您需要 1 个空间来终止导致未定义行为的数组

由于您将字母[0]打印到字母[26],因此在编写字母[26]时再次导致未定义的行为,因此出现了垃圾值