未知数量的用户输入整数

时间:2016-11-09 16:49:48

标签: c

所以本周我的作业的第二部分是:编写一个程序,接受任意数量的正整数,由 用户,然后打印出最高和最低整数,以及平均值 这两个。程序应接受数据,直到用户发出数据输入信号为止 输入负值即可完成。 该程序应使用Assignment 1中的函数,即返回的函数 两个整数参数中较大的一个,一个返回两个整数中较低的一个,一个 返回平均值。

我远远超出了我的深度,这是令人难以置信的。非常担心这个模块,因为它似乎并没有为我下沉。 :(

我似乎无法弄清楚如何使用未知数量的整数来做这件事。目前该计划引发了一个奇怪的结果。

到目前为止,我的代码是:

#include <stdio.h>
#include <stdlib.h>

int getLo(int num1, int num2); 
int getHi(int num1, int num2);
float getAv(int num1, int num2);

int main() 
{
    int num1, num2;
    int count=0,i;
    int *storedNumb;

    printf("Enter the amount of integers you would like to enter:\n\n\n\n");
    scanf("%d", &count);

    printf("Enter %d positive integers:\n", count);

     storedNumb= (int *) calloc(count,sizeof(int));

    for(i=0; i<count; ++i)
    {
        scanf("%d",&storedNumb[i]);
        printf("\nYou entered %d\n",storedNumb[i]);
    }

    float avg = getAv(num1, num2);

    if (num1 <= 0){ // if statement prompting a positive input
        printf("Please enter POSITIVE integers!\n");
        return 0;}
        else if (num2 <= 0){
                printf("Please enter POSITIVE integers!\n");
                return 0;
                }


    printf("The smallest number you entered is: %d\n", getLo(num1, num2));
    printf("The largest number you entered is: %d\n", getHi(num1, num2));
    printf("%.2f is the average of the integers you entered\n", avg);

    return 0;

}

float getAv(int num1, int num2)
{
    return (num1 + num2) / 2.;
}

int getLo(int num1, int num2)
{
    if (num1 < num2)
    {
        return num1;
    }
    else
    {
        return num2;
    }
}

int getHi(int num1, int num2)
{
    if (num1 > num2)
    {
        return num1;
    }
    else
    {
        return num2;
    }

}

1 个答案:

答案 0 :(得分:1)

尝试一下

的内容
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int lo, hi, input;
    scanf("\n%d", &input);
    if(input >= 0) {
        hi = input;
        lo = input;
        while(input >= 0) {
            if(input > hi) {
                hi = input;
            }
            if(input < lo) {
                lo = input;
            }
            scanf("\n%d", &input);
        }
    }
    printf("\nlo:%d", lo);
    printf("\nhi:%d", hi);
    printf("\navg:%d", (hi + lo)/2);
    return 0;
}