输入一个数n,在输出从1到这个n的过程中,被3整除时输出“fizz”,被5整除时输出“buzz”,被3和5同时整除时输出“fizz buzz”。(涉及整形数转化为字符串,应用到字符串流)
###代码为:
#include<iostream>
using namespace std;
#include<sstream>
class dividedby35
{
public:
dividedby35(int nn) :n(nn) { p = new string[n + 1]; }
dividedby35() { p = NULL; }
string *replace_();
void print();
string itos(int);
private:
int n;
string *p;
string tmp;
};
string* dividedby35::replace_()
{
for (int i = 0; i<n; ++i)
{
if ((i + 1) % 3 == 0 && (i + 1) % 5 == 0)
p[i] = "fizz buzz";
else if ((i + 1) % 3 == 0)
p[i] = "fizz";
else if ((i + 1) % 5 == 0)
p[i] = "buzz";
else
p[i] = itos(i + 1);
}
return p;
}
void dividedby35::print()
{
int i = 0;
for (int j = 0; j * 5 < n; ++j)
{
for (i = 0; i < 5; ++i)
if (i + j * 5 >= n)
break;
else
cout << p[i + j * 5] << '\t';
cout << endl;
}
}
string dividedby35::itos(int i)
{
stringstream s;
s << i;
return s.str();
}
int main()
{
dividedby35 A(21);
A.replace_();
A.print();
}