2016-11-17 50 views
-1

我該如何比較C中的2位數字並找到我的程序中每個長度的交集?我有以下代碼,但我不確定爲什麼它是段錯誤。我想要做的是比較兩個數字,看看每個數字是否相互匹配。如果他們這樣做,他們會設置數字相同的數字,但如果他們不同,它會將該數字設置爲0. 例如,如果我有number1 = 2421和number2 = 2412那麼返回的數字將是2400.如何找到C中的2個long的交集?

long set_intersect(long number1, long number2) 
    { 
     int count=0; 
     char setone[18],settwo[18]; 
     int final[18]; 
     long countone,counttwo; 
     while((number1) && (number2)) 
     { 
       countone = number1 %10; 
       setone[count] = countone; 
       counttwo = number2% 10; 
       settwo[count] = counttwo; 
       number1 = number1/10; 
       number2 = number2/10; 
       count++; 
     } 
     for(int i= 0 ; i< count; i++) 
     { 
         if(setone[i] == settwo[i]) 
         { 
           final[i] = setone[i]; 
         } 
         else 
         { 
           final[i] = 0; 
         } 
     } 
     for(i=0 ; i < count ; i++) 
     { 
       printf("%i\n",final[i]); 
     } 
} 

回答

2

未定義的行爲,由於count的未初始化值。

int count = 0; 
+0

所以在編輯代碼後,代碼不會打印出正確的交點。代碼中還有其他什麼會導致這種情況? – WasabiCannon

+1

也許吧。取決於「正確」的含義。我想如果你給123356和12345打印出123050.那是「正確的」嗎? – paddy

+0

是的,這是正確的 – WasabiCannon

相關問題