gpt4 book ai didi

C - 将一个数字的奇数位添加到另一个数字的末尾

转载 作者:行者123 更新时间:2023-11-30 17:26:32 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,将一个数字的奇数位添加到第二个数字的末尾,而不使用数组。这是我到目前为止所拥有的:

#include <stdio.h>
#include <math.h>
int NumberAdd (int n, int m)
{
int power=1,x=0,counter=0,newnumber;
while(n!=0)
{
if(n%2!=0)
{
x=x+(n%10)*power;
power*=10;
counter++;
}
n=n/10;
}

newnumber=m*pow(10,counter)+x;
return newnumber;

}
int main ()
{
int m,n;
scanf("%d %d", &n, &m);

printf("%d\n", NumberAdd(n,m));

return 0;
}
现在,根据我的经验,这应该有效,并且如果第一个数字是奇数,它确实有效,但如果我试图从中获取奇数位的数字是偶数,我就会遇到问题。例如:

对于 3457 和 3458,我得到的结果是 3458357。但是,对于 3456 和 3457,我得到 345734。有什么想法吗?

最佳答案

由于可能存在舍入问题,最好避免浮点运算。尝试这样的事情(可以变得更短,但我试图保持原始结构):

int NumberAdd(int n, int m)
{
int power = 1, x = 0, newnumber;
while (n != 0)
{
if (n % 2 != 0)
{
x = x + (n % 10)*power;
power *= 10;
}
n = n / 10;
}

newnumber = m * power + x;
return newnumber;
}

关于C - 将一个数字的奇数位添加到另一个数字的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com