如何在C语言do/while循环中添加输入小于1时的退出逻辑?
实现输入小于1时退出并打印错误信息的解决方案
原代码问题分析
- 循环条件
miles != 0不符合需求,无法在输入小于1时触发退出逻辑 - 错误提示位置错误,无法在输入非法值时及时触发
- 缺少对输入值小于1的判断分支
修改后的代码
#include <stdio.h> #define KILOMETERS_PER_MILE 1.609 // 定义英里转公里的常量 int main() { double kilometers; double miles; int inputCount; do { printf("Please enter the distance in miles: "); inputCount = scanf("%lf", &miles); // 处理输入格式错误:比如输入非数字 if (inputCount != 1) { printf("ERROR: invalid input. Program has stopped.\n"); return 2; } // 处理输入值小于1的情况:打印错误并退出 if (miles < 1) { printf("ERROR: invalid input. Program has stopped.\n"); return 1; } // 计算并输出转换结果 kilometers = miles * KILOMETERS_PER_MILE; printf("That is equal to %.2f kilometers.\n", kilometers); // 持续循环接收输入,直到触发退出条件 } while (1); // 以下代码不会被执行,因为程序会通过return提前退出 printf("Thank you for calculating with us today.\n"); return 0; }
关键修改说明
- 添加
miles < 1的判断分支,满足条件时立即打印错误信息并通过return终止程序 - 将格式错误的提示信息移至对应判断分支内,确保格式错误时能及时反馈
- 循环条件改为
while(1),让程序持续运行直到遇到非法输入触发退出 - 调整变量定义位置,提升代码可读性
内容的提问来源于stack exchange,提问作者RenegadeQueermo
相关产品推荐
相关产品推荐

