gpt4 book ai didi

c - 当用户可以在 c 中提供任意多的输入时,如何确定最小和最大的正整数输入?

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:59 24 4
gpt4 key购买 nike

您好,我是一个学习编写 c 的初学者,我想知道您将如何编写一个代码来提示您给出一个正整数并在您输入 0 并且 0 之前的前一个数字至少为 2 正数后结束整数。然后程序确定最大的正整数输入和最小的整数输入。

#include <stdio.h>

int main(void)
{
int integer=0, largest_int, smallest_int;

while (integer) {
printf("Please enter a positive integer: \n");
scanf("%d", &integer);
if (integer = 0) {
while (integer<=0) {
printf("Please enter a positive integer: \n");
scanf("%d", &integer);
if (integer>0) {
printf("Please enter a positive integer: \n");
scanf("%d", &integer);

if (integer>0) {
printf("the largest integer is.....and the smallest integer is......");printf("Please enter a positive integer: \n");
break;
}
else {
printf("Please enter a positive integer: \n");
scanf("%d", &integer);
}
}
}
}
}

return 0;
}

起初我尝试使用 do/while 循环,但它根本不起作用。

当循环中有 if ese 语句时,我还对编译器如何读取循环感到困惑。

这是我的想法:我想过让“输入正整数”重复询问,直到您输入两个正数。然后我会让程序检查下一个输入是否等于零,如果不等于,则它再次继续循环。如果用户确实输入了至少两个正整数,然后输入了一个零,则循环中断,我打印出最大的整数和最小的整数。同样让我感到困惑的是,您如何能够过滤所有用户的输入并确定这些值,因为我可以连续输入整数 100000000000000000000 次,而在所有这些次数之后我怎么知道?

最佳答案

这似乎是作业,有几点需要你思考。

您的 while (integer) 永远不会执行,因为您在它之前将 integer 初始化为零。所以你真正拥有的是 while(0),并且循环内的任何内容都没有执行。您可以将其替换为 do { ... } while(condition) 但我宁愿保留当前循环的类型并在循环之前添加额外的输入读数(原因是初始化变量最大和最小的发现——见下文)。

添加一个变量,比如说 NPos 来计算最后一个条目中有多少个是正整数。将其初始化为零。每次输入一个数字,如果它是正数,则增加 NPos 的值。否则将其设置为零(这可能很棘手,因为如果条目为零,它也可能意味着停止执行而不是重置 NPos)。当输入的数字为 0 时,检查 NPos 是否至少为 2,如果是,则停止。

要找到极值,请创建两个变量(maxmin)并将它们初始化为第一个用户输入。然后,在每个有效输入处,i。 e.,不是表示执行结束的输入,检查该值是否大于max或小于min。如果是这样,请将 maxmin 替换为输入。

这些是算法的主要部分。实现由您决定。

最后一点:我不喜欢将值命名为 integer,但也许只有我就是这样。

关于c - 当用户可以在 c 中提供任意多的输入时,如何确定最小和最大的正整数输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862497/

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