如何让Armstrong数判断程序运行结束后自动请求新数字
实现可重复判断Armstrong数的程序
要让程序支持重复输入并判断,核心是用循环包裹核心逻辑,同时每次循环重置状态变量、添加用户选择是否继续的交互。以下是修改后的代码:
#include <stdio.h> int main() { char choice; do { int numDgt, number, rem, mul = 1, cnt, result = 0; printf("Enter a number : "); scanf("%d", &number); int n = number; numDgt = 0; while (n != 0) { n = n / 10; numDgt++; } cnt = numDgt; n = number; while (n != 0) { rem = n % 10; while (cnt != 0) { mul = mul * rem; cnt--; } result = result + mul; cnt = numDgt; n = n / 10; mul = 1; } if (result == number) { printf("%d is an Armstrong number.\n", number); } else { printf("%d is not an Armstrong number.\n", number); } printf("Do you want to check another number? (y/n): "); scanf(" %c", &choice); // 空格用于跳过输入数字后残留的换行符 } while (choice == 'y' || choice == 'Y'); return 0; }
修改要点:
- 外层使用
do-while循环:确保程序至少执行一次判断逻辑,之后根据用户输入的y/Y决定是否继续循环。 - 变量内部初始化:将
result、mul等状态变量放到循环内部,每次循环都会重新赋值,避免上次运行的残留值干扰判断结果。 - 添加续询交互:每次判断结束后询问用户是否继续,通过字符输入控制循环走向,
scanf中的空格用于规避输入数字后遗留的换行符导致的无效读取问题。
内容的提问来源于stack exchange,提问作者AmineDELTA
相关产品推荐
相关产品推荐

