程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu1282回文數猜想

hdu1282回文數猜想

編輯:C++入門知識

 
字符串的操作太弱了。。。。花了將近3個小時,還好一次就過了 不然真的會瘋掉
 
 
[cpp] 
#include<iostream> 
using namespace std; 
 
int main() 

    char x[20],y[20],t[100][20]; 
    int i,j,num,len,n; 
    while(scanf("%s",x)!=EOF) 
    { 
        num=0; 
        while(1) 
        { 
            strcpy(t[num],x); 
            len=strlen(x); 
            for(i=0;i<len;i++)   y[len-1-i]=x[i];    y[len]='\0';   //翻轉  
             
            if(strcmp(x,y)==0)  break;                           //不相等  
            num++;                                        //相加次數+1  
             
            for(i=0;i<len;i++)  x[i]+=y[i]-'0';       //相加 ,得到新的x 
        //  printf("!!相加後x=%s\n",x); 
            for(i=len-1;i>0;i--) 
                if(x[i]>'9') 
                { 
                    x[i-1]++; 
                    x[i]-=10; 
                } 
            if(x[0]>'9') 
            { 
                x[0]-=10; 
                for(i=len;i>0;i--) 
                    x[i]=x[i-1]; 
                x[0]='1'; 
                x[len+1]='\0'; 
            } 
             
        //  printf("!!進位後x=%s\n",x); 
        //  system("pause"); 
        } 
        printf("%d\n%s",num,t[0]); 
        for(i=1;i<=num;i++) 
            printf("--->%s",t[i]); 
        printf("\n"); 
    } 
     
    return 0; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved