gpt4 book ai didi

C - 无法使用 while 和逻辑运算符停止程序

转载 作者:太空宇宙 更新时间:2023-11-04 04:32:01 25 4
gpt4 key购买 nike

我刚开始学习 C,但我真的不知道我做错了什么。我写了这段代码,它应该在收到负数时停止读取数字。我浪费了很多时间试图找出问题所在,但我仍然不知道它是什么。

#include<stdio.h>
int main(){
const int qtd = 3;

float ent[qtd];
int i = qtd;

printf("Digite os numeros\n");

do{
scanf("%f", &ent[i]);
i--;
}while (ent[i] >= 0 && i >= 1);



printf("\n\n\n\nPressione 'Enter' para sair");
fflush(stdin);
getchar();
return 0;
}

最佳答案

问题出在您检查是否为负数的 ent 索引上。它是ent[i],但它是 i 递减之后,所以你正在读取尚未被写入的位置 扫描

要解决此问题,请更改代码以使用先前的位置,即

do {
...
} while (ent[i+1] >= 0 && ...);

您的代码还有其他几个问题,所有问题都来自数组索引从 1 开始的假设。然而,在 C 中,初始索引是零,而不是一,所以正确的检查应该是

do {
...
} while (ent[i+1] >= 0 && i >= 0);

此外,i 应该初始化为 int i = qtd-1; 以避免写入超过分配数组的末尾。

关于C - 无法使用 while 和逻辑运算符停止程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35051879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com