之前的问题是:编写程序产生1000个取值范围在100-999之间的随机整数,并将这些整数以文本格式写入到c:\data3.txt中。(我之前提问过)
此题的要求是:
编写程序从所生成的数据文件c:\data3.txt中读取数据,统计其中奇数、偶数、水仙花数的个数,并将统计结果按如下格式写入到文本文件stat.txt中:
奇数XXX个
偶数XXX个
水仙花数XXX个
求该题代码(本人系统不行所以验证不了代码正误与否,想知道正确代码的写法)谢谢啦
之前的问题是:编写程序产生1000个取值范围在100-999之间的随机整数,并将这些整数以文本格式写入到c:\data3.txt中。(我之前提问过)
此题的要求是:
编写程序从所生成的数据文件c:\data3.txt中读取数据,统计其中奇数、偶数、水仙花数的个数,并将统计结果按如下格式写入到文本文件stat.txt中:
奇数XXX个
偶数XXX个
水仙花数XXX个
求该题代码(本人系统不行所以验证不了代码正误与否,想知道正确代码的写法)谢谢啦
代码及效果图如下:
代码:
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
//判断是否是水仙花
bool isSxh(int n)
{
int s = 0;
int a = n;
int d = 0;
while(a>0)
{
int d = a%10;
s += (d*d*d);
a = a/10;
}
if(s == n)
return true;
else
return false;
}
int main()
{
int i,tmp;
int nmbJs = 0;
int nmbOs = 0;
int nmbSxh = 0;
char ch;
srand((unsigned int)time(0));
//产生随机数并写入文件
fstream fout("c:\\data3.txt",ios::out);
if (!fout.is_open())
{
cout << "文件打开失败" << endl;
return 0;
}
for (i=1;i<=1000;i++)
{
tmp = rand()%900 + 100;
fout << tmp << endl;
}
fout.close();
//读文件
fstream fin("c:\\data3.txt",ios::in);
if (!fin.is_open())
{
cout << "文件打开失败" << endl;
return 0;
}
while(!fin.eof())
{
fin >> tmp >> ch;
if (tmp%2 == 0)
nmbOs++;
else
nmbJs++;
if(isSxh(tmp))
nmbSxh++;
}
fin.close();
//写结果
fstream ft("c:\\stat.txt",ios::out);
if (!ft.is_open())
{
cout << "文件打开失败" << endl;
return 0;
}
//输出到屏幕
cout << "奇数"<< nmbJs << "个"<< endl;
cout << "偶数"<< nmbOs << "个"<< endl;
cout << "水仙花数"<< nmbSxh << "个"<< endl;
//写入文件
ft << "奇数"<< nmbJs << "个"<< endl;
ft << "偶数"<< nmbOs << "个"<< endl;
ft << "水仙花数"<< nmbSxh << "个"<< endl;
ft.close();
return 0;
}