有几个同学,每人考m门课,要求实现:
1 找出各科成绩最高的同学号和课程号;
2 找出有不及格课程的学生号及各门课程的成绩;
3 求全部学生全部课程的总平均分
注:课定义n m且 n>=10;m>=3。 成绩百分制计算(0——100)学号可规定;但学生成绩不能规定,不及格<60
有几个同学,每人考m门课,要求实现:
1 找出各科成绩最高的同学号和课程号;
2 找出有不及格课程的学生号及各门课程的成绩;
3 求全部学生全部课程的总平均分
注:课定义n m且 n>=10;m>=3。 成绩百分制计算(0——100)学号可规定;但学生成绩不能规定,不及格<60
#include <iostream>
#include <string>
using namespace std;
int m,n; //m个学生,n门课程
string cnum[1000];//课程号
string snum[1000];//学号
int num[1000][1000];
int main()
{
void best();
void lose();
void ave();
cout<<"输入学生的人数和课程的数目:"<<endl;
cin >>m>>n;
int i,j;
cout<<"输入所有的课程号:"<<endl;
for(i=0;i<n;i++)
cin >>cnum[i];
cout<<"输入每个学生的学号,课程的成绩(按照上面课程号输入顺序依次录入成绩):"<<endl;
for(i=0;i<m;i++)
{
cin >>snum[i];
for(j=0;j<n;j++)
{
cin >>num[i][j];
}
}
char fl='Y';
while(fl=='y' || fl=='Y')
{
cout<<"请输入功能:"<<endl;
cout<<"1、各科成绩最高的同学学号和课程号"<<endl;
cout<<"2、不及格同学的学号和该同学各科的成绩"<<endl;
cout<<"3、每个学生全部课程的平均分"<<endl;
int t;
cin >>t;
switch(t)
{
case 1:
best();
break;
case 2:
lose();
break;
case 3:
ave();
}
cout<<"继续吗??(Y/N):";
cin >>fl;
}
return 0;
}
void best()
{
int a,i;
int b,j,z;
for(i=0;i<n;i++)
{
b=0;
z=0;
for(j=0;j<m;j++)
{
if(b<num[j][i])
{
b=num[j][i];
a=j;
}
}
cout<<"课程号为:"<<cnum[i];
cout<<" 成绩最高学生学号为"<<snum[a]<<endl;
for(z=0;z<m;z++)
{
if(b==num[z][i] && z!=a)
{
cout<<"课程号为:"<<cnum[i];
cout<<" 成绩最高学生学号为"<<snum[z]<<endl;
}
}
}
cout<<endl;
return;
}
void lose()
{
int a,i;
int b,j;
int temp=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(num[i][j]<60)
{
temp=1;
cout<<"学号为:"<<snum[i];
cout<<"各科成绩为: ";
for(int z=0;z<n;z++)
cout<<num[i][j]<<" ";
cout<<endl;
break;
}
}
}
if(temp==0) cout<<"None!!"<<endl;
cout<<endl;
return ;
}
void ave()
{
int a,i;
int b,j,sum;
for(i=0;i<m;i++)
{
sum=0;
for(j=0;j<n;j++)
sum=sum+num[i][j];
cout<<"学号为:"<<snum[i];
cout<<" 平均成绩为:"<<(double)sum/n<<endl;
}
cout<<endl;
return ;
}
//(完全按照你的要求写的了,按照提示输入)
这个是C语言的,稍微改下就行了
稍微有些不同自己修改下!
#include <stdio.h>
void main()
{ double st_ave(int ar[][3], int m); double sc_ave(int ar[][3], int n); void max(int ar[][3]);
int ar[2][3]; int i,j;
for (i=0; i<2; i++) for (j=0; j<3; j++) { printf("请输入第%d学生第%d门功课的成绩:", i+1, j+1); scanf("%d", &ar[i][j]); }
for (i=0; i<2; i++) printf("\n第%d个学生的平均成绩为:%.2f", i+1, st_ave(ar, i));
for (i=0; i<3; i++) printf("\n第%d门功课的平均成绩为:%.2f", i+1, sc_ave(ar, i));
max(ar);
}
double st_ave(int ar[][3], int m) { int i; int sum = 0;
for (i=0; i<3; i++) sum += ar[m][i];
return (sum/3.0);
}
double sc_ave(int ar[][3], int n) { int i; int sum = 0;
for (i=0; i<2; i++) sum += ar[i][n];
return (sum/2.0);
}
void max(int ar[][3]) { int i,j; int max = ar[0][0]; int x = 0, y = 0;
for (i=0; i<2; i++) for (j=0; j<3; j++) { if (max < ar[i][j]) { max = ar[i][j]; x = i; y = j; } }
printf("\n第%d个学生第%d门功课的成绩最高。为:%d\n", x+1, y+1, max); }