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

Using Stacks to convert numbers into characters

本文关键字:转换 字符 数字 堆栈      更新时间:2023-10-16

我写了下面的代码来将数字转换为字母。我的问题是程序正确转换了用户输入的第一个数字,但它为其他人提供了与第一个相同的字母。

例如,如果用户输入数字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;
}

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

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

如果您的代码被正确缩进/格式化,您就会自己发现。