使用与我的其他问题中提到的相同的机器和 IDE(第三段位于 Problems in code or my IDE/comp is bugged? )
我尝试运行此代码:
#include <stdio.h>
#define n 3
int main()
{
int i;
float values[n],sumval,svmean,tmp;
for(i=0;i<n;++i)
{
scanf("%f",&tmp);
values[i]=tmp;
sumval = sumval + values[i];
}
svmean = sumval/n;
printf("%f \n",svmean);
return(0);
}
上面的代码应该运行这个公式
这意味着它必须添加一些值并将结果除以它们的总数。
正如您在上面看到的,我创建了一个包含随机 n
个位置的数组,并要求用户为每个位置填写一个值,然后将它们全部相加并除以它们。
问题是它不起作用。无论输入是什么,它都只输出结果7。
但是如果我将 stdlib.h 包含到代码中,它就可以正常工作。
所以
- 问题 A:为什么仅使用 stdio.h 库?代码的哪个元素确实需要 stdlib.h 图书馆?
正如你所看到的,数组 values[n]
似乎有一个随机的 n
个单元格,但实际上我已经将这个数字设置为等于 3 (使用#define
)
- 问题 B:是否有一种方法可以使用相同的函数运行代码,但让用户定义数组
values[n]
或其他数组的大小Words 让用户输入一个整数来设置values[n]
中的n
的值?
最佳答案
首先,您忘记初始化sumval
。您希望它的开头为 0
。
如果您希望在运行时决定数组的大小,则必须使用 malloc
动态分配它,例如如下所示:
int n;
float *values,sumval=0,svmean,tmp;
scanf("%d", &n);
values = (float *) malloc (n * sizeof(float));
稍后,您应该通过调用free
释放分配的内存:
free(values);
关于c - 仅使用 stdio 库,简单的 "for"命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988573/