2015-09-16 185 views
0

我有這兩個功能,READDATA這是假設用戶需要輸入三個數字,並且是假設其他功能ComputeSum採取由用戶輸入的值,並把它們相加。我想分配ComputeSum功能的變量的結果,但它不能打印正確的總計。有人可以解釋導致這種情況發生的原因嗎?如何通過其他功能使用用戶輸入功能?

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


void ReadData(int *x,int *y,int *z); 
int ComputeSum(int x,int y,int z); 


int main() 
{ 
    int x, y, z; 
    int total; 

    ReadData(&x, &y, &z); 
    printf("\n"); 

    total = ComputeSum(x,y,z); 

    printf("The total is: %d", total); 



    printf("\n\n"); 

system("PAUSE"); 
return 0; 

} 




void ReadData(int *x,int *y,int *z) 
{ 
printf("Enter three numbers : "); 
scanf("%d %d %d", &x, &y, &z); 
printf("\n"); 

ComputeSum(x,y,z); 

return ; 
} 

int ComputeSum(int x,int y,int z) 
{ 
int Sum = x+y+z; 

return Sum; 
} 

___________________________________________________________________ 

    **Sample Output** 

Enter three numbers : 5 5 5 


The total is: 8869621 

Press any key to continue . . . 

回答

1

這條線ReadData()是不正確

scanf("%d %d %d", &x, &y, &z); 

應該

scanf("%d %d %d", x, y, z); 

因爲三個參數都已經指針。在同一個函數

ComputeSum(x,y,z); 

也是不正確的以下行,應該是

ComputeSum(*x, *y, *z); 

但既然你不使用它的結果甚至沒有必要的,這就是所謂的main反正。

請啓用編譯器警告和注意他們,無論這些故障產生警告。

+0

內READDATA到'ComputeSum'電話是完全無用,可以簡單地被丟棄。表示total = ComputeSum(x,y,z)的行按原樣是正確的。 – Vatine

+0

@Vatine很好的捕獲,但它仍然是書面的錯誤。 –

1

在功能void ReadData(int *x,int *y,int *z);

scanf("%d %d %d", &x, &y, &z); 

xyz已經指針,這樣你就不會需要通過自己的地址,只是通過pointers-

scanf("%d %d %d", x, y, z); 

我不明白爲什麼你叫ComputeSum()ReadData()如您在main()。沒有需要的已經調用它。

void ReadData(int *x,int *y,int *z) 
{ 
    //your code 
    ComputeSum(x,y,z); // Why ?? No need of it 
    return ; 
} 
0
  • 這裏是您的解決方案,

    #include <stdio.h> 
    #include <stdlib.h> 
    #include <ctype.h> 
    #include <string.h> 
    #include <math.h> 
    
    void ReadData(int *x,int *y,int *z); 
    int ComputeSum(int x,int y,int z); 
    
    int main() 
    { 
        int x, y, z; 
        int total; 
    
        ReadData(&x, &y, &z); 
        printf("\n"); 
        printf("\n\n"); 
    
        system("PAUSE"); 
        return 0; 
    
        } 
        void ReadData(int *x,int *y,int *z) 
        { 
         printf("Enter three numbers : "); 
         scanf("%d %d %d", x, y, z); 
         printf("\n"); 
    
         int total = ComputeSum(*x,*y,*z); 
         printf("The total is: %d", total); 
         return ; 
        } 
    
        int ComputeSum(int x,int y,int z) 
        { 
         int Sum = x+y+z; 
         return Sum; 
        } 
    
  • 僅從READDATA這樣的呼叫ComputeSum功能,

    int total = ComputeSum(*x,*y,*z); 
    
相關問題