簡體   English   中英

如果是字符串或整數,則檢查回文輸入

[英]Check palindrome input if string or int

大家好,我想檢查輸入(char 或 int)polindrome 與否,但我不能這樣做。 你能幫助我嗎? 我有錯誤信息

"invalid conversation char to char*"

我認為這是一個簡單的問題,但我已經無法解決。 謝謝您的幫助。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

int main()
{
    int r,sum=0,temp;
    char a;
    char *b = &a;
    printf("Enter a string or number\n");
    scanf("%c", &a);

    if ( isalpha( a ) )
    {
        b = a;
        strrev(b);
        if (strcmp(a, b) == 0)  
            printf("The string is a palindrome.\n");
        else    
            printf("The string isn't a palindrome.\n");
    
    }
    else if ( isdigit( a ) )
    {
        temp=a;    
        while(a>0)    
        {    
          r=a%10;    
          sum=(sum*10)+r;    
          a=a/10;    
        }    
        if(temp==sum)    
          printf("palindrome number ");    
        else    
          printf("not palindrome");   
        }    
    return 0;
}

既然您提到您是一名學生並想學習 C,我不打算編寫代碼,但會嘗試為您指明正確的方向。

要解決這個問題,您需要:

  1. 獲取字母數字字符串
  2. 檢查它是否是回文(你有幾個選項)

首先,要獲取一個字符串,您的代碼中有:

char a;
scanf("%c", &a);

提示:這只會給你一個角色。 要獲取字符串,首先需要分配一個數組而不是一個字符,然后使用帶有不同參數的 scanf,而不是 %c。

這部分任務完全獨立於第二部分。 我建議首先確保這部分工作,然后再繼續。 您可以通過獲取一個字符串然后立即打印它來做到這一點。 通過這種方式,您可以看到您實際處理的內容。

一旦你有了你的字符串,繼續分析它。 您可以將其還原,然后與原始文件進行比較(這就是您的代碼所建議的),但這樣做可能更容易:

  1. 查找字符串長度
  2. 將字符串中的每個符號與其對稱對應項進行比較。 例如,如果字符串長度為 10,則需要將符號#0 與符號#9、符號#1 與符號#8 等進行比較。等等。提示:您需要在此處使用循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM