比较要打印的字符数组

时间:2015-06-25 18:06:51

标签: c++

#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初始化)打印一个表。

1 个答案:

答案 0 :(得分:3)

您的数组num未初始化,因此它获取了垃圾值。如果你想用0更改你的代码来初始化它:

int num[26] = {};

出于问题的目的,当您初始化循环中使用的每个值时,问题会变得更加清晰,但效果会更差

int i, a = 0, j;
int num[26];
for (i = 0; i < 26; i++)
{
    num[i]=0;
...

当然,初始化是更简洁,更清洁的解决方案。