本次案例是从学习C语言开始到现在的一个小挑战,因为本次案例涉及到的知识点是自学习到现在的一些重要知识点和零碎知识点。
在这个案例中,我才用的思路是分别调用三次函数(1、初始化数组函数 2、遍历数组函数 3、计算平均值函数),这里重点说一下自己感觉比较薄弱和新奇的地方。
1、在初始化数组函数中
void initGrade(int class[],int len)
{
int i;
for(i=0;i<len;i++){
printf("请输入各个同学的成绩:\n");
scanf("%d",&class[i]);
}
puts("done!");
}
要注意没有返回值的函数定义,用的是void型,并且不需要return 。
其次,取缔子符号&一定要注意使用场所。
2、在遍历数组函数中
void printfGrade(int class[],int len)
{
int i;
printf("本班的成绩分别为:");
for(i=0;i<len;i++){
printf("%d ",class[i]);
}
printf("\n 本班有%d个学生 \n",i+1);
}
要注意 “本班的成绩分别为” 不能多次打印,得放在流程控制语句前。
同时,printf("\n 本班有%d个学生 \n",i+1); 在printf中,”“内的前和后部分都可以加上\n。这样既不会影响流程控制语句中数据的输出,也达到了输出班级总人数的目的。
3、计算平均值函数
int averageGrade(int class[],int len)
{
int sum=0;
float average;
int i;
for(i=0;i<len;i++){
sum=sum+class[i];
}
average=(float)sum/len;
return average;
}
在这段代码中,一定要将sum初始化成0,并且在输出average的时候,要注意它的类型是浮点型,应该为%f.
最后,整个代码为
#include <stdio.h>
void initGrade(int class[],int len)
{
int i;
for(i=0;i<len;i++){
printf("请输入各个同学的成绩:\n");
scanf("%d",&class[i]);
}
puts("done!");
}
void printfGrade(int class[],int len)
{
int i;
printf("本班的成绩分别为:");
for(i=0;i<len;i++){
printf("%d ",class[i]);
}
printf("\n 本班有%d个学生 \n",i+1);
}
int averageGrade(int class[],int len)
{
int sum=0;
float average;
int i;
for(i=0;i<len;i++){
sum=sum+class[i];
}
average=(float)sum/len;
return average;
}
int main()
{
int class1[5];
int class2[10];
int len1,len2;
float average1,average2;
len1=sizeof(class1)/sizeof(class1[0]);
len2=sizeof(class2)/sizeof(class2[0]);
initGrade(class1,len1);
printfGrade(class1,len1);
average1=averageGrade(class1,len1);
printf("一班的平均分为%f\n",average1);
initGrade(class2,len2);
printfGrade(class2,len2);
average2=averageGrade(class2,len2);
printf("二班的平均分为%f\n",average2);
}
编译结果: