我必须创建一个程序,找到文件的k个最大元素,并将它们存储在数组大小为k的位置。它应该读取文件中的每个下一个元素,并仅在它所属的情况下将其插入到已排序的数组中。我无法弄清楚我做错了什么。 我正在从一个包含大约100个数字的文件中读取。该阵列最终打印出996 980 956 932 929,但它正在打印386 915 886 793 996。 这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
FILE *file;
int i,j, n, temp;
printf("Enter number of max elements to find:\n");
n = atoi(argv[2]);
int maxnumbers[n];
file = fopen(argv[1], "r");
for(i = 0; i < n; i++)
fscanf(file, "%d", &maxnumbers[i]);
for (i=0; i<n-1; i++)
{
for (j = 0; j< n-1-i; j++)
if (maxnumbers[j] < maxnumbers[j+1])
{
temp = maxnumbers[j];
maxnumbers[j] = maxnumbers[j+1];
maxnumbers[j+1] = temp;
}
}
for (i = 0; i<n; i++)
printf("%d\n", maxnumbers[i]);
while (!feof(file))
{
temp = maxnumbers[n-1];
j = n-1;
fscanf(file,"%d",&i);
if (i > temp)
{
while(i >= maxnumbers[j-1])
{
maxnumbers[j] = maxnumbers[j-1];
j = j-1;
}
maxnumbers[j] = i;
}
}
fclose(file);
for (i = 0; i<n; i++)
printf("%d\n", maxnumbers[i]);
return 0;
}