使用堆栈将数字转换为字符

时间:2016-04-21 14:52:13

标签: c++ stack

我编写了以下代码将数字转换为字母。我的问题是程序正确地转换了用户输入的第一个数字,但它给了其他第一个相同的字母。

例如,如果用户输入数字012,则程序会将其转换为ABC而不是AAA

我在system ("pause")收到错误,我该如何解决?

#include <iostream>
#include <stack>
using namespace std;
int main() {
    int n;
    string t,u="";
    stack<string> s;
    cout<<"Enter a number n: ";
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>t;
        for(int j=0;j<t.length();j++){
            if(t[i]=='0')
                u= u+'A';
            if(t[i]=='1')
                u= u+'B';
            if(t[i]=='2')
                u= u+'C';
            if(t[i]=='3')
                u= u+'D';
            if(t[i]=='4')
                u= u+'E';
            if(t[i]=='5')
                u= u+'F';
            if(t[i]=='6')
                u= u+'G';
            if(t[i]=='7')
                u= u+'H';
            if(t[i]=='8')
                u= u+'I';
            if(t[i]=='9')
                u= u+'J';
        }
        s.push(u);
    }
    while(!s.empty()){
        cout<<s.top()<<" ";
        s.pop();
    }
    system("pause"); //error
    return 0;
}

1 个答案:

答案 0 :(得分:0)

内部for循环中的循环变量为j,但在循环中,您使用的是i而不是j

for (int j = 0; j < t.length(); j++)
{
   if(t[i] == '0')  //<<<< use j instead of i here
     ...
}

如果您的代码已正确缩进/格式化,您可以自己找到。