我刚刚学习了cpp,到目前为止还不很了解。
我最近学习了“如果”语法,只是为自己做作业。 您得到用户的输入。它可以是字符或数字。 当他键入数字时,它会显示他键入的内容,并且需要根据ASCII表将其更改为字符。 反之亦然。
我已经搜索了一段时间,但是似乎人们正在使用循环,但是我还没有学到。因此,我不会在本作业中使用它。
这是我尝试过的代码,但不知道出了什么问题。
#include <iostream>
using namespace std;
int main()
{
cout << "Enter a Number between 65 to 122 or an Alphabet character : ";
char in_char;
cin >> in_char;
if ((in_char) >= 65 && (in_char) <= 122) // checking for alphabet
cout << in_char << " " << static_cast<int>(in_char) << endl;
else // if input is not an alphabet, it's a number and it should be turnd to a character
cout << in_char << " " << static_cast<char>(in_char) << endl;
return 0;
}
答案 0 :(得分:0)
好的,我想我理解您想要做的没有循环的事情。尽管您可能需要取消对整数输入的限制,以确保输入的一位数字转换为ASCII '0'->'9'
。如果我回答了您的问题,则希望能够输入数字或字符,并验证其是否在[A-Za-z]
或[0-9]
的范围内,然后输出相应的ASCII字符和ASCII字符值(反之亦然)。
例如,如果用户输入以下内容,则您想要类似的输出:
input output
----- -------------------------------------------
5 '5' 5
121 'y' 121
y 'y' 121
200 error: integer out of range
= error: character no within requested range
P 'P' 80
为了完成此任务,您基本上需要尝试读取整数,验证是否发生了不可恢复的cin.eof() || cin.bad()
并错误退出。否则,将发生cin.fail()
并且输入不是整数,并保留在stdin
中,您可以在其中cin.clear()
失败位,然后尝试读取字符。
读取字符后,您具有相同的基本验证,只是没有理由清除失败位,因为尝试读取整数然后字符在该点失败了。
良好地阅读int
或char
时,您只需执行所需的验证即可确保int
或char
在范围内,然后格式化您的输出所需。
带有必要验证的简短示例如下:
#include <iostream>
using namespace std;
int main (void)
{
cout << "Enter a digit or upper or lower case character : ";
int in_int;
char in_char;
if (!(cin >> in_int) ) { /* attempt read of int */
/* if eof() or bad() return error */
if (cin.eof() || cin.bad()) {
cerr << "(user canceled or unreconverable error)\n";
return 1;
}
cin.clear(); /* clear failbit */
}
else { /* good integer read */
if (in_int >= 0 && in_int <= 9) { // checking ASCII [0-9]
cout << "'" << (char)(in_int + '0') << "' " << in_int << endl;
}
else if (in_int >= 'A' && in_int <= 'z') // checking ASCII [A-Za-z]
cout << "'" << (char)in_int << "' " << in_int << endl;
else {
cerr << "error: integer input out of range.\n";
return 1; /* return failure */
}
return 0; /* return success */
}
if (!(cin >> in_char) ) { /* attempt read of char */
/* if eof() or bad() return error */
if (cin.eof() || cin.bad()) {
cerr << "(user canceled or unreconverable error)\n";
return 1;
}
else if (cin.fail()) /* if failbit */
cerr << "error: invalid input.\n";
return 1;
}
else { /* good character input */
if (in_char >= 'A' && in_char <= 'z') // checking ASCII [A-Za-z]
cout << "'" << in_char << "' "
<< static_cast<int>(in_char) << endl;
else
cerr << "error: character not within requested range.\n";
return 1;
}
}
使用/输出示例
$ ./bin/cinonechar
Enter a digit or upper or lower case character : 5
'5' 5
$ ./bin/cinonechar
Enter a digit or upper or lower case character : 121
'y' 121
$ ./bin/cinonechar
Enter a digit or upper or lower case character : y
'y' 121
$ ./bin/cinonechar
Enter a digit or upper or lower case character : 200
error: integer input out of range.
$ ./bin/cinonechar
Enter a digit or upper or lower case character : =
error: character not within requested range.
$ ./bin/cinonechar
Enter a digit or upper or lower case character : P
'P' 80
仔细检查一下,如果还有其他问题,请告诉我。您可以调整int
值范围的检验,以更正我对问题范围的误解。