C++ 以C+格式发行+;阵列

C++ 以C+格式发行+;阵列,c++,arrays,C++,Arrays,我正试图做一些家庭作业,我遇到了一个问题。我的作业是 •使用for循环打印阵列的内容 输出应如下所示: cout << Letters[i] << " "; 数组的打印内容 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

我正试图做一些家庭作业,我遇到了一个问题。我的作业是

•使用for循环打印阵列的内容

输出应如下所示:

cout << Letters[i] << " ";
数组的打印内容

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***
#包括
使用std::cin;
使用std::cout;
使用std::endl;
//主函数开始程序执行
int main()
{
//字母表数组声明
字符字母[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'};
对于(int i=0;i<27;i++)
{

cout数组索引从
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;
cout要删除“一堆随机字符和符号”,请在
字母的末尾添加一个
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次,这可能不是您想要的。编辑:上一条语句错误-我错过了您的
中断;

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

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

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

<代码> CUT

在数组末尾加一个null。C函数检查一个空字符终止。C++中的< /P> < P> char数组是空的,因此当你初始化数组

时,从零开始索引。
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个空间来终止数组,这会导致未定义的行为


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

你有一个off by one错误。但这不是重点,对吗?Jack实际上没有循环。
你不是也有
break;
吗?你知道这会打断for循环吗?谢谢billz,我更改了它,但它仍然给我同样的问题。在Z之后,它正在打印一个一堆符号。@Jack,对不起,我打错了,我已经解决了。这实际上解决了我的问题。非常感谢!我将字母[26]切换到[27]添加了0,效果非常好!我很感激!@Jack,如果你最终打印出27份而不是一份,这怎么可能解决你的问题呢?;-)@dasblinkenlight,中断声明:(@chris两个错误有时会变成一个正确,这不是很有趣吗?不过老师不会喜欢这个解决方案:)我不确定。我仍然是新的。但是当我在数组中添加Z之后的0时,它给了我一个错误:对许多初始化器值。我将26改为27,解决了这个问题。如果我不得不猜测,我会说第27个null终止了数组,如上面所述。当9分钟的tim结束。谢谢。约瑟夫的评论向我展示了如何做到你所说的!我感谢你的帮助!啊,我明白你的意思了!我会检查一下,看看会发生什么。我得到了想要的打印输出,但据我所知,它仍然是错误的。^ ^我做了更改字母[I]我<26,它只打印一个now@Jack这是因为您需要删除
中断
。当您有
中断
时,发生的情况是循环实际上已经消失了:它经历了第一次迭代,并且立即退出,而不返回。