c - 未知数量的用户输入整数

标签 c

所以本周我作业的第二部分是:编写一个程序,接受任意数量的正整数,由 用户,然后打印出最大和最小整数以及平均值 这两个。程序应该接受数据,直到用户发出数据输入信号为止 通过输入负值来完成。 该程序应使用作业 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;
    }

}

最佳答案

尝试一些类似的事情

#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;
}

关于c - 未知数量的用户输入整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40512094/

相关文章:

c - 全局空间中的指针初始化 C 语句如何在编译/链接时获取其分配的值?

c - 为什么当我使用 qsort() 对字符串数组进行排序时 qsort() 不起作用?

c - zlib Z_DATA_ERROR "invalid code lengths set"

c - c89 中的 fmax 和 fmin 替代方案

c - 关系运算符会影响赋值运算符操作吗?

c - 使用 printf 而不必转义双引号?

c - 反汇编简单的 C 函数

c - 如何在 C 中的嵌套结构中创建指向变量的指针?

c - 并非每个单元格都已填充时打印数组

c - 使用 fgets 和 strtok 从文件中的单行检索单词