【发布时间】:2016-02-22 10:08:28
【问题描述】:
我需要读取marks.dat 文件并将该文件输出到屏幕上。
marks.dat
23468555 88 55 67
55223344 45 90 78
32321111 67 89 73
77001234 79 59 99
21324354 62 84 88
40450765 34 45 56
26726826 93 69 71
30917823 57 65 80
54277888 87 77 55
8位数字代表学号,后面3个2位数字代表作业分数,计算贡献40%年级分数的3个平均值,找出贡献60%分数的最高分年标记,然后输出学号,后跟平均数,再输出年标记,即
年标记.dat
23468555 70.00 80.80
平均值和年份标记应为double类型,只显示小数点后2位,然后输出到文件并在屏幕上显示内容。
我遇到的问题是尝试输出 8 位数字的 double 输出 234686e+007,但是如果它的 int 则输出正确。
还想看看您将如何解决这个问题。您是否会尝试创建一个数组来插入文件的内容,考虑二维,第一个学生编号,然后是第二维中的标记?
【问题讨论】:
-
有 很多 的文本根本与问题无关——也就是说,
23468555的打印会产生意想不到的结果。 实际问题几乎被隐藏了。关于如何打印该值的信息太少;像int main() { double x = 23468555; std::cout << x << std::endl; }这样的东西至少会告诉我们你正在使用cout(而不是printf())。最后一段将是题外话,因为 SO 是关于可以“正确”回答的实际编程问题,而不是关于“如何解决这个问题”的讨论。 -
@DevSolar 该问题及其答案是关于以 full 精度输出双精度数。 OP 只需要 2 位数字,并且没有明确说明。
-
@Bob__:正确。重新打开问题,以便您可以发布更正确的答案。 (抱歉,没有费心挖掘散文并跳到“问题是......”,因此错过了上一段中的格式要求。)
标签: c++ multidimensional-array file-io