C ++代码错误分配

时间:2018-04-08 15:36:39

标签: c++

我对我的作业有疑问,告诉我

如果某个字符是数字,则必须将其转换为另一个字符,其值等于原始数n除以4(n%4)的余数。例如,如果用户输入“987654”,则输出(在取出余数并反转数组之后)应为:“012301”。

我编写的代码非常适用,除了这部分我想在我的函数中使用余数但是它似乎没有任何建议吗?

void function(char x[], int size)
{

        **if (x[i] >= '0' && x[i] <= '9')
        {
            x[i]=x[i] % 4;
        }**
        cout << x[i];
    }
    cout<<endl;
}


}

1 个答案:

答案 0 :(得分:1)

您的数组x包含字符,但在您突出显示的部分中,转换依赖于查找由该数字字符n表示的整数值x[i]

幸运的是,由于表示'0'字符的ASCII值可被4整除,即使您没有从0'中减去“x[i]的值,模数运算不受影响。尽管如此,在找到n的模4之后,最终会得到[0,4]范围内的整数值。要将其反映回字符串,作为字符,您需要将'0'的整数值添加回来。

下面是一个代码示例,演示了我上面提到的内容。

if (x[i] >= '0' && x[i] <= '9')
{
    int n = (x[i] - '0');
    x[i] = (n % 4) + '0';
}