c++ - For 循环未按预期执行

标签 c++ string for-loop

我正在用 C++ 编写一个简单的程序,它读取数字并以英文文本输出所述数字。它可以读取从 0 到 9,999,999 的数字。我把它分成函数,一个函数为个位,一个函数为十位、百位、千位、百万位。

我在 millions 函数中有一个 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;
}

`

非常感谢您的帮助。

最佳答案

这是第一行的空循环:

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];
}

通过使用更标准的大括号样式,这个问题得到了解决,它也将使其他程序员更容易阅读和理解您的代码。

关于c++ - For 循环未按预期执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26319964/

相关文章:

python - Python 中的 __str__ 方法

python - 高效查找大型列表中的字符串不匹配

python 动态字典

java - 如何为多个整数创建 1 个 for 循环?

c++ - 由于 cvtColor 函数错误,如何解释 c++ opencv 断言错误消息?

c++ - 如何处理windows.h中的max宏与std中的max冲突?

c++ - 与 Valgrind 一起运行时,malloc 返回 null

c# - 是否可以在编译时/运行时在 C# 中生成所有标记字符串的列表?

python - 我怎样才能同时在一个可迭代的python上有多个迭代器?

c++ - 应该将 operator<< 实现为友元还是成员函数?