#include <iostream>
using std::cout;
using std::endl;
int main()
{
int i, a = 0, j;
int num[26]={};
char alp[26], ch[100]={'s', 'd', 'd', 'e', 'f', 'g' };
//Initialize array alp[] with alphabets a to z.
for(int i=97; i <(97+26) ; i++)
alp[i-97]=i;
for (i = 0; i < 26; i++)
{
for (j = 0; ch[j] != '\0'; j++)
{
if (alp[i] == ch[j])
num[i] = a++;
}
cout << endl << string(5, ' ') << alp[i] << string(5, ' ');
if (num[i])
cout << num[i] << endl;
else cout << endl;
}
return 0;
}
没有编译错误。但是,当我打印时,我得到垃圾值(num [i])。基本上我将一个字符数组与一个字母数组进行比较,然后用chb数组包含的字母数字(alp数组,已经用所有字母a到z初始化)打印一个表。
答案 0 :(得分:3)
您的数组num
未初始化,因此它获取了垃圾值。如果你想用0更改你的代码来初始化它:
int num[26] = {};
出于问题的目的,当您初始化循环中使用的每个值时,问题会变得更加清晰,但效果会更差
int i, a = 0, j;
int num[26];
for (i = 0; i < 26; i++)
{
num[i]=0;
...
当然,初始化是更简洁,更清洁的解决方案。