2015-05-17 26 views
-2
#include <stdio.h> 
#include <string.h> 
#include <math.h> 

int main(int argc, char* argv[]) { 
    char p[80],m[80]; 
    int length1,length2,b,i,j,total,total2; 

    puts("input base Dividend Divisor"); 
    scanf("%d %s %s",&b,&p,&m); 

    length1 = strlen(p); 
    length2 = strlen(m); 

    for (i=0;i<=length1;i++) { 
     total+=(p[i]-'0')*pow(b,length1-1); 
     length1--; 
    } 

我認爲兩個for循環大部分是相同的。 爲什麼我不能得到我想要的。total2的值太奇怪了!我無法得到正確的值

for (j=0;j<=length2;j++) { 
     total2+=(m[j]-'0')*pow(b,length2-1); 
     length2--; 
    } 

    printf("%d %d",total,total2); 

    return 0; 
} 

我無法獲得正確的值。

+2

'total'和'total2'都是未初始化的值..如果你還說你想要什麼,這將有所幫助 – amdixon

+0

歡迎來到Stackoverflow!如果在問題中包含以下內容,您將大大增加解決問題的機會:您正在嘗試執行的操作,輸入內容,預期輸出內容,實際輸出內容以及可能收到的任何錯誤消息。 – IanAuld

回答

0

字符串輸入與scanf不需要&。 因此,與其這樣:

scanf("%d %s %s",&b,&p,&m); 

試試這個:

scanf("%d %s %s",&b,p,m); 

此外,

total+=(p[i]-'0')*pow(b,length1-1); 

total的初始值可以是一些垃圾值,您需要初始化它:

total=0; total2=0; 
0

首先,您並未將您的總變量初始化爲零,因此它們都會以任意值開始。

簡單

total = total2 = 0; 

之前的循環啓動將解決這個問題。

您可能還想查看strtol函數族,因爲它已經提供了一種將字符串轉換爲整數的方法。