我必须编写一个程序来读取数字中没有 0 的 2 个整数,并说明第二个整数是否由第一个整数的循环变换组成。例如:4123,3412,2341 和 1234 是由 1234 的循环变换而成。现在这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int last_digit, a, temp, i, b;
int digits = 0, digits1 = 0;
printf("Enter two numbers to test if the second is a circular\n");
printf("transformation of the first.");
printf("\n\n**NOTE**\nThe numbers cannon have 0 in their digits.\n\na= ");
scanf("%d", &a);
while (a <= 0)
{
printf("Number must be greater than 0.\na= ");
scanf("%d", &a);
}
temp = a;
while (temp!=0)
{
digits1++;
temp/=10;
}
printf("b= ");
scanf("%d", &b);
while (b <= 0)
{
printf("Number must be greater than 0.\nb= ");
scanf("%d", &b);
}
while (digits != digits1)
{
digits = 0;
temp = b;
while (temp!=0)
{
digits++;
temp/=10;
}
if (digits != digits1)
{
printf("The two numbers must have the same number of digits.\nb= ");
scanf("%d", &b);
}
}
temp = b;
digits--;
for (i=1;i<=digits1;i++)
{
if (temp == a)
{
printf("%d is a circular transformation of %d",b,a);
return 0;
}
printf("\ntemp = %d",temp);
last_digit = temp % 10;
temp = temp/10;
printf("\n%d\n%d",last_digit,temp);
temp = temp + (last_digit*(pow(10,digits)));
printf("\ntemp = %d\n",temp);
}
printf("%d is not a circular transformation of %d",b,a);
return 0;
}
在你说任何事情之前,我必须在不使用表格和其他东西的情况下这样做......只是基础知识。现在我的问题是
temp = temp + (last_digit*(pow(10,digits)));
没有正常工作。如果数字超过 2 位,它会给我应该的 - 1。
我能做些什么来解决这个问题?它与编译器有关吗?我从代码块中使用 GCC。
如果我做
temp = temp + (last_digit*(pow(10,digits))) + 1;
它适用于超过 2 位的数字,不适用于 2 位的数字。