首页 文章

如何反转3位数字

提问于
浏览
0

码:

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

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

  • 将int声明为num1,num2和num3以及输出,反向

  • 要求用户输入要反转的号码

  • 使用scanf存储号码

  • 获取数字的最后一位数,num1 = n / 100

  • 从用户获取中间数字,num2 =(num%100)/ 10

  • 要从用户获取最后一位数,num3 =(num%10)/ 100

这些步骤对吗?我尝试使用该程序,但没有任何运气,直到我得到正确的步骤 .

例:

Enter a number: 263
Output: 362

该数字始终为3位数,无论如何都不会有任何变化

4 回答

  • 1

    我认为这是一个更好的版本

    #include<stdio.h>
       int main()
       { 
       int num,n1,n2;
       printf("enter the number : ");
       scanf("%d",&num);
       n1=num%10;
       num=num/10;
       n2=num%10;
       printf("%d",n1*100+n2*10+num/10);
       return 0;
       }
    

    虽然你可以通过创建一个新函数和反转n位数来使用递归,但我认为这段代码不能得到更清晰的代码 .

  • -1

    如果中间数字计算如此

    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);
    
  • 0

    使用多样化的方法

    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;
    }
    
  • 2

    首先,你的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;
    }
    

相关问题