C语言接收用户输入大写字母后打印后续字母序列的实现问询
代码存在的问题
- 核心语法错误:
scanf读取输入时需要传入变量的内存地址才能完成赋值,原代码写的scanf("%c",alpha_U)没有给变量加取地址符&,属于未定义行为,会导致输入读取失败,甚至程序崩溃。 - 缺少输入合法性校验:没有判断用户输入的字符是否是A-Z区间内的大写字母,如果用户输入小写字母、数字或特殊符号,循环会输出非预期的乱码字符,或者直接无输出。
- 输出格式缺失:打印完字母序列后没有追加换行符,输出内容会和终端命令提示符挤在同一行,显示异常。
修正后可运行代码
#include<stdio.h> int main(){ char alpha_U; printf("Enter the letter from where you want in upper case: "); // 传入变量地址,同时判断scanf读取是否成功 if (scanf("%c", &alpha_U) != 1) { printf("Failed to read input\n"); return 1; } // 校验输入是否为合法大写字母 if (alpha_U < 'A' || alpha_U > 'Z') { printf("Invalid input, please enter an uppercase letter from A to Z\n"); return 1; } for(char i = alpha_U; i <= 'Z'; i++){ printf("%c",i); } // 打印结束后输出换行 printf("\n"); return 0; }
运行说明
- 输入合法大写字母时,会从输入字母开始顺序打印直到Z的所有大写字母,例如输入
F,输出为FGHIJKLMNOPQRSTUVWXYZ - 输入内容不符合要求时,会直接给出错误提示,不会输出乱码。
内容的提问来源于stack exchange,提问作者dev op
相关产品推荐
相关产品推荐

