You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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)

另外补充两个优化点:

  1. void main()不符合C标准,建议改为int main()并在末尾添加return 0;
  2. 移除非标准头文件#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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:48:21