2015-07-12 24 views
-2

從左至右和從右到左閱讀時,接着迴文下一個迴文小於k用c

一個正整數被稱爲迴文如果其在十進制系統中的表示是相同的。對於給定的正整數K,寫入大於K的最小回文的值以輸出。

輸入

第一行包含一個整數,其對應於K.假設K小於200000

輸出

輸出由一個單一的整數,其對應於最小的迴文大於K.

樣品輸入1:

樣本輸出1:

樣品輸入2:

樣本輸出2:

2222下方 是我的計劃,但我不能夠得到輸出。請告訴我我哪裏錯了。

#include<stdio.h> 
int palindrome(int n) 
{ 
int t,r; 
    t=n; 
    while(t!=0) 
    { 
    r=r*10; 
    r=r+(t%10); 
    t=t/10; 
    } 
    if(r==n) 
    return 1; 
    else 
    return 0; 
} 

int main() 
{ 
int k,d=0,i; 
    scanf("%d",&k); 
    for(i=k+1;i<=200;i++){ 
    d=palindrome(i); 
    if(d==1) 
     break; 
    } 
    printf("%d",i); 
     return 0; 
} 
+0

嘗試898 ..還有一個更嚴重的測試用例。但我不會提示(自己查找測試用例)。 – Raman

+1

在本網站上有大量解決方案的常見作業問題只是轉換爲s字符串 –

+3

您正在使用'r'未初始化。 – mch

回答

2

我固定壓痕,初始化在FUNC迴文與0 R,並固定用於檢查迴文,現在循環永遠(而(1)),直到它存在(中斷)找到一個迴文當環路。

#include<stdio.h> 
int palindrome(int n) 
{ 
    int t,r = 0; 
    t=n; 
    while(t!=0) 
    { 
    r=r*10; 
    r=r+(t%10); 
    t=t/10; 
    } 
    if(r==n) 
    return 1; 
    else 
    return 0; 
} 

int main() 
{ 
    int k,d=0,i; 
    scanf("%d",&k); 
    i = k + 1; 
    while(1) 
    { 
    d=palindrome(i); 
    //printf("%d ", i); 
    if(d==1) 
     break; 
    i++; 
    } 
    printf("%d",i); 
    return 0; 
} 
+0

在程序中輸出808並檢查輸出。當在這個程序中給迴文輸入時,它返回數字本身。 – ameyCU

+0

你說得對,只是把我的init改成i = k + 1; –

+0

請在您的代碼中進行更改。 – ameyCU

相關問題