你看看有哪块代码是没学过的?
程序代码:
/*
http://bbs.bccn.net/thread-439119-1-1.html
题目:定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数的返回值。用主函数来调用
它,统计50个学生成绩中,高于平均成绩的有多少人?
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
// 函数原型
void Pause(void);
void ListScores(const double scores[], int count, int flag);
double GetSumScore(const double scores[], int count);
double GetAverageScore(const double scores[], int count);
int GetUpperStudents(const double scores[], int count);
// 程序主入口
int main(void)
{
const double scores[50] = { 80, 64, 78, 91, 56, 82, 93, 72, 88, 68 };
const int n = 10;
ListScores(scores, n, 0);
putchar('\n');
printf_s("平均分: %6.2f\n", GetAverageScore(scores, n));
printf_s("高于平均分的人数: %d\n", GetUpperStudents(scores, n));
ListScores(scores, n, 1);
Pause();
return EXIT_SUCCESS;
}
/*
功能:暂停程序,等待用户按任意键
参数:无
*/
void Pause(void)
{
printf_s("\nPress any key to continue...");
_getch();
}
/*
功能:显示学生成绩
参数:scores[] -- 储存学生成绩的数组,每个元素是分数
count -- 数组中学生的个数
flag -- 是否显示高于平均分的成绩(0不显示,1显示)
*/
void ListScores(const double scores[], int count, int flag)
{
const double average = GetAverageScore(scores, count);
int index;
for (index = 0; index < count; ++index)
{
if ((flag != 1) || (scores[index]) > average)
{
printf_s("[%-2d] %6.2f\n", index + 1, scores[index]);
}
}
}
/*
功能:获取n个学生的成绩的总分
参数:scores[] -- 储存学生成绩的数组,每个元素是分数
count -- 数组中学生的个数
*/
double GetSumScore(const double scores[], int count)
{
double sum = 0.0;
int index;
for (index = 0; index < count; ++index)
{
sum += scores[index];
}
return sum;
}
/*
功能:获取n个学生的成绩的平均分
参数:scores[] -- 储存学生成绩的数组,每个元素是分数
count -- 数组中学生的个数
*/
double GetAverageScore(const double scores[], int count)
{
return GetSumScore(scores, count) / count;
}
/*
功能:获取n个学生的成绩中高于平均成绩的人数
参数:scores[] -- 储存学生成绩的数组,每个元素是分数
count -- 数组中学生的个数
*/
int GetUpperStudents(const double scores[], int count)
{
const double average = GetAverageScore(scores, count);
int quantity, index;
quantity = 0;
for (index = 0; index < count; ++index)
{
if (scores[index] > average)
{
++quantity;
}
}
return quantity;
}
运行效果:
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
你写好这些以后,再集中精力把接收数组数据的部分写出来,这已经不是题目所要求的了。人机交互,属于界面部分,既可以在控制台下完成,也可以在图形界面下完成,也可以通过读取磁盘数据来完成。界面归界面,这样写出来的代码,无论你怎么修改界面,都不需再修改,你的目标,只要再集中在如何把填充数组数据上就可以了。
另外,你再看我给你设计的这些函数,都是基本上要用到的,即使现在用不到多次,但很明显往后也要用,所以,哪怕是只使用一次,也要把函数写出来!这是代码清晰性的保证。你只要看主函数的逻辑,思路很清晰,在干什么,都一目了然。回头看看自己写的,看得清楚吗?
[
本帖最后由 TonyDeng 于 2014-11-27 15:14 编辑 ]