在C编程中设置限制循环和计算回文

因此,此代码的目标是将用户编号转换为回文。 如果数字不是回文数,则计算数字+反转数,直到它成为回文数。 如果仍然不是回文,请取最后一个数字的总和,然后将它们加在一起,最多加10次。

int main() { int n; int reverse = 0; //initial value will be 0 int temp; //temporary variable //Check if number is a palindrome=============================== printf("Enter an integer: "); scanf_s("%d", &n); temp = n; //Make input number have a temporary variable while (temp != 0) { reverse = reverse * 10; reverse = reverse + temp % 10; temp = temp / 10; } //Check if number entered by user and it's reverse number is equal if (reverse == n) printf("%d\t1, reverse is %d\n", n, reverse); //Is a palindrome else printf("%d\t0, reverse is %d\n", n, reverse); //Not a palindrome //========================================================================== //Keep adding numbers until it reaches a palindrome int sum; while (n /= reverse) { sum = n + reverse; n++; } if (reverse == sum) printf("%d it works", sum, reverse); else ("%d didn't work", sum, reverse); 

我还没有达到极限。 但我的问题是如何添加反向和用户号码,然后进行总和+反向? 对于这类问题,什么样的循环最好?

你可以做的是写while循环,用于在另一个while循环(考虑为循环1)中生成数字的反转(视为loop2),当数字为回文时,它会中断(终止)。如果给定的数字不是回文然后你将数字更改为数字=数字+反向。如果你想尝试10次尝试,那么你可以通过计数器为循环1添加另一个条件。 下面是我写的代码。

 #include int main() { int n; int count=0; //taking counter for number of trials int reverse=0; //initial value will be 0 int temp; //temporary variable printf("Enter an integer: "); scanf("%d", &n); while (count<10) //count less than 10 condition makes the max. no. of trials equal to 10 { temp=n; //assigning a temporary variable to n reverse=0; //Finding the reverse of the number n=============================== while (temp != 0) { reverse = reverse * 10; reverse = reverse + temp % 10; temp = temp / 10; } //Check if number entered by user and it's reverse number is equal if (reverse == n){ printf("\n%d\t1, reverse is %d\n", n, reverse); //Is a palindrome break; /*break condition makes the loop 1 to terminate if the number 'n' is palindrome*/ } else printf("\n%d\t0, reverse is %d\n", n, reverse); //Not a palindrome //================================================================ //Keep adding numbers until it reaches a palindrome n=n+ reverse; count++; } }