如何用scanf终止while循环?求和程序退出逻辑异常求助
问题分析与修复:最多5个数值求和程序的循环退出问题
问题根源
你的程序在输入n后仍继续要求输入数值,核心问题出在while循环的条件判断上:
while(opcion == 's' || con < 5)
这里使用了逻辑或||,意味着只要opcion == 's'或者con < 5任意一个条件成立,循环就会继续执行。哪怕你输入n让opcion != 's',只要还没输入满5个数值,con < 5依旧成立,循环就不会停止。
修复方案
把循环条件的逻辑或||改成逻辑与&&,这样只有当用户选择继续(opcion == 's')并且还没达到数值上限(con < 5)时,才会进入循环:
while(opcion == 's' && con < 5)
另外补充两个优化点:
void main()不符合C标准,建议改为int main()并在末尾添加return 0;- 移除非标准头文件
#include <conio.h>,多数现代编译器不支持该头文件
修复后的完整代码
#include<stdio.h> #include<stdlib.h> int main(){ float vector[5]; float suma; int con, i; char opcion; suma = 0; con = 0; i = 1; opcion = 's'; printf("Sumador de hasta 5 valores"); while(opcion == 's' && con < 5){ printf("\nIngrese valor %i:", i++); scanf("%f", &vector[con]); suma += vector[con]; con++; // 仅未达上限时询问是否继续 if(con < 5){ printf("\nDesea cargar otro valor?(s/n):"); scanf(" %c", &opcion); } } if(con == 5){ printf("\nSe supero el limite de valores permitidos"); } printf("\nLa suma es: %.2f", suma); return 0; }
效果说明
修复后,输入n会直接终止循环;输入满5个数值时,程序自动退出循环并提示超出上限,同时优化了询问逻辑,避免在达到上限后多余的交互。
内容的提问来源于stack exchange,提问作者ManuMontesino
相关产品推荐
相关产品推荐

