所以在我以前的一个课程中有一个轻型项目,用户可以阅读文本文件(我们称之为#34; studentstuff.txt",见下文)
*studentstuff.txt*
1
Bob Smith
24
3.5
2
Jill Williams
23
3.6
3
Tom Jones
32
2.4
4
Julie Jackson
21
3.1
5
Al Brown
23
3.35
6
Juan Garcia
22
3.4
-7
Melissa Davis
20
3.2
8
Jack Black
44
1.1
输出打印出:1)学生数量2)平均年龄3)平均gpa。在这个任务中,我们有一个结构:
typedef struct{
int id;
char name[255];
int age;
float gpa;
}student;
根据该计划," studentstuff.txt"将根据结构读取和排序,然后在一些小数学和函数吐出:
'#'学生:
平均年龄:
平均gpa:
问题是我脑子里有这个想法,但我似乎无法把它放入代码中。有谁可以帮我解决这个问题?
答案 0 :(得分:0)
与任何编程问题一样,第一个动作(在决定输入和输出之后)是将问题分解为简单的离散步骤。
OPs问题的这一系列步骤看起来类似于:
open the input file
if any errors:
output user message to stderr
exit program, indicating error occurred
else
begin: loop:
input the info for one student
if any errors, except EOF:
output user message to stderr
cleanup by closing the input file
exit program, indicating an error occurred
else
update number of students
update total age
update total gpa
endif
goto top of loop
end loop:
endif
calculate the average age
calculate the average gpa
display number of students
display average student age
display average student gpa
cleanup by closing the input file
return to caller, indicating success
因为计算会产生分数,为避免出现问题,建议将结构定义为:
struct studentStruct
{
float id;
char name[255];
float age;
float gpa;
};
typedef struct studentStruct student;
注意struct定义与typedef语句的分离。它在这里没有任何区别,但是在使用调试器(需要结构标记名称正确显示结构中的所有字段)以及处理大型项目以帮助避免混淆时。