C中的正数和负数程序

时间:2013-10-01 00:04:23

标签: c if-statement while-loop numbers

我正在尝试用c创建一个程序:

•一次从用户那里获得正值

•使用循环语句

的未知数量的正值

•通过程序提供的提示一次输入一个正值

•当用户在提示符处输入负值时,它会终止数据输入。

•数据输入终止后,程序将在屏幕上显示以下信息:

 •  The largest positive value entered
 •  The smallest positive value entered
 •  The average of all the values enter 

还试图在不使用数组或高级数据结构的情况下完成此任务。主要是尝试通过使用变量,循环语句和条件语句(如if,else。

)来完成任务

而(n> 0)

之后我就被卡住了。这是我正在努力完成我目前正在完成的任务的程序。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我将为您提供一个示例方法。但是,此示例不验证用户输入。您验证用户输入 非常重要,这是您所期望的。我将把这作为阅读的练习:

#include <stdio.h>
#include <limits.h>

int main(void) {

    int input;
    int total   = 0;
    int max     = 0;
    int count   = 0;
    int min     = INT_MAX;

    while(scanf("%d", &input)) {

        if (input<0)
            break;

        if (input>max)
            max = input;
        else if (input<min)
            min = input;

        total += input;
        count++;

    }

    if (count>0)
        printf("Max: %d\tMin: %d\tAverage: %f\n", max, min, (double)total/count);
    else
        printf("No positive numbers entered\n");

    return 0;
}

答案 1 :(得分:0)

欢迎编程。

你有一个问题要解决,幸运的是它以一种非常明确的方式陈述。后来的问题不会那么清楚。

下一步是分析它。在实践中,这意味着将它拆开以检查问题的每个部分,理解它们,并看看它们如何组合在一起。您可以看到指定的部分解决方案可以帮助您入门:“使用循环语句”。

问题指定输入(将输入的数字)以及程序将产生的输出。让我们以简化的方式介绍它。

对于每个输出,您需要考虑如何从输入中获取它们。

  • 输入的最大正值
    问:该计划将如何获得? 答:您需要创建一个变量,其值跟踪输入的最大正值 问:它会是什么类型? 答:现在,只需将其设为您所读取的类型:int。您的规范没有说“整数”或“整数”,因此更好的选择可能是float。这是您应该向您的客户/用户/老师澄清的示例。现在,让我们坚持int 问:应该初始化每个变量。你会给它什么初始值?
    A:嗯。它需要小于每个正数,以便当程序将第一个输入与它进行比较时,输入将更大。 技术上,正数大于零,所以零是一个不错的选择 问:它的名字是什么? 答:它首次出现的难题更大。我们选择的名称赋予我们的代码含义,因此值得考虑。但我们也必须实际。我们可以称之为The_largest_positive_value_entered,但我们很快就会厌倦打字和阅读。 maximum很好且相当清楚,max也很好,但通常会避免像m这样的名称,因为它们没有足够的含义。
    问:什么时候会改变价值? 答:在循环内部,如果输入值&gt;您的程序将需要测试(使用伪代码);最大值然后输入最大值&lt; - (表示已分配)值。您需要将其翻译为C.

您需要对每个输出执行类似的推理,以及如何决定循环,以及如何处理nun-numeric输入和无输入。

因为你是初学者,所以先编写程序,使用just和maximum,然后测试它,然后添加最小代码并测试它,然后测试平均值等。

观察代码如何与调试器一起使用以帮助您自己学习,并将printf语句(您稍后将注释掉)放入您想要了解的输出值。

避免复制其他人的代码。编程是您通过学习的实用技能。阅读其他人的代码可能很好,因为你可以了解风格,技巧和想法。但是如果你想学习编程,不要复制代码。