这是一个用 c++ 编写的程序,从这个写代码将给定的数字转换为单词(例如 1234 作为输入应该输出一千二百三十四)问题我修改为将数字转换为单词。
在我的程序中,我没有重复使用 cout,而是创建了一个 ostream 对象并将返回值放入 out。
这是程序
#include<iostream>
using namespace std;
ostream & expand(int);
int main()
{
int num;
cin>>num;
cout<<expand(num);
}
ostream & expand(int value)
{
ostream &out;
out<<"";
const char * const ones[21] = {"zero", "one", "two", "three","four","five","six","seven",
"eight","nine","ten", "eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",
"eighteen","nineteen"};
const char * const tens[10] = {"", "ten", "twenty", "thirty","forty","fifty","sixty","seventy",
"eighty","ninety"};
if(value<0)
{
out<<"minus "<<expand(-value);
}
else if(value>=1000000){
out<<expand(value/1000000)<<" million";
if(value % 1000000)
{
out<<" "<<expand(value % 1000000);
}
}
else if(value>=1000)
{
out<<expand(value/1000)<<" thousand";
if(value % 1000)
{
if(value % 1000 < 100)
{
out << " and";
}
out << " " <<expand(value % 1000);
}
}
else if(value >= 100)
{
out<<expand(value / 100)<<" hundred";
if(value % 100)
{
out << " and "<<expand (value % 100);
}
}
else if(value >= 20)
{
out << tens[value / 10];
if(value % 10)
{
out << " " << expand(value % 10);
}
}
else
{
out << ones[value];
}
return &out;
}
但是,编译时出现以下错误。
In function 'std::ostream& expand(int)':
Line 13: error: 'out' declared as reference but not initialized
compilation terminated due to -Wfatal-errors.
请帮我。
我尝试设置ostream &out=cout;
和最后return out
。但我得到以下结果cout<<expand(111234)
。
one0x8050884 hundredeleven and 0x80508840x8050884 thousandtwo0x8050884 hundredthirtyfour 0x8050884 and 0x8050884 0x80508840x8050884