→ za755188:搞定.. 140.113.122.120 12/31
補充一下..我的原始碼
----------------------------------------------------------------------------
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;
#define UP 10
#define MAX 50 // 用在 struct struct_rec2 rec[MAX];
struct struct_rec {
long int id; //學號
int course_no; //修課數目,0 -- 9
int score[UP]; //修課成績
}rec[MAX];
struct struct_rec2 {
struct struct_rec data;
double avg; //平均成績
}rec2;
double ave(int no,int j[]);
void sort(double store[]);
int i=0;
int main()
{
int j,k;//i=0,
double store[MAX];
printf("請輸入學號,修課數目,成績:\n");
while(1)
{
if(scanf("%ld", &rec[i].id)==EOF)
{
break;
}
scanf("%d", &rec[i].course_no);
for(j=0;j<=rec[i].course_no-1;j++)
scanf("%d",&rec[i].score[j]);
i++;
}
for(k=0;k<i;k++)
{
if(rec[k].course_no==0)
{
store[k]=0;
}
else
{
store[k]=ave(rec[k].course_no, rec[k].score);
}
}
sort(store);
return 0;
}
double ave(int no,int j[]) //no=修課數目,j[]=成績
{
int k=0;
double sum=0;
for(k=0;k<no;k++)
sum=sum+j[k];
rec2.avg=sum/no;
return rec2.avg;
}
void sort(double store[])
{
int k,m,notemp,p=0,*scoretemp,l=0,rank=1; long int idtemp;
double temp;
for(m=0;m<i;m++)
for(k=m;k<i;k++)
{
if(store[k]>store[m])
{
temp=store[m];
idtemp=rec[m].id;
notemp=rec[m].course_no;
store[m]=store[k];
rec[m].id=rec[k].id;
rec[m].course_no=rec[k].course_no;
store[k]=temp;
rec[k].id=idtemp;
rec[k].course_no=notemp;
}
}
printf("\n");
printf("名次 學號 修課數目 平均成績 修課成績\n");
printf("===============================================================\n");
for(k=0;k<i;k++)
{
if(store[k]==store[k-1])
rank=rank;
else
rank=rank+1;
printf("%4d %9d %6d %7.5lf %d ",rank-1,
rec[k].id,rec[k].course_no,store[k]) ;
printf("\n");
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.122.120