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

Setting a Limit on loops and calculating palindromes in C programming

所以这段代码的目标是将一个用户号转换成一个回文。如果数字不是回文,则计算数字+反转数字,直到成为回文。如果仍然不是回文,取最后一个数字的和,它的倒数相加,最多尝试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 循环(考虑为循环 1)中编写 while 循环以生成数字的反转(考虑为循环 2),当数字为 palindrome.If 给定的数字不是回文,然后您将数字更改为 number=number+reverse.If 您想要尝试 10 次尝试,然后您可以通过计数器为循环 1 添加另一个条件。下面是我写的代码。

#include<stdio.h>
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++;   
         }
 }