c - 不知道如何正确接收和使用用户输入

标签 c arrays scanf

我已经写出了我想要使用的主要代码。我需要做的就是让用户输入五个数字。然后,一旦他们插入数字,我需要将它们输入到数组中,以便可以计算它们。我试图了解如何成功获取用户输入并使用它,但一直无法弄清楚。

int
main (int argc, char **argv)
    {
    int number1;
    int number2;
    int number3;
    int number4;
    int number5;
    int a[5];
    printf("Enter a number\n");
    scanf ("%d, number1");
    printf("Enter a number\n");
    scanf ("%d, number2");
    printf("Enter a number\n");
    scanf ("%d, number3");
    printf("Enter a number\n");
    scanf ("%d, number4");
    printf("Enter a number\n");
    scanf ("%d, number5");
    a[0] = number1;
    a[1] = number2;
    a[2] = number3;
    a[3] = number4;
    a[4] = number5;
    int mean = (a[0] + a[1] + a[2] + a[3] + a[4]) / 5;
    int difference0 = a[0] - mean;
    int difference1 = a[1] - mean;
    int difference2 = a[2] - mean;
    int difference3 = a[3] - mean;
    int difference4 = a[4] - mean; 
    int variance = ((difference0 * difference0) + (difference1 * difference1) + (difference2 * difference2) + (difference3 * difference3) + (difference4 * difference4)) / 5;
    double sdeviation = sqrt(variance);

    printf("the mean of the array is %d\n",mean);
    printf("the variance of the array is %d\n",variance);
    printf("the standard deviation of the array is %f\n",sdeviation);
    return 0;
    }

最佳答案

首先,您不需要 numberN 局部变量。您可以定义数组并直接将数字读入其中。

也就是说,不要一遍又一遍地重复相同的代码。

将代码更改为

#define ARRSIZE 5

int a[ARRSIZE] = {0};
for (int i = 0; i < ARRSIZE ; i++) {
  printf("Enter a number\n");
  scanf ("%d", &a[i]);
 }

此外,检查 scanf() 函数的返回值以确保扫描成功始终是一个好习惯。

建议:始终启用编译器警告并尝试解决警告。

关于c - 不知道如何正确接收和使用用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35206968/

相关文章:

arrays - 使用一维数组设计二项式系数算法

c - scanf 在这个简单的程序中如何工作?

c - fscanf 在 C 中的用法

c - 在 C 中的变量中定义的数组大小无法在 IAR 中编译,但在 Keil 中构建良好

C 指向负长度数组的指针奇怪的行为 Apple LLVM 编译器

更改用户 ID 以分配附加功能

java - 如何检查数组中的复选框是否为空?

javascript - 从多个对象数组中返回具有最高值的对象

c - do-while 循环中的 scanf() 会导致无限循环,即使测试输入也是如此

使用APR创建线程池