我正在尝试使用基本的 c 构造和循环创建一个程序,该程序从文件中读取数学测验分数并将分数打印为星形(如条形图)。该程序将尝试读取文件并直观地描绘学生在不同数学领域(加法、减法、乘法和除法)中的表现。
输入文件如下所示:
2
Bobby
6 10
70 80
50 60
4 5
Joel
7 12
20 25
4 5
3 10
第一行代表文件中的学生总数。在此之后,每个学生将有 5 行个人数据。这些行中的第一行是学生姓名,接下来的 4 行是各个数学领域的分数(6 分中的 5 分,80 分中的 70 分等)
我试图接收类似于此示例的输出:
Bobby
+: ********
-: ******
*: *****
/: ****
Joel
+: ****
-: ********
*: ***
/: *******
我知道我需要使用循环和 ifp(内部文件指针)来实现这一点,但我不太确定如何实现它们来读取程序的各个行,因为这是我第一次在 C 中使用输入文件。
** 第四次编辑 - 目标完成!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//int main
int main() {
FILE * ifp;
ifp = fopen("input.txt", "r");
FILE * ofp;
ofp = fopen("output.txt", "w");
int students = 0, i, j;
int sum = 0;
int perc;
int score1,score2;
char name [10];
//read the first line for # of students
fscanf(ifp, "%d", &students);
//Loop for both students
for (i=0; i<students; i++) {
fscanf(ifp, "%s", &name);
fprintf(ofp, "%s:", name);
fscanf(ifp, "%d %d", &score1, &score2);
perc = (10 * score1/score2);
fprintf(ofp, "\n +:");
for(j=0; j<perc; j++){
fprintf(ofp, "*");
}
fscanf(ifp, "%d %d", &score1, &score2);
perc = (10 * score1/score2);
fprintf(ofp, "\n -:");
for(j=0; j<perc; j++){
fprintf(ofp, "*");
}
fscanf(ifp, "%d %d", &score1, &score2);
perc = (10 * score1/score2);
fprintf(ofp, "\n *:");
for(j=0; j<perc; j++){
fprintf(ofp, "*");
}
fscanf(ifp, "%d %d", &score1, &score2);
perc = (10 * score1/score2);
fprintf(ofp, "\n /:");
for(j=0; j<perc; j++){
fprintf(ofp, "*");
}
fprintf(ofp, "\n");
}
fclose(ifp);
fclose(ofp);
return 0;
}
我之前的图表错误似乎是我的一个简单的操作顺序错误。感谢您的所有帮助!