有n>=10个学生,m>=3门课程,
1,找出各课成绩的最大值和学号,
2,找出不结格课程的学生号和课程号。
3,求出全部学生全部课程的平均分。
4,写出个人心得各见解
有n>=10个学生,m>=3门课程,
1,找出各课成绩的最大值和学号,
2,找出不结格课程的学生号和课程号。
3,求出全部学生全部课程的平均分。
4,写出个人心得各见解
//有n>=10个学生,m>=3门课程,
//1,找出各课成绩的最大值和学号,
//2,找出不结格课程的学生号和课程号。
//3,求出全部学生全部课程的平均分。
//4,写出个人心得各见解
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define MAXSIZE 100
int i;
static count = 0; //记录插入的条数
struct score
{
char number[10]; //学号
float math; //各科成绩
float english;
float history;
}stu[MAXSIZE];
//建立信息表
void create()
{
int judge; //judge用来判断是否还要输入信息
i = 0; //这里i用作数组的下标
loop:
printf( "输入第%d个学生的信息\n", i+1 );
printf( "输入学号:");
scanf( "%s", stu[i].number );
while( strlen(stu[i].number) >= 10 )
{
printf( "超出范围\n");
scanf( "%s", stu[i].number );
}
printf( "数学成绩:");
scanf( "%f", &stu[i].math );
while( stu[i].math < 0 || stu[i].math >100 )
{
printf( "超出范围\n");
scanf( "%f", &stu[i].math );
}
printf( "英语成绩:");
scanf( "%f", &stu[i].english );
while( stu[i].english < 0 || stu[i].english >100 )
{
printf( "超出范围\n");
scanf( "%f", &stu[i].english );
}
printf( "历史成绩:");
scanf( "%f", &stu[i].history );
while( stu[i].history < 0 || stu[i].history >100 )
{
printf( "超出范围\n");
scanf( "%f", &stu[i].history );
}
count++;
printf( "是否还要输入信息(是(1)否(0)):");
scanf( "%d", &judge );
if( judge == 1 )
{
i++;
goto loop;
}
printf( "\n信息插入成功!!!一共插入了%d条记录\n", count );
}
void maxscore()
{
int m,e,h; //记录各科成绩最大值的下标
float maxm,maxe,maxh;
m = e = h = 0;
maxm = maxe = maxh = 0;
for( i = 0 ; i < count; i++ )
{
if( maxm < stu[i].math )
{
maxm = stu[i].math;
m = i;
}
if( maxe < stu[i].english )
{
maxe = stu[i].english;
e = i;
}
if( maxh < stu[i].history )
{
maxh = stu[i].history;
h = i;
}
}
printf("查找成功\n");
printf( "学号:%s 数学成绩最高分:%2.2f\n", stu[m].number, stu[m].math);
printf( "学号:%s 英语成绩最高分:%2.2f\n", stu[e].number, stu[e].english);
printf( "学号:%s 历史成绩最高分:%2.2f\n", stu[h].number, stu[h].history);
}
void failedscore()
{
int j;
for( j = 0; j < count; j++ )
{
if( stu[j].math < 60 || stu[j].english < 60 || stu[j].history < 60 )
{
printf( "学号:%s\t数学成绩%2.2f\t英语成绩%2.2f\t历史成绩:%2.2f\n",
stu[j].number, stu[j].math, stu[j].english, stu[j].history );
}
}
}
void avg()
{
int j;
float sum;
sum = 0;
for( j = 0; j < count; j++ )
{
sum += stu[j].math + stu[j].english + stu[j].history;
}
printf( "全部学生全部课程总分为:%2.2f\n", sum );
printf( "一共有%d条学生记录,全部学生全部课程的平均分(sum/(count*3))为:%2.2f\n", count, sum/(count*3) );
}
void menu()
{
printf( "\t\t***********************************************\n");
printf( "\t\t* 1、建立信息表 *\n");
printf( "\t\t* 2、各课成绩的最大值和学号 *\n");
printf( "\t\t* 3、不及格课程的学生号,课程号 *\n");
printf( "\t\t* 4、全部学生全部课程的平均分 *\n");
printf( "\t\t* 5、清屏 *\n");
printf( "\t\t* 6、退出 *\n");
printf( "\t\t***********************************************\n");
}
int main( void )
{
int select;
loop:
menu();
printf( "请选择操作(提前必须建立信息表):");
scanf( "%d", &select);
switch( select )
{
case 1: create();
break;
case 2: maxscore();
break;
case 3:failedscore();
break;
case 4: avg();
break;
case 5: system( "cls" );
break;
case 6: exit(0);
break;
default:printf( "选择出错\n");
break;
}
goto loop;
return 0;
}