C语言 如何反转3位数字

svmlkihl  于 2023-02-07  发布在  其他
关注(0)|答案(4)|浏览(371)

代码:

#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以及输出,反向
1.要求用户输入要冲销的数字
1.使用scanf存储编号
1.取数字的最后一位,num1 = n/100
1.从用户处获取中间位数,num2 =(num%100)/10
1.要从用户获取最后一位数字,num3 =(num%10)/100
这些步骤正确吗?我试着使用这个程序,但没有任何运气,直到我得到正确的步骤。
示例:

Enter a number: 263
Output: 362

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

zpqajqem

zpqajqem1#

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

#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;
}
ffdz8vbo

ffdz8vbo2#

采用多样化的方法

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;
}
lokaqttq

lokaqttq3#

如果中间数位的计算如下

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

则输出将为
代替

001

也可以使用表达式100 * n1 + 10 * n2 + n1

printf("Reversed number is %u\n", 100 * n3 + 10 * n2 + n1);
toe95027

toe950274#

#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 % 100)%10;

    reverse = num3*100+ num2*10+num1;
    printf(" The reverse is %d", reverse);

    
    return 0;
}

相关问题