c++ - 带字符的 do-while 循环
问题描述
我正在尝试将通过用户输入输入到数组中的字符与一些 ASCII 值进行比较。用户应该在 testAnswers[i] 中输入 20 个测试问题的答案,以查看它们是否与字母 AD(大写,因此 toupper)匹配。但是,当程序运行时,do-while 循环似乎被完全忽略了,您可以毫无问题地输入几乎任何字符。我将如何解决这个问题?这是我的代码:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
char testAnswers[20];
char answers[] = {'A', 'D', 'B', 'B', 'C', 'B', 'A', 'B', 'C', 'D', 'A', 'C', 'D', 'B', 'D', 'C', 'C', 'A', 'D', 'B'};
int testSize = sizeof(answers) / sizeof(answers[0]);
cout << "Enter the student's test scores: ";
for (int i=0; i<testSize; i++) {
do {
cin >> testAnswers[i];
testAnswers[i] = toupper(testAnswers[i]);
} while (testAnswers[i] < 'A' && testAnswers[i] > 'D');
}
for (int i=0; i<testSize; i++)
cout << testAnswers[i];
return 0;
}
解决方案
您正在检查 char 的 ASCII 值是否小于 65 且大于 68。要检查 char 是否是 A 和 D 之间的字符,您必须检查 char 的 ASCII 值是否大于等于 65 且小于等于68
do
{
// code statement
}while(testAnswers[i] >= 65 && testAnswers[i] <= 68 );
推荐阅读
- nginx - 如何将 url/abc 重定向到 url/abc/live-preview,其中 abc 是变量名?
- java - 如何使用查询删除数据库中的行?
- javascript - javascript石头剪刀布游戏()函数中的循环功能和计数
- python - 通过队列中的特殊对象通过队列终止多线程处理是否合理?
- powershell-7.0 - 将 SSL 证书绑定到我的站点在管理员模式下的 powershell ise 中有效,但在管理员模式下的 PowerShell 7 中无效
- php - 从多个 json 数组 url 中获取值
- javascript - Axios 给出错误:404(未找到)所有请求
- azure - 从其他设备注销用户
- testing - Testcafe 报告生成 - 开源引擎
- android - 多对多 android room ref 额外变量