该程序获取文件中的第一个数字,并指示其后的数字,然后使用后面的数字执行各种其他操作.
看起来scanf在尝试从文件中读取时会导致无限循环.当我运行该程序时,即使是1号检查也无效
这是代码:
#include <stdio.h>
int main(void) {
int N, a, n;
int x=0;
int t=0;
printf("1"); //Check
scanf("%d", &N);
printf("2"); //Check
int nums[N];
int i;
printf("%d", &N); //Check
for (i=0; i<N; i++)
{
scanf("%d", &nums[i]);
t+=nums[i];
if (nums[i] > x) x=nums[i];
if (i=0 || nums[i] < n) n = nums[i];
}
a = t/N;
printf("Number Processed: \t%d\n", &N);
printf("Maximum: \t%d\n", &x);
printf("Minimum: \t%d\n", &n);
printf("Total: \t%d\n", &t);
printf("Average: \t%d\n", &a);
}
Run Code Online (Sandbox Code Playgroud)
我运行程序的方式是
gcc -lab16
./a.out <in1
Run Code Online (Sandbox Code Playgroud)
其中in1是文本并且有数字
7
6
-30
90
3903
-934
443
445
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间.
if (i=0 || nums[i] < n) n = nums[i];
Run Code Online (Sandbox Code Playgroud)
你正在分配i = 0,所以循环永远不会真正前进!你可能想要i == 0.这导致无限循环.
其他问题:int nums[N];- 如果你想要一个动态[在运行时确定]大小的数组,你可能需要malloc()它.
更新:请注意,这int nums[N]在C99中有效,因此,如果您的分配假设为C99,则不必担心此问题.否则 - malloc()将需要:
int* nums = (int*) malloc(sizeof(int) * N)
Run Code Online (Sandbox Code Playgroud)
并且不要忘记free(nums)在程序结束之前,否则你会得到内存泄漏.
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |