当前位置: 首页 > 知识库问答 >
问题:

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

冷浩瀚
2023-03-14

你好,我是一个初学写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语句时编译器如何读取循环感到困惑。

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

共有3个答案

辛才俊
2023-03-14
#include <stdio.h>
#include <limits.h>

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

    do
    {
        printf("Enter a positive integer: ");
        scanf("%d", &integer);
        if (integer < 0)
        continue;
        else if (integer == 0)
        break;
        else
        {
            if (integer > largest_int)
            largest_int = integer;
            if (integer < smallest_int)
            smallest_int = integer;
        }
    } while(1);

    printf("Largest integer is %d\nSmallest integer is %d", largest_int, smallest_int);
}
钮轩昂
2023-03-14

这不是解决方案,而是代码中的一些编码错误:

您的代码不会首先工作,如下所示

 int integer=0, largest_int, smallest_int;

            while (integer) {
                    ........
                            }

这里的整数是 0,你给出这个,而这将在第一次检查时出现。

姜德容
2023-03-14

由于这似乎是家庭作业,因此有几点供您思考。

您的 while(整数)永远不会在您将整数初始化为零时执行。所以你真正拥有的是 while(0),循环内的任何内容都不会被执行。你可以用 do { ... } while(condition) 替换它,但我宁愿保留电流循环的那种,并在循环之前添加一个额外的输入读数(原因是初始化变量以获得最大和最小查找 - 见下文)。

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

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

这些是算法中较大的几行。实现由你决定。

最后一点:我不喜欢将一个值命名为< code>integer,但这只是我的情况。

 类似资料:
  • 我有一个家庭作业,要求我使用输入对话框要求最终用户输入一个数字,将该字符串解析为int,然后使用确认对话框询问用户是否要输入另一个数字。如果单击“是”,程序将循环,一旦单击“否”,它将获取所有输入的数字,并确定最小值和最大值。如何跟踪所有输入的数字,而不声明多个变量来保存它们(因为从技术上讲,用户可以输入无限数量的数字)? 我对编程很陌生。我一直在搜索我的教科书,我浏览了堆栈溢出来找到我的具体问题

  • 解决了 我想问用户他想输入多少个整数,然后读取所有数字,同时跟踪他们输入的最大和最小数字。然后打印最大和最小数字。 我正在考虑将最大值和最小值设置为第一个输入的数字,然后在for循环中读取下一个数字,并使用更大/更小的数字更改最大值和最低值。但是,它只打印用户输入的第一个数字。有人能帮我吗?非常感谢。 代码:

  • 我正在写一个方法,它接受用户的整数输入,并显示总数、平均值、最大值和最小值。 我有总数和平均工作,但我得到2147483647最大和-2147483648最小。 循环只能在用户输入-1时结束。 我的代码:

  • 问题内容: 我被分配编写一个程序,该程序读取一系列整数输入并打印-输入的最小和最大-以及偶数和奇数输入的数量 我想出了第一部分,但对如何使程序显示最大和最小感到困惑。到目前为止,这是我的代码。我怎样才能显示最小的输入呢? 问题答案: 最简单的解决方案是使用诸如和

  • 我的代码要求用户输入动物物种的值,然后将其显示给他们。我只需要最后添加一个部分,它也会告诉用户最濒危的动物(输入的数字最低)。我已经环顾了一些地方,并使用x进行了triec

  • 以下是任务的具体要求: “首先,启动NetBeans并关闭之前可能打开的所有项目(在顶部菜单“转到文件”)== 然后创建一个名为“MinMax”(不带引号)的新Java应用程序,该应用程序声明一个长度为5的双精度数组,并使用方法使用来自命令行的用户输入填充数组,并打印出数组中的max(最高)和min(最低)值。确定最大值和最小值的方法可能不使用Java中的任何内置排序方法。也就是说,您需要在这些方