当前位置: 首页 > 知识库问答 >
问题:

如何反转3位数字

林龙野
2023-03-14

代码:

#include <stdio.h>

int main()
{
    int n, num1,num2,num3, reverse;    

    printf("Enter the number to reverse:\n");
    scanf("%d", &n);

    num1 = n / 100;
    num2 = (n % 100) / 10;
    num3 = (n % 10) / 100;

    reverse = num3*100+ num2*10;

    printf(" The reverse is %d", reverse);

    system("pause");
    return 0;
}

我想在不使用任何循环的情况下反转一个数字,我包括了到目前为止的步骤,但我不确定它是否正确:

  1. 将int与输出一起声明为num1、num2和num3,反向

这些步骤正确吗?我试着使用这个程序,但没有任何运气,直到我得到正确的步骤。

例子:

Enter a number: 263
Output: 362

数字总是3位数,没有任何变化

共有3个答案

祁烈
2023-03-14

如果中间数字是这样计算的

num2=(num%100)/10;

然后,低有效数字的计算如下

num3 = (num % 10)/1;

或者只是

num3 = num % 10;

这份声明

reverse = num3+ num2+ num1;

没有给出你所期待的。你应该改写

reverse = 100 * num3 + 10 * num2 + num1;

事实上你不需要计算数字。只需输入一个三位数作为三个独立的数字。:)

例如

#include <stdio.h>

int main( void )
{
    unsigned int n1, n2, n3;

    printf("Enter a three-digit number: ");
    scanf("%1u%1u%1u", &n1, &n2, &n3);

    printf("Reversed number is %u%u%u\n", n3, n2, n1);

    return 0;
}

程序输出可能如下所示

Enter a three-digit number: 263
Reversed number is 362

如果不想输出前导零,那么可以在程序中包含If语句。而不是这句话

printf("Reversed number is %u%u%u\n", n3, n2, n1);

你可以写

printf("Reversed number is ");
if (n3) printf("%u", n3);
if (n3 || n2) printf("%u", n2);
printf("%u\n", n1);

例如,在本例中,如果要输入

100

然后输出将是

1

而不是

001

或者可以使用表达式100*n1 10*n2 n1。例如

printf("Reversed number is %u\n", 100 * n3 + 10 * n2 + n1);
韩彬
2023-03-14

使用多样化的方法

int main()
{
    char string[4];
    int reverse = 0;

    printf("Enter the number to reverse:\n");
    scanf_s("%d", &reverse);

    if (reverse > 999)
        return 0;

    sprintf_s(string, "%d", reverse);

    char c1 = string[0];
    string[0] = string[2];
    string[2] = c1;

    reverse = atoi(string);

    printf(" The reverse is %d", reverse);
    return 0;
}

或者如果你不想用atoi

int main()
{
    char string[4];
    int reverse = 0;

    printf("Enter the number to reverse:\n");
    scanf_s("%d", &reverse);

    if (reverse > 999)
        return 0;

    sprintf_s(string, "%d", reverse);

    printf(" The reverse is %c%c%c", string[2], string[1], string[0]);

    return 0;
}
万选
2023-03-14

首先,你的num3是错误的,这是修改如下,其次,反向计算是错误的

#include <stdio.h>

int main()

{


int n, num1,num2,num3, reverse ;


    printf("Enter the number to reverse:\n");
    scanf("%d", &n);

    num1 = n / 100;
    num2 = (n % 100) / 10;
    num3 = n%10 ;

    // num1 , num2 , num3 are digits only  , to make a number use the below step
    reverse = 100*num3 + 10*num2 + num1;

        printf(" The reverse is %d", reverse);



    system("pause");
    return 0;
}
 类似资料:
  • 我有这个方法: 我试着用这个方法颠倒过来: 这样调用这些方法: 结果: 我感兴趣的结果最终得到的值为FFFFFFB6;我需要FFFFFFB2。 setParameters方法不起作用,为什么?

  • 1E 1B 01 13 6 [ 0001 1110 0001 1011 0000 0001 0001 0011 0110 ]通过进行筛选和加成转换为F6C336。(0x1E 现在,我不得不逆转这一计算。即从F6C336,我想得到1E 1B 01 13 6。 很抱歉我在位操作方面的知识很差。

  • 问题内容: 给定一个十进制整数(例如65),如何反转Python中的基础位?即。以下操作: 看来该任务可以分为三个步骤: 将十进制整数转换为二进制表示形式 反转位 转换回十进制 步骤#2和3似乎很简单(这个相关的步骤#2 SO问题),但我卡在步骤#1。步骤#1的问题是使用填充零来检索完整的十进制表示形式(即65 = 01000001,而不是1000001)。 我到处搜寻,但似乎找不到任何东西。 问

  • 问题内容: 对于 áéí 等特殊字符,我可以致电: 要获取相应的html实体,请执行以下操作: 我怎样才能将其 转回áéí ? 问题答案: 如果您使用编码,则可以使用以下过程: decode.php) 将所有HTML实体转换为它们的适用字符。 html_entity_decode() 与htmlentities()相反,它可以将字符串中的所有HTML实体转换为它们的适用字符。 例如

  • 问题内容: 我需要反转用户输入的字符串。 我需要用最简单的方法完成它。我正在尝试做reverseOrder(UserInput),但是没有用。 例如,用户输入abc,我只是获取字符串并打印出cba 问题答案: 用于按正常顺序反向排序。

  • 问题内容: 我下面有一个Enum类 并希望它得到相反的顺序。在.Net中,代码是这样的 在Java中,我试图做同样的事情。 但是,我无法做到。请告诉我如何用Java做同样的事情? 问题答案: 有一个内置方法可返回所有枚举常量的数组。您可以向后迭代。