C++ 将十进制数一分为二

C++ 将十进制数一分为二,c++,algorithm,C++,Algorithm,我有这个算法,但它不起作用。这应该将数字一分为二: #包括 #包括 使用名称空间std; int main() { int n,m=0,k=0,p=0,i=0,y,r=0,s=0,j=0; cin>>y; n=y; 而(n!=0) { n=n/10; k++; } 如果(k%2==0){ m=k/2; p=k/2; } 否则{ m=k/2; p=(k/2)+1; } n=y; 而(r

我有这个算法,但它不起作用。这应该将数字一分为二:

#包括
#包括
使用名称空间std;
int main()
{
int n,m=0,k=0,p=0,i=0,y,r=0,s=0,j=0;
cin>>y;
n=y;
而(n!=0)
{
n=n/10;
k++;
}
如果(k%2==0){
m=k/2;
p=k/2;
}
否则{
m=k/2;
p=(k/2)+1;
}
n=y;
而(rcout一切正常。这是您的代码更改

#include<iostream>

#include<math.h>

using namespace std;

int main()

{
    int n, m = 0, k = 0, p = 0, i = 0, y, r = 0, s = 0, j = 0;

    cout << "Enter number to split ";
    cin >> y;

    n = y;

    while (n != 0)
    {
        n = n / 10;
        k++;
    }

    if (k % 2 == 0)
    {
        p = m = k / 2;

    }

    else {
        p=m = k / 2;
        p++;
    }

    n = y;

    while (r < p) {
        i = n % 10 * pow(10, r) + i; 
        r++; 
        n = n / 10;
    }

    while (s < m) { j = n % 10 * pow(10, s) + j; s++; n = n / 10; }

    cout << j << " " << i;

}
#包括
#包括
使用名称空间std;
int main()
{
int n,m=0,k=0,p=0,i=0,y,r=0,s=0,j=0;
cout>y;
n=y;
而(n!=0)
{
n=n/10;
k++;
}
如果(k%2==0)
{
p=m=k/2;
}
否则{
p=m=k/2;
p++;
}
n=y;
而(r用单字母变量名编写代码确实很难阅读。你不能给变量指定有意义的名称吗?另外,将输出粘贴为文本,而不是图像。另外,请通过格式化程序运行代码。例如,请不要发布文本图像。将文本复制粘贴到问题中。还有,你的意思是什么“把数字一分为二"?对于某些特定的输入,输出应该是什么?请花一些时间来读取,取SO,read,以及。最后,请学习如何使用调试器在监视变量及其值时逐个语句地检查代码语句。当然,y-是您读取的数字,n-是我保存y的位置,因为它可能会在循环中丢失,k-是一个变量,其中我对数字的位数进行编号,将数字转换为字符串。IMHO,当数字是字符串时,数字更容易操作。请告诉我们一些有关编译器和环境的信息,这样可以更容易地解决错误(如果有)。这是一个只使用代码的答案,只使用代码的答案教会人们如何成为。你可以通过解释原始代码的错误以及新代码如何纠正问题来挽救这个答案。它在我的计算机上运行,但我没有发现问题。因此我发布了代码。@Alex你的代码在逻辑上与原始代码相同。唯一您所更改的是在
if..else
块中合并
p
m
的赋值,但这些赋值的最终结果应与原始代码相同。