保留C中的输入值?

时间:2016-02-26 21:23:06

标签: c math

我已要求用户输入多个值来计算平均值,但我还要计算使用输入值的渐变。如何命名这些值以便我可以再次使用它们?谢谢。

这是我到目前为止所做的:

#include <stdio.h>

int main () {
    int n, i;
    float num[1000], total=0, mean;

    printf("Enter the amount of x-values:");
    scanf("%d", &n);
    while (n <= 0 || n > 1000) {
        printf("Print error. The number should in range of 0 to 1000.\n");
        printf("Please try to enter the amount again: ");
        scanf("%d", &n);
    }
    for (i = 0; i < n; ++i) {
        printf("%d. Input x-value:", i+1);
        scanf("%f", &num[i]);
        total += num[i];
    }
    mean=total/n;
    printf("The mean of all the x-values entered is %.2f to 2 decimal places", mean);

    {
        float num[1000], total=0, mean;

        printf("Enter the amount of y-values:");
        scanf("%d", &n);
        while (n <= 0 || n > 1000) {
            printf("Print error. The number should in range of 0 to 1000.\n");
            printf("Please try to enter the amount again: ");
            scanf("%d",&n);
        }
        for (i = 0; i < n; ++i) {
            printf("%d. Input y-value:", i+1);
            scanf("%f", &num[i]);
            total += num[i];
        }
        mean = total / n;
        printf("The mean of all the y-values entered is %.2f to 2 decimal places", mean);

        return 0;
    }
}

1 个答案:

答案 0 :(得分:0)

命名变量真的取决于你,但是`int gradient [NUM_ELEMENTS];似乎合适。它是一个数组,如果它的目的是帮助从一系列数字中找到梯度,它似乎也是合适的。

步骤可以是:
1)使用printf向用户询问值,在值之间指定空格或逗号。您还可以指定值的限制。示例printf("enter 5 numbers separated by commas\n:");
2)使用scanf或类似方法将标准输入(终端)的值读入数组:scanf("%d,%d,%d,%d,%d", &gradient[0], &gradient[1], &gradient[2], &gradient[3], &gradient[4]);
3)使用数组一个计算梯度的函数。

简单的例子:
(其中梯度计算,错误检查,边界检查等都留给你)

int get_gradient(int a[5]);

int main(void) {
    int gradient[5];
    int iGradient=0;

    printf("enter 5 numbers separated by commas");
    scanf("%d,%d,%d,%d,%d", &gradient[0], &gradient[1], &gradient[2], &gradient[3], &gradient[4]); 
    iGradient = get_gradient(gradient);

    return 0;
}

int get_gradient(int a[5])
{
    return [do computation here using array a];
}

编辑:
上面的示例仅在您知道编译时元素的数量时才有效。它使用在堆栈上创建的int数组。如果您不知道在运行时需要多大的数组,例如,如果用户输入确定了大小,则需要在运行时确定数组大小。一种选择是创建所需的变量。 ( read about stack and heap here )以下使用与上述更简单版本不同的一些技术来获取用户输入,包括我称为get_int()的函数,该函数将scanf()与{结合使用} {1}}。这是一个例子:

strtol()