在C中交换数字的第一个和最后一个数字

时间:2016-09-01 18:39:08

标签: c swap

在C中交换数字的第一个和最后一个数字。  我使用c的最基本知识解决了这个问题。  我没有使用任何字符串或数组或按位运算符,只是简单的逻辑。为了更清楚地理解,请举例说明。

#include <stdio.h>

int main()
{
   int a,x,y,n=1,b;
   printf("enter no");
   scanf("%d",&a);
   b=a;                //used further
   if(a>0)
   {
      y=a%10;           //last digit
   }
   while(a>0)
   {
      x=a%10;
      if(a>0 && a<=9)
      {
         x=a;         //first digit
      }
      a=a/10;
      n=n*10;
   }
   n=n/10;
   printf("%d\n%d\n%d\n%d\n",b,n,x,y);  //just to confirm readings
   b=(b-y);  
   b=(b+x);  
   b=b-(x*n);   
   b=b+(y*n);  
   printf("%d",b);   
}

2 个答案:

答案 0 :(得分:1)

希望您已经知道要解决的问题:printf("%d",&b)

仅供参考。你可以更简单地做到这一点:

int num;
scanf("%d",&num);

char snum[50];

// convert to string
int len = sprintf(snum, "%d", num);

// character swap
char temp = snum[0];
snum[0] = snum[len-1];
snum[len-1] = temp;

// convert to int or use the snum string
int result = atoi(snum);
printf("%d\n", result);

答案 1 :(得分:0)

我认为它应该更简单(为了简单起见我省略了对数字范围,函数返回值等的所有检查):

char digit, number[10]; //the maximum int is usually about 2 billions, so 9 digits, plus '\0'
scanf("%s", number);
digit=number[0];
number[0]=number[strlen(number)-1];
number[strlen(number)-1]=digit;
printf("%s", number);