反转C中最后一个位置的数字为0

时间:2018-11-01 11:00:14

标签: c visual-studio-2017

我有这个简单的代码可以反转整数。但是我现在需要为另一个项目将数字以0开头的数字反转。例如,此程序能够将32转换为23,但也可以将3200转换为23。我需要0才能保持领先地位。但是,我已经看到可以执行此操作的位级别的二进制操作,我正在寻找一种方法(如果有的话)而不使用按位操作并使它保持简单。

#include <stdio.h>

int main()
{
    int a, mod = 0, reverse = 0;
    printf("Enter a number:");
    scanf_s("%d", &a);
    while(a!=0)
    {
       mod=a%10;
       reverse = reverse * 10 + mod;
       a=a/10;
    }
       printf("%d", reverse);
       return 0;
}

3 个答案:

答案 0 :(得分:0)

我认为您应该像输入字符串一样处理这个问题。

#include <stdio.h>
#include <string.h>

#define MAX 15

void xor_swap(char *a, char *b) {
    if(a != b) {
        *a ^= *b;
        *b ^= *a;
        *a ^= *b;
    }
}

int main(int argc, char **argv) {
    char buffer[MAX];
    size_t length;

    printf("Enter a number: ");
    fgets(buffer, MAX, stdin);

    //fgets also includes the newline chracter so we get rid of that.
    length = strlen(buffer);
    buffer[length - 1] = '\0';
    length--;

    for(int i = 0; i < length / 2; i++) {
        xor_swap(&buffer[i], &buffer[length - i - 1]);
    }

    printf("buffer: %s\n", buffer);
}

答案 1 :(得分:0)

读取整数时,用"%n"记录扫描偏移量。

使用数字的文本宽度控制反转和打印。

int main() {
  int a, mod = 0, reverse = 0;
  printf("Enter a number:");
  int n1, n2;
  scanf(" %n%d%n", &n1, &a, &n2);
  int width = n2 - n1;
  while (width-- > 0) {
    mod = a % 10;
    reverse = reverse * 10 + mod;
    a = a / 10;
  }
  printf("%0*d", n2-n1, reverse);
  return 0;
}

示例

Enter a number:00123
32100

Enter a number:12300
00321

其他未解决的问题。

  • 签署字符'+''-'

  • 超出int范围的输入

  • 超出int范围的倒数。

  • 非数字输入。

答案 2 :(得分:0)

我想采取略有不同的方法。 当我使用手机接听电话时,我会要求有人为我做代码缩进。

# define SIZE 10  
int main ()  
{  
int num= 3200;  
// keep one array of characters to store the reversed digits.  
char reversed_digit[SIZE];  
int i= 0, temp;  
if (num  == 0)  
    reversed_digit[i] = (char) num;  
else. 
{  
    while (num > 0)  
    {  
    temp= num % 10;  
    num= num / 10 ;  
    reversed_digit[i++]= (char) temp;  
    }  
    reversed_digit[i]= '\0';  
}
printf("The reversed digit is: %s ", reversed_digit);  
return 0;  
}