已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
4天前关闭。
Improve this question
创建一个执行以下操作的C程序:
1.生成50个随机考试分数,然后将生成的分数写入文件RandomExamScores.txt,每列10个。可能的最高和最低分数分别为40和20。
1.从文件RandomExamScores.txt中读取考试分数,按升序对考试分数进行排序,然后将排序后的分数写入文件SortedExamScores.txt。
1.确定考试分数的平均值、中值和众数。
1.将(3)中的结果附加到文件SortedExamScores.txt。
我是编程新手,我急需帮助。
以下是我目前所做的工作。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SCORE 95
#define MIN_SCORE 75
#define NUM_SCORE 50
int compare_ints(const void*a, const void *b)
{
return (*(int *) a - *(int *)b);
}
int main() {
// Seed the random number generator
srand(time(NULL));
// Generate the random exam scores
int scores[NUM_SCORE];
for (int i = 0; i < NUM_SCORE; i++)
{
scores[i] = rand() % (MAX_SCORE - MIN_SCORE + 1) + MIN_SCORE;
}
// Write the exam scores to a file in columns of 10
FILE *file = fopen("RawExamScores.txt", "w");
if (file == NULL) {
perror("Error opening file");
return -1;
}
for (int i = 0; i < NUM_SCORE; i++)
{
fprintf(file, "%d ", scores[i]);
if (i % 10 == 9)
{
fprintf(file, "\n");
}
}
fclose(file);
// Read the exam scores from the file
file = fopen("RawExamScores.txt", "r");
if (file == NULL)
{
perror("Error opening file");
return -1;
}
for (int i = 0; i < NUM_SCORE; i++)
{
fscanf(file, "%d", &scores[i]);
}
fclose(file);
// Sort the exam scores in increasing order
qsort(scores, NUM_SCORE, sizeof(int), compare_ints);
// Write the sorted exam scores to a file
file = fopen("SortedExamScores.txt", "w");
if (file == NULL)
{
perror("Error opening file");
return -1;
}
for (int i = 0; i < NUM_SCORE; i++)
{
fprintf(file, "%d\n", scores[i]);
}
}
1条答案
按热度按时间8zzbczxx1#
我已经为你编写了这个作为参考。我使用了一个二维数组,我用它来生成随机数,并将它们打印到一个文件中。然后将相同的数组设置为全零,并用于从生成的文件中读取值。还要注意的是,我没有手工编写排序算法,但是使用了
stdlib.h
中的函数qsort
。但是如果你想自己尝试一下,这里有非常好的关于排序算法的解释。GeeksforGeeks - Sorting Algoritms如果你对此有任何问题,请告诉我。我希望这对你有帮助。:)