最近帮朋友用c写的一个算法题

請用C++寫一個小程序,從一個文本文件中把所有數字累加起來,然後顯示出結果。文本文件內容如下所示:

華倫巴菲特-世界首富的選股法則:
1. 股東權益報酬率(1季及2年平均)均大於3.75%
2. 現金流量成長率(1季及2年平均)均大於5%
3. 價格/淨值比小於2
4. 毛利率(1季及2年平均)均大於15%
5. 本益比小於20

結果=1+2+3+75+1+2+5+2+1+2+15+20
 

题目还有一个要求,要忽略标题,这里忽略的方法是只截取“.”之后的数字。

用时 30 分钟,感觉手有点生了。

Code

#include
<stdio.h>


int main(int argc, char* argv[])
{
FILE
*file = fopen("d:\\xx.txt", "r"
);
if (file ==
NULL)
{
printf(
"file open fail."
);
return 0
;
}

// 缓冲区

char buf[20];
int index = 0
;

// 是否跳过标题

bool step = false;

// 最后的总数

int sum = 0;
char
c;

while( (c= fgetc(file))!=
EOF)
{
if (c == '\n'
)
step
= false
;

if (c == '.'
)
step
= true
;

if ((c >= '0' && c <='9') &&
step)
{
buf[index]
=
c;
index
++
;
}
else

{
if (index > 0)
{
int n = 0
;
for(int i = 0; i < index; i++
)
{
n
= n * 10
;
n
+= (buf[i] - '0'
);
}

printf(
"%d + "
, n);
sum
+=
n;
index
= 0
;
}
}
}

printf(
"\nsum:%d \n"
, sum);
return 0
;
}

原文地址:https://www.cnblogs.com/yahle/p/1285368.html