如何让if语句仅在输入字符时执行,输入整数/空值时执行else
实现字符输入的条件判断逻辑
看起来你需要让程序只在输入是字符(字母)的时候执行if块,输入整数或者没有输入的时候走else块对吧?结合你给出的代码框架,我来帮你补全逻辑:
首先,我们可以利用ctype.h里的isalpha()函数判断输入是否是字母字符,同时结合CS50的get_char()处理输入,还要考虑无输入(EOF)的情况。
完整代码实现
#include <stdio.h> #include <ctype.h> #include <cs50.h> #include <stdbool.h> int main(void) { // 用布尔值标记用户是否测试失败(true=失败,false=通过) bool failed = false; // 初始分数0,答对一题加10分 int score = 0; char answer1, answer2, answer3, answer4, answer5; // 处理第一个输入示例 printf("请输入第1题答案(字母):"); answer1 = get_char(); // 核心判断:仅当输入是字母且不是无输入(EOF)时执行if块 if (isalpha(answer1) && answer1 != EOF) { // 这里是输入为字符时的操作逻辑,比如判断答案正确性 if (toupper(answer1) == 'B') { score += 10; printf("答对啦!当前分数:%d\n", score); } else { failed = true; printf("答案错误\n"); } } else { // 输入是整数、符号或无输入时执行的逻辑 failed = true; printf("输入无效,请输入字母字符\n"); } // 其余4个输入可按照上述逻辑复制修改 // ...(answer2至answer5的判断代码) // 最终结果输出 if (!failed) { printf("恭喜完成测试!最终分数:%d\n", score); } else { printf("测试未通过,请重新输入正确的字母答案\n"); } return 0; }
关键逻辑说明
- 字符判断:
isalpha()函数会检查输入是否为大小写字母,返回非0值代表是字符,0则表示输入是数字、符号等非字符内容。 - 无输入处理:当用户无输入或按下
Ctrl+D结束输入时,get_char()会返回EOF,我们需要把这种情况也纳入else的判断条件。 - 大小写兼容:用
toupper()把输入转为大写,这样不管用户输入大写还是小写字母,都能统一进行答案判断。
测试场景验证
- 输入
B或b:进入if块,若答案匹配则加分。 - 输入
3或@:进入else块,标记输入无效。 - 直接按
Ctrl+D:进入else块,提示输入无效。
内容的提问来源于stack exchange,提问作者Karsen hettinger
相关产品推荐
相关产品推荐

