我在C ++上制作一个简单的程序,用英文文本读取数字并输出所述数字。它可以读取0到9,999,999之间的数字。我将它分为函数,函数,函数,数十,数百,数千和数百万。
我在数百万函数中有一个for循环,它只将整个数字中的一些数字传递给另一个字符串,但它只执行一次并且它不复制数字:
`
string millionths(string num_i)
{
string num_m;
string num_l;
string num_ln="000000";
string num_ln5="00000";
string num_ln4="0000";
string num_ln3="000";
string num_ln2="00";
int it;
/*I just want the last 6 characters from num_i to be copied to num_ln
but the loop is only executing once and doesn't copy any value*/
for(it=0;it<6;it++);
{num_ln[it]=num_i[it+1];}
num_m=units(num_i[0]);
if(num_ln=="000000")
return num_m+" million";
else if(num_ln[0]=='0'&&num_ln[1]=='0'&&num_ln[2]=='0'&&num_ln[3]=='0'&&num_ln[4]=='0')
{num_l=units(num_ln[5]);}
else if(num_ln[0]=='0'&&num_ln[1]=='0'&&num_ln[2]=='0'&&num_ln[3]=='0')
{for(it=0;it<2;it++);
{num_ln2[it]=num_i[it+5];}
num_l=tenths(num_ln2);}
else if(num_ln[0]=='0'&&num_ln[1]=='0'&&num_ln[2]=='0')
{for(it=0;it<3;it++);
{num_ln3[it]=num_i[it+4];}
num_l=hundreths(num_ln3);}
else if(num_ln[0]=='0'&&num_ln[1]=='0')
{for(it=0;it<4;it++);
{num_ln4[it]=num_i[it+3];}
num_l=thousanths(num_ln4, 1);}
else if(num_ln[0]=='0')
{for(it=0;it<5;it++);
{num_ln5[it]=num_i[it+2];}
num_l=thousanths(num_ln5, 2);}
else
{num_l=thousanths(num_ln, 3);}
return num_m+" million "+num_l;
}
`
我非常感谢你的帮助。
答案 0 :(得分:1)
这是第一行的空for循环:
for(it=0;it<6;it++); //You don't want to do this
{num_ln[it]=num_i[it+1];}
结果是这个循环在没有实际执行任何操作的情况下运行,并以it == 6
结束。结果是num_ln[it]=num_i[it+1]
仅执行一次,仅使用it=6
完成。这可能不是你想要的,因为它只复制一个元素。这可以修复如下:
for(it=0;it<6;it++){
num_ln[it]=num_i[it+1];
}
通过使用更标准的大括号样式解决了这个问题,它还使其他程序员更容易阅读和理解您的代码。