一个数的倒数,c++

Inverse of a number, c++

本文关键字:倒数 c++ 一个      更新时间:2023-10-16

我正在创建一个程序,该程序使用以下方法显示数字的倒数:

示例

123 ==> 3*10^2 + 2*10^1 + 1*10^1 = 321

但输出始终为0。有什么帮助吗?

#include <stdio.h>
int power(int a)
{
    int i;
    int x = 1;
    for (i = 1; i = a; i++)
    {
        x = x * 10;
    }
    return x;
}
int inv(int b)
{
    int z = b, j = 0, s = 0, y;
    for (z = b; z = 0; z = z / 10)
    {
        for (y = z; y = 0; y = y / 10)
        {
            j++;
        }
        s = s + (z % 10)*power(j - 1);
    }
    return s;
}

int main()
{
    printf("please enter a number"); int n;
    scanf("%d", &n);
    printf("%d", inv(n));
    return 0;
}

您认为这两个for循环什么时候会继续
你认为他们什么时候会停止
(提示:你错了。)

在调试器中观察z和y的值。

for (z = b; z = 0; z = z / 10)
for (y = z; y = 0; y = y / 10)

您的for循环设置不正确。

for (z = b; z = 0; z = z / 10)

应该是:

for (z = b; z == 0; z = z / 10)

"z=0"是一个总是返回false的赋值。因此,您从未输入for循环,返回"s"的初始值0。

为什么不使用string并反转它?当然,只有当你可以自由选择你的方法时,这才有效。

#include <iostream>
#include <string>
#include <algorithm>
int reverse(const int n)
{
    std::string s = std::to_string(n);
    std::reverse(s.begin(), s.end());
    return std::stoi(s);
}
int main()
{
    int number;
    std::cin >> number;
    std::cout << reverse(number) << std::endl;
    return 0;
}

这里是反函数的定义,不需要任何power函数。保持代码简短&简单

int inverse(int b)
{
    int s=0;
    while(b > 0)
    {
        s = s*10 + (b % 10);
        b /= 10;
    }
    return s;
}

对于上面的查询,以下是C:中For循环的语法

for ( init; condition; increment ) {
   statement(s);
}