如果语句C ++被截断(将字母转换为数字)

时间:2016-07-14 20:23:49

标签: c++ if-statement statements truncated

我试图用C ++将一系列字母改成数字,并且已经开始制作这段代码了。

但是,似乎计算digit1变量的数学运算永远不会被执行。

有什么想法吗?

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int qtyofnumbers, num, digit1, counter;
    char letters, upperlower;

    cout << "Enter a letter: ";
    cin >> letters;

    for (counter = 0; counter < 8; counter++)
    {
        if (counter == 3)
            cout << "-";

        num = static_cast<int>(letters) - static_cast<int>('A');

        if (0 <= num && num < 26)
            digit1 = (num / 3) + 2;

        if (((num / 3 == 6 ) || (num / 3 == 7)) && (num % 3 == 0))
            digit1 = digit1-1;

        if (digit1 > 9)
            digit1 = 9;    

        cin >> letters;
    }

    cout << digit1;

    return 0;
} 

2 个答案:

答案 0 :(得分:0)

我的猜测是你输入的问题。你输入大写字母还是小写字母?他们的ASCII codes是不同的。所以,您可能想要更改

中的代码
num= static_cast<int>(letters)-static_cast<int>('A');

类似

if (num >= 'a')
    num = letters - 'a';
else
    num = letters - 'A';

另外,如@jtbandes所述,请使用花括号{}。空格不确定C ++中的范围。即使它只是在你的if语句之后只有一行代码,它将来会让你头疼不已。

答案 1 :(得分:0)

静态演员是否必要?我建议使用字符串流或只是使用.at()逐字符遍历字符串,并依赖ascii值进行转换。 http://web.cs.mun.ca/~michael/c/ascii-table.html