簡體   English   中英

使用c中的用戶輸入和函數計算數組的總和和平均值

[英]Calculating sum and average of an array with user input and functions in c

初學者C編碼器,我試圖找出我的代碼到底出了什么問題。 我正在使用兩個函數來計算用戶輸入的數組的總和和平均值。 數組的大小由用戶確定。 我嘗試查找示例,但是找不到很多有用的提示。 我更有可能只是不了解自己在做什么錯。 誰能給我一些建設性的批評和指導。 謝謝!

#include<stdio.h>

/*function declarations*/
int addNumbers(int number[]); 
float avgNumbers(int sum, int n);

int main(){
    int i, n, number[100], sum, result;
    float average;

    printf("How many numbers do you want to enter?\n");
    scanf("%d",&n);

    for (i = 0; i < n ; i++)  
   {
       printf("Enter the numbers %d:\n", i+1);
       scanf("%d",&number[i]);
   }
    for (i = 0; i < n ; i++)  
    {
       sum = 0;
       sum = addNumbers(&number);
       average = avgNumbers(sum,n);
    }

    printf("Sum: %d\n",sum);
    printf("Average: %f\n",average);

    return 0;
}

/*function returning the sum of the numbers*/
int addNumbers(int number[])
{
    int i, n, sum;
    for (i = 0; i < n ; i++)
    sum += number[i]; 
    return sum;
    }

/*function returning the average of the numbers*/
float avgNumbers(int sum, int n)
{
    average = sum/n
    return average;
    }

調用addNumbers()和avgNumbers()時不需要for循環。 同樣,您正在發送地址代替方法中的值。 用此代碼替換您的代碼。

sum = 0;
sum = addNumbers(number);
average = avgNumbers(sum,n);

您不需要在main函數中進行循環,因為您已經在addNumber(int number[])了循環,但是您需要將數組中的元素數量作為參數傳遞給addNumbers(int number[], int n)例如這個。 並且您每次都在for循環中分配sum = 0 avgNumbers(int sum, int n )您需要聲明average並為其分配0。

您的代碼應如下所示。

#include<stdio.h>

/*function declarations*/
int addNumbers (int number[], int n);
float avgNumbers (int sum, int n);

int main (){
    int i, n, number[100], sum, result;
    float average;

    printf ("How many numbers do you want to enter?\n");
    scanf ("%d", &n);
    for (i = 0; i < n; i++){
        printf ("Enter the numbers %d:\n", i + 1);
        scanf ("%d", &number[i]);
    }
    sum = 0;
    sum = addNumbers(number, n);
    average = avgNumbers(sum, n);


    printf ("Sum: %d\n", sum);
    printf ("Average: %f\n", average);
    return 0;
}

/*function returning the sum of the numbers*/
int addNumbers (int number[], int n){
    int i, sum=0;
    for (i = 0; i < n; i++)
        sum += number[i];
    return sum;
}

/*function returning the average of the numbers*/
float avgNumbers (int sum, int n){
    float average = 0;
    average = sum / n;
    return average;
}

首先,您在計算平均值時使用返回類型float,但參數為int。 在這種情況下,將和除以n時,僅會存儲整數部分,因此得出的平均值不正確。 在實際執行除法之前,您必須輸入值。 類型轉換是非常必要的,否則可能會產生錯誤的結果。

接下來的事情是您不需要在主函數中進行循環

#include<stdio.h>
/*function declarations*/
int addNumbers (int number[], int n);
float avgNumbers (int sum, int n);

int main (){
    int i, n, number[100], sum, result;
    float average;

    printf ("How many numbers do you want to enter?\n");
    scanf ("%d", &n);
    for (i = 0; i < n; i++){
        printf ("Enter the numbers %d:\n", i + 1);
        scanf ("%d", &number[i]);
    }
    sum = 0;
    sum = addNumbers(number, n);
    average = avgNumbers(sum, n);


    printf ("Sum: %d\n", sum);
    printf ("Average: %f\n", average);
    return 0;
}

/*function returning the sum of the numbers*/
int addNumbers (int number[], int n){
    int i, sum=0;
    for (i = 0; i < n; i++)
        sum += number[i];
    return sum;
}

/*function returning the average of the numbers*/
float avgNumbers (int sum, int n){
    float average = 0;
    average = (float)sum / n;
    return average;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM