MODE —— 计算10个分数的平均值(知识点: 数组 变长数组)
程序员文章站
2022-05-19 13:40:37
...
数组是一个数目固定,类型相同的数据项,数组中的数据项称为元素。数组中的元素都是int、long、或者其他类型。
声明一个数组时,要给编译器提供为数组分配内存所需要的所有信息,包括值的类型(决定每个元素需要的字节数)和数组维(指定了元素的个数)。
数组占用的字节数是元素个数乘以每个元素的字节数。
问题描述:
使用数组可以存储所有要平均的分数,即存储所有分数,以便重复使用它们。计算10个分数的平均值。
运行结果:
代码部分:
#include <stdio.h>
int main(void)
{
int grades[10]; //Arrey storing 10 values
unsigned int count = 10; //Number of values to be read
long sum = 0L; //Sum of the number
float average = 0.0f; //Average of the number
unsigned int i = 0; //Out loop
printf("\nEnter the 10 grades:\n"); //Prompt for the input
//Read the ten numbers to be averaged
for(i = 0;i < count; ++i)
{
printf("%2u>",i+1);
scanf("%d",&grades[i]);//Read a grade
sum += grades[i]; //Add it to sum
}
average = (float)sum/count; //Calculate the acerage
printf("\nAverage of the ten grades entered is : %.2f\n",average);
return 0;
}
代码说明:
声明一个包含10个整数的数组grades[10],
count变量是unsigned int 类型,因为它必须非负。
接下来,用一个for循环读入数值且累加它们。
计算平均值的方法用sum除以分数的个数count,count的值是10。
变长数组运行结果:
变长数组代码部分:
#include <stdio.h>
int main(void)
{
//如果定义了_STDC_NO_VLA_ 符号,printf()语句和后面的exit()语句就会包含在程序中。
//如果不支持变长数组,但把这段代码放在main()的开头,printf()函数调用就会心事一个消息,并立即结束程序。
#ifdef _STDC_NO_VLA_
printf("Variable length arrays are not supported!\n");
exit(1);
#endif
size_t nGrades = 0; //Nmuber of grades
printf("Enter the number of grades:");
scanf("%zd",&nGrades);
int grades[nGrades]; //Arrey storing 10 values
long sum = 0L; //Sum of the number
float average = 0.0f; //Average of the number
printf("\nEnter the %zd grades:\n",nGrades); //Prompt for the input
unsigned int i = 0;
//Read the ten numbers to be averaged
for(i = 0;i < nGrades; ++i)
{
printf("%2u>",i+1);
scanf("%d",&grades[i]);//Read a grade
sum += grades[i]; //Add it to sum
}
average = (float)sum/nGrades; //Calculate the acerage
printf("\nAverage of the %d grades entered is : %.2f\n",nGrades,average);
return 0;
}