注册 登录
编程论坛 C语言论坛

inverse_numC语言能调用吗?怎么输出一个数的逆序。(关键:输出这个数本身)随便看一下我的哪儿错了

小白程序 发布于 2023-04-07 16:09, 1506 次点击
程序代码:
#include <stdio.h>                                       
int main()
{
    int m,x;
    do{
        printf("请输入一个正整数:");
        scanf_s("%d", &m);
        if (m<0)
            puts("请不要输入非正数。");
    } while (m <= 0);
    x = m;
    while (m >0){
        m /= 10;
        printf("%d", m%10);
    }printf("%d逆向显示的结果是%d", x,m%10);
    return 0;
   
}

这个代码是我改了的,将m的值赋给x,在对它进行求倒序,大佬有需求可以将这一部分删除,就可以看到标题的问题。
只有本站会员才能查看附件,请 登录

还有一种写法是友友告诉我的,
#include <stdio.h>
int inverse_num(int n)
{
    int t = 0;
    while (n)
    {
        t = t * 10 + t % 10;
        n /= 10;
    }
    return t;
}
只有本站会员才能查看附件,请 登录
10 回复
#2
阳光上的桥2023-04-07 16:51
以下是一个用C语言编写的程序,可以读取一个整数并逆序输出它的每个数字:

程序代码:

#include <stdio.h>
int main()
{
    int n, reversed = 0;
    printf("请输入一个整数: ");
    scanf("%d", &n);

    // 将数字逆序转换到
    while (n != 0) {
        int digit = n % 10;
        reversed = reversed * 10 + digit;
        n /= 10;
    }

    printf("逆序输出为: %d\n", reversed);
    return 0;
}


在这个程序中,我们使用了一个 while 循环,以将每个数字逆序输出。具体来说,我们重复以下步骤,直到输入的数字变为零:
1.计算输入数字的个位数字,方法是用 % 运算符取模 10。
2.将个位数字添加到输出数字的最低位,方法是将输出数字乘以 10,然后加上个位数字。
3.将输入数字除以 10,这将丢弃个位数字并移动到下一个数字上。
最后,我们将逆序输出的数字打印到控制台上,完成程序。
#3
rjsp2023-04-07 16:57
语言组织得好乱呀,太难听懂你想表达什么

程序代码:
#include <stdio.h>

int inverse_num( int n ) // 你「友友」设计的这个函数的缺点是:不是每个int值的相反数都在int范围内
{
    int t = 0;
    for( ; n!=0; n/=10 )
        t = t*10 + n%10;
    return t;
}

int main( void )
{
    int m;
    printf("请输入一个正整数:");
    scanf( "%d", &m );
    printf( "%d 逆向显示的结果是 %d", m, inverse_num(m) );
}
#4
小白程序2023-04-07 21:22
回复 2楼 阳光上的桥
谢谢版主,您的代码我看懂了,但我想问的是:
举个列:
控制台:请输入一个正整数:1963(我从键盘输入)
1963的逆序数是3691(我就想知道怎么才能把1963输入在窗口,输入在这句话里)
#5
小白程序2023-04-07 21:30
回复 3楼 rjsp
写的很难懂吗,下次我改进改进,您的这个代码确实符合我的要求,但是有不有不用构造函数的方法啊,我想试着用最简单的while语句将它搞定,希望版主思索一下。
#6
小白程序2023-04-07 21:32
以下是引用小白程序在2023-4-7 21:22:09的发言:

谢谢版主,您的代码我看懂了,但我想问的是:
举个列:
控制台:请输入一个正整数:1963(我从键盘输入)
1963的逆序数是3691(我就想知道怎么才能把1963输入在窗口,输入在这句话里)

我的要求就是上述,希望大家集思广益,多想点方法,简单点的就行。
#7
小白程序2023-04-07 21:34
随便帮我看看我的while语句错在哪了,谢谢大家
#8
forever742023-04-08 08:18
错在你先除以10,后取个位,这时候取到的就错了。
应该先取余数(个位)输出,后除以10就好。
#9
小白程序2023-04-08 15:28
回复 7楼 小白程序
对了,还有一个问题就是怎么在窗口显示%d的逆序数是%d。前一个是原数,后一个数是逆序数。就是有这一个问题了,麻烦您了
#10
forever742023-04-08 17:34
回复 9楼 小白程序
理解一下inverse_num的精神,它干的就是这个。
#11
小白程序2023-04-08 18:58
回复 9楼 小白程序
欧克欧克,结了
1