关于C语言自定义函数
编写:输入10个学生的3门课的成绩,分别用函数求:(1) 每个学生的平均分。
(2) 每门课的平均分。
(3) 按学生平均分降序排列输出学生信息。
(4) 统计不及格学生,输出其相应信息。
(5) 编写一菜单主函数,菜单内容包括以上4部分。
分析:本题要求完成的操作有录入数据、求平均分、排序、统计。这些操作分别用函数来实现。先分析表示这些数据的数据结构,可用如下结构来表示学生的成绩:
课程1 课程2 课程3 平均分
68 74 50
… … …
即10个学生的3门课程成绩可以登记在一个二维数组中score,其中最后一列用于保存平均分,学生的学号不单独记录,学生的序号用二维表的行号来表示。下面给出了主菜单的参考程序c60205.c,其他功能的函数学生自己编写。
#include <stdio.h>
#define N 10
#define M 4
void main()
{
int score;
charchoice='1';
void input(int [][],int,int);
void aver_stu(int [][],int,int);
void aver_cour(int [][],int,int);
void orde_aver(int [][],int,int);
void failed(int [][],int,int);
input(score,N,M);
/*显示主菜单*/
while(choice!='0')
{
clrscr();
printf(" ==========the Score Processing System ===============\n");
printf("1.print each student's average\n");
printf("2.print each course's average\n");
printf("3.Order the students by student's average decreasingly \n");
printf("4.print the failed student \n");
printf("0.Exit the system \n");
printf("==============================================\n");
printf("Please choise (0-4): \n");
choice=getchar();
switch(choice)
{
case '1':aver_stu(score,N,M); break;
case '2':aver_cour(score,N,M); break;
case '3':orde_aver(score,N,M); break;
case '4':failed(score,N,M); break;
case '0':exit(0);
default:printf("Choice Error,Please select again(0-4).");
}
}
}
void input(int score[][])
{
int i,j;
for(i=0;i<N;i++)
{
printf("\n input score of student %2d:\n",i+1);
for(j=0;j<M;j++)
scanf("%f",&score);
}
}
void aver_stu(int score[][])
{
int i,j;
float s;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
s=0;
for(i=0;i<N;i++)
s+=score;
a_stu=s/3.0;
printf("aver_stu[%d]=%8.2f",i,a_stu);
}
}
}
void aver_cour(int score[][])
{
int i,j;
float s;
for(j=0;j<M;j++)
{
s=0;
for(i=0;i<N;i++)
s+=score;
a_cour=s/(float)N;
printf("aver_cour[%d]=%8.2f",j,a_cour);
}
}
我写了几个,有问题,不对。求教其他的写法。
页:
[1]