[英]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.