2016-02-19 97 views
0

所以我的程序要求輸入姓名和數字,然後計算偶數條目和奇數條目的數量,然後給出所有偶數條目的總數和總數。C用戶定義的功能問題

這一切除了計算,它告訴我,我有所有奇怪的條目,只有將它們加1時將它們的值。

我覺得它是與我的變量和引用在我的計算功能

#include <stdio.h> 
int number = 1; 
int evencount, oddcount; 
int eventotal, oddtotal; 



int main() { 


char name[256]; 



printf("Enter your name \n"); 
scanf("%s", name); 

printf("Enter numbers within 1-100 \n"); 
printf("Enter 0 to quit\n"); 
calc(number); 


printf("%s,the numbers you have entered are broken down as follows: \n", name); 

printf("%d odd entries \n", oddcount); 

printf("%d even entries\n", evencount); 

printf("You entered even numbers with a total value of %d \n", eventotal); 
printf("You entered odd numbers with a total value of %d \n", oddtotal); 

return 0; 

} 

int calc (int input) { 

while (number != 0) { 
    scanf("%d", &number); 
    if (input%2 == 1) { 
     oddcount++; 
     oddtotal += input; 
    } 
    else { 
     evencount++; 
     eventotal += input; 

    } 
}; 

} 

回答

3
scanf("%d", &number); 
if (input%2 == 1) { 
{ 
    oddcount++; 
    oddtotal += input; 
} 

我想你可能想number % 2而非input % 2oddtotal += number而不是oddtotal += input

+0

啊,我知道我有一些命名約定和使用哪些變量的問題,謝謝你! – Jclee

1

在您的calc函數中,您正在混合input(這是一個參數)和number,它是全球。

在您的輸入變量中使用全局變量是錯誤的形式,事實上,您不需要將任何內容傳遞給此函數。

此外,最好使用do..while,而不是while自循環必須至少運行一次:

你也使用功能它的聲明之前,所以你應該有一個函數原型。由於calc不需要返回任何內容,因此將其返回類型設置爲void

#include <stdio.h> 

int evencount, oddcount; 
int eventotal, oddtotal; 

void calc(); 

int main() 
{ 
    ... 
    calc(); 
    ... 
} 

void calc() 
{ 
    int number; 

    do { 
     scanf("%d", &number); 
     if (number%2 == 1) { 
      oddcount++; 
      oddtotal += number; 
     } else { 
      evencount++; 
      eventotal += number; 
     } 
    } while (number != 0); 
}