![](/img/trans.png)
[英]How to move the last digit to the first position in a number in C
[英]How to move first digit to the last position in a number in C
我们以数字 123 为例。 我将如何移动 1 以使结果数字为 231?
unsigned long int N;
scanf("%lu", &N);
unsigned long int firstDigit;
while (N >= 10)
{
N /= 10;
firstDigit = N;
count++;
}
我有这个代码来识别第一个数字是什么,但现在我不知道如何移动它。
........ans......pow............N
(循环前)......0............1......1234
(健康)状况)
1234>9
........4........10........123
123>9
..................34........100........12
12>9
........234......1000............1
1>9
(循环)
ans = ans*10 + N = (234)*10 + 1 = 2341
unsigned long int N;
scanf("%lu", &N); //N=1234
unsigned long int ans=0;
unsigned long int pow=1;
while (N>9){
ans += pow * (N%10);
pow *= 10;
N /= 10;
} //ans=234 N=1
ans = ans*10 + N ;
假设N = 546
并获得firstDigit = 5
。 因此,要将 firstDigit 移动到最后一个 position 首先你必须从N中删除 firstDigit 。 如果count = number of digits of N
则N - (firstDigit * 10^(count-1))
将给出没有 firstDigit 的数字。 对于 N = 546,您将得到removedFirstDigit = 46
。 因此,您只需使用10 * removedFirstDigit + firstDigit
将 firstDigit 附加到最后一个 position 即可获得最终答案。 遵循该代码以更好地理解,
unsigned long int N;
scanf("%lu", &N);
unsigned long int value = N;
unsigned long int firstDigit;
int count = 0;
while (N >= 10)
{
N /= 10;
firstDigit = N;
count++;
}
unsigned long int powerOfTen = 1;
for(int i=1; i<=count; i++) {
powerOfTen *= 10;
}
unsigned long int removedFirstDigit = value - (firstDigit * powerOfTen);
unsigned long int ans = 10 * removedFirstDigit + firstDigit;
printf("%lu", ans);
您也可以通过将数字转换为字符串并将第一个字符移动到最后一个 position 来解决此问题。
换个观点怎么样。 我们将考虑字符串操作。
#include <stdio.h>
int main()
{
char i[10]="";
scanf ("%s", &i);
for (int j = 1; i[j] != NULL; j++)
printf ("%c",i[j]);
printf ("%c\n",i[0]);
return 0;
}
希望这有帮助:)
#include <stdio.h>
#include <math.h>
int main() {
unsigned long int length = 0;
unsigned long int ans = 0;
unsigned long int number;
scanf("%lu", &number); // number = 9731
length = log10(number);
unsigned long int power = pow(10,length);
ans = (number%power)*10 + number/power; // 7319
printf("%lu %lu %lu %lu", number, length, power, ans);
}
编号:输入数据
长度:以 10 为底的对数将给出 ((数字大小) - 1)
功率:10长度
获取答案:
// got only 9
// got 731
// 9 & 1
//731* from 731
// 731 become 7310
// 7310 + 9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.