我如何创建一个函数来读取用户插入到 c 数组中的数字?
how can i create a function to read the numbers that the user inserts into an array in c?
我是编程新手。
我正在做一个练习 用户在数组中插入数字,程序打印这些数字的平均值。
但练习的一部分是使用函数生成用户插入的数字,而这正是我苦苦挣扎的地方。
我的代码:
#include <stdio.h>
main() {
int n = 10, i, array1[10];
float sum = 0.0, average;
printf("insert 10 numbers\n");
for (i = 0; i < n; ++i) {
printf("insert digit no%d: ", i + 1);
scanf("%d", &array1[i]);
sum += array1[i];
}
average = sum / n;
printf("average = %.2f", average);
return 0;
}
非常感谢所有帮助:)
如果您想将用户输入和平均计算移动到单独的方法中。应该这样做。
#include <stdio.h>
/*
* Takes an array and get input for N items specified
*/
void getUserInputForArray(int array[], int N) {
printf("insert %d numbers\n", N);
for (int i = 0; i < N; ++i) {
printf("insert digit no %d: ", i + 1);
scanf("%d", &array[i]);
}
}
/*
* Calculate average for a given array of size N
*/
float getAverage(int array[], int N) {
// Initialize sum to 0
float sum = 0.0f;
// Iterate through array adding values to sum
for (int i = 0; i < N; i++)
sum += array[i];
// Calculate average
return sum / N;
}
int main() {
int n = 10, array1[10];
// Pass array to method, since arrays in C are passed by pointers.
// So Even if you modify it in method it would get reflected in
// main's array1 too
getUserInputForArray(array1, n);
// Calculate Average by delegating average calculation to getAverage(...) method
float average = getAverage(array1, n);
printf("average = %.2f", average);
return 0;
}
这是一个向您展示函数如何工作的小程序:
#include "stdio.h"
void foo(int array[], int size)
{
for (int i = 0; i < size; i++)
scanf("%d", &array[i]);
}
size_t bar(int array[], int size)
{
int sum = 0;
for (int i = 0; i < size; i++)
sum += array[i];
return (sum);
}
int main(void)
{
int array[3] = {0};
int sum;
foo(array, 3);
sum = bar(array, 3);
printf("array sum = %d\n", sum);
return (0);
}
foo
和bar
是两个函数,它们的左边都有一个return类型,一个名字(foo/bar),括号里有一些参数, 以及它们在大括号之间的主体声明。
当您从 main 调用函数时,您必须使用所需的参数来调用它。在我的示例中,两个函数都需要一个整数数组和一个整数值作为参数。这就是为什么我们从主要部分这样称呼它:foo(array, 3);
和 bar(array, 3)
.
当我们调用一个函数时,给定的参数会被复制到内存中,这样您就可以像使用变量一样在函数体中使用这些参数。
某些函数的 return 类型不同于 void
。这些函数能够(并且必须)return return 类型的值与 return
语句。这些值可以被使用、分配等,正如您在指令 sum = bar(array, 3);
中看到的那样
甚至 main
也是一个函数 !
我是编程新手。
我正在做一个练习 用户在数组中插入数字,程序打印这些数字的平均值。
但练习的一部分是使用函数生成用户插入的数字,而这正是我苦苦挣扎的地方。
我的代码:
#include <stdio.h>
main() {
int n = 10, i, array1[10];
float sum = 0.0, average;
printf("insert 10 numbers\n");
for (i = 0; i < n; ++i) {
printf("insert digit no%d: ", i + 1);
scanf("%d", &array1[i]);
sum += array1[i];
}
average = sum / n;
printf("average = %.2f", average);
return 0;
}
非常感谢所有帮助:)
如果您想将用户输入和平均计算移动到单独的方法中。应该这样做。
#include <stdio.h>
/*
* Takes an array and get input for N items specified
*/
void getUserInputForArray(int array[], int N) {
printf("insert %d numbers\n", N);
for (int i = 0; i < N; ++i) {
printf("insert digit no %d: ", i + 1);
scanf("%d", &array[i]);
}
}
/*
* Calculate average for a given array of size N
*/
float getAverage(int array[], int N) {
// Initialize sum to 0
float sum = 0.0f;
// Iterate through array adding values to sum
for (int i = 0; i < N; i++)
sum += array[i];
// Calculate average
return sum / N;
}
int main() {
int n = 10, array1[10];
// Pass array to method, since arrays in C are passed by pointers.
// So Even if you modify it in method it would get reflected in
// main's array1 too
getUserInputForArray(array1, n);
// Calculate Average by delegating average calculation to getAverage(...) method
float average = getAverage(array1, n);
printf("average = %.2f", average);
return 0;
}
这是一个向您展示函数如何工作的小程序:
#include "stdio.h"
void foo(int array[], int size)
{
for (int i = 0; i < size; i++)
scanf("%d", &array[i]);
}
size_t bar(int array[], int size)
{
int sum = 0;
for (int i = 0; i < size; i++)
sum += array[i];
return (sum);
}
int main(void)
{
int array[3] = {0};
int sum;
foo(array, 3);
sum = bar(array, 3);
printf("array sum = %d\n", sum);
return (0);
}
foo
和bar
是两个函数,它们的左边都有一个return类型,一个名字(foo/bar),括号里有一些参数, 以及它们在大括号之间的主体声明。
当您从 main 调用函数时,您必须使用所需的参数来调用它。在我的示例中,两个函数都需要一个整数数组和一个整数值作为参数。这就是为什么我们从主要部分这样称呼它:foo(array, 3);
和 bar(array, 3)
.
当我们调用一个函数时,给定的参数会被复制到内存中,这样您就可以像使用变量一样在函数体中使用这些参数。
某些函数的 return 类型不同于 void
。这些函数能够(并且必须)return return 类型的值与 return
语句。这些值可以被使用、分配等,正如您在指令 sum = bar(array, 3);
甚至 main
也是一个函数 !