#include <cstdio>
#include <stdlib.h>
#include <iostream>
#define SIZE 6
using namespace std;
int sum ( int x, int y, int z );
int average (int x, int y, int z );
int Rank ( int x[] );
int main2( void );
int main3( void );
int main4( void );
int main41( void );
int main42( void );
int main43( void );
int nop; //輸入人數
typedef struct Student
{
char *name,na;
char *id,nu;
int Cscore;
int Escore;
int Mscore;
int Sscore;
int Ascore;
int Rank;
};
int main( void )
{
Student data[SIZE];
int i;
for( i = 0 ; i < SIZE ; i++ )
{
data[i].name = &data[i].na ;
data[i].id = &data[i].nu ;
data[i].Cscore = 0 ;
data[i].Escore = 0 ;
data[i].Mscore = 0 ;
cout << "第" << i+1 << "個學生\n" ;
cout << "請輸入姓名:" ;
scanf( "%s", &data[i].na );
cout << "請輸入學號:" ;
scanf( "%s", &data[i].nu );
cout << "請輸入國文分數:" ;
scanf( "%d", &data[i].Cscore );
cout << "請輸入英文分數:" ;
scanf( "%d", &data[i].Escore );
cout << "請輸入數學分數:" ;
scanf( "%d", &data[i].Mscore );
data[i].Sscore = sum( data[i].Cscore, data[i].Escore, data[i].Mscore );
data[i].Ascore = average( data[i].Cscore, data[i].Escore, data[i].Mscore );
cout << "總成績:" << data[i].Sscore << '\n';
cout << "平均分數:" << data[i].Ascore << '\n';
nop = i + 1;
}
cout << "請輸入數字選擇要執行的功能:\n" ;
cout << "( 1 )依照名次排序\n" ;
cout << "( 2 )依照學號排序\n" ;
cout << "( 3 )依各科成績號排序\n" ;
cout << "( 4 )結束\n" ;
int ch;
cin >> ch ;
switch( ch ){
case '1':
main2();
return main();
case '2':
main3();
return main();
case '3':
main4();
return main();
case '4':
return 0;
default:
cout << "請重新輸入:" ;
}
}
int main2( void ) //排名
{
printf( "排名\t姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
Student data[SIZE];
int i, k, j = 0 ;
data[i].Rank = Rank ( &data[i].Sscore );
for ( i = 0 ; i < 5 ; i++ ){
for( ;data[k].Rank != i+1;k++ );{
printf( "%4d\t%4d\t%4d\t%4d\t%4d\t%4d\t%4d\t%4d\n" , data[k].Rank , data[k].name , data[k].id , data[k].Cscore , data[k].Escore , data[k].Mscore , data[k].Sscore , data[k].Ascore );
k = 0;
}}
system( "pause" );
return 0;
}
int main3( void ) //學號
{
printf( "姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
Student data[SIZE];
int i, k, j = 0 ;
for ( i = 0 ; i < 5 ; i++ ){
for( ;data[k].nu != i+1;k++ );{
printf( "%4d\t%4d\t%4d\t%4d\t%4d\t%4d\t%4d\n" , data[k].name , data[k].id , data[k].Cscore , data[k].Escore , data[k].Mscore , data[k].Sscore , data[k].Ascore );
k = 0;
}}
system( "pause" );
return 0;
}
int main4( void ) //各科成績
{
cout << "請輸入數字選擇要排序的科目:\n" ;
cout << "( 1 )依照國文成績排序\n" ;
cout << "( 2 )依照英文成績排序\n" ;
cout << "( 3 )依照數學成績排序\n" ;
cout << "( 4 )結束\n" ;
int ch;
cin >> ch;
switch( ch ){
case '1':
main41();
return main4();
case '2':
main42();
return main4();
case '3':
main43();
return main4();
case '4':
return 0;
default:
cout << "請重新輸入:" ;
}
return 0;
}
int main41( void ) //國文
{
printf( "姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
Student data[SIZE];
int i, k, j = 0 ;
data[i].Rank = Rank ( &data[i].Cscore );
for ( i = 0 ; i < 5 ; i++ ){
for( ;data[k].Rank != i+1;k++ );{
printf( "%4d\t%4d\t%4d\t%4d\t%4d\t%4d\t%4d\n" , data[k].name , data[k].id , data[k].Cscore , data[k].Escore , data[k].Mscore , data[k].Sscore , data[k].Ascore );
k = 0;
}}
system( "pause" );
return 0;
}
int main42( void ) //英文
{
printf( "姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
Student data[SIZE];
int i, k, j = 0 ;
data[i].Rank = Rank ( &data[i].Escore );
for ( i = 0 ; i < 5 ; i++ ){
for( ;data[k].Rank != i+1;k++ );{
printf( "%4d\t%4d\t%4d\t%4d\t%4d\t%4d\t%4d\n" , data[k].name , data[k].id , data[k].Cscore , data[k].Escore , data[k].Mscore , data[k].Sscore , data[k].Ascore );
k = 0;
}}
system( "pause" );
return 0;
}
int main43( void ) //數學
{
printf( "姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
Student data[SIZE];
int i, k, j = 0 ;
data[i].Rank = Rank ( &data[i].Mscore );
for ( i = 0 ; i < 5 ; i++ ){
for( ;data[k].Rank != i+1;k++ );{
printf( "%4d\t%4d\t%4d\t%4d\t%4d\t%4d\t%4d\n" , data[k].name , data[k].id , data[k].Cscore , data[k].Escore , data[k].Mscore , data[k].Sscore , data[k].Ascore );
k = 0;
}}
system( "pause" );
return 0;
}
int sum ( int x, int y, int z ){ return x + y + z ; }
int average (int x, int y, int z ){ return ( x + y + z ) / 3; }
int Rank (int x[] ){
int i, j;
int rank[] = {0};
for( i = 0 ; i <= nop ; i++ ){
for ( j = 0 ; j <= nop ; j++ ){
if( x[i] <= x[j] ){
rank[i]++;}}} return rank[i];}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8aW9zdHJlYW0+CgojZGVmaW5lIFNJWkUgNgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBzdW0gKCBpbnQgeCwgaW50IHksIGludCB6ICk7CmludCBhdmVyYWdlIChpbnQgeCwgaW50IHksIGludCB6ICk7CmludCBSYW5rICggaW50IHhbXSApOwoKaW50IG1haW4yKCB2b2lkICk7CmludCBtYWluMyggdm9pZCApOwppbnQgbWFpbjQoIHZvaWQgKTsKaW50IG1haW40MSggdm9pZCApOwppbnQgbWFpbjQyKCB2b2lkICk7CmludCBtYWluNDMoIHZvaWQgKTsKCmludCBub3A7ICAgIC8v6Ly45YWl5Lq65pW4Cgp0eXBlZGVmIHN0cnVjdCBTdHVkZW50CnsKCWNoYXIgKm5hbWUsbmE7CgljaGFyICppZCxudTsKCWludCBDc2NvcmU7CglpbnQgRXNjb3JlOwoJaW50IE1zY29yZTsKCWludCBTc2NvcmU7CglpbnQgQXNjb3JlOwoJaW50IFJhbms7Cgp9OwoKaW50IG1haW4oIHZvaWQgKQp7CglTdHVkZW50IGRhdGFbU0laRV07CglpbnQgaTsKCglmb3IoIGkgPSAwIDsgaSA8IFNJWkUgOyBpKysgKQoJewoJCWRhdGFbaV0ubmFtZSA9ICZkYXRhW2ldLm5hIDsKCQlkYXRhW2ldLmlkID0gJmRhdGFbaV0ubnUgOwoJCWRhdGFbaV0uQ3Njb3JlID0gMCA7CgkJZGF0YVtpXS5Fc2NvcmUgPSAwIDsKCQlkYXRhW2ldLk1zY29yZSA9IDAgOwoKCQljb3V0IDw8ICLnrKwiIDw8IGkrMSA8PCAi5YCL5a2455SfXG4iIDsKCQljb3V0IDw8ICLoq4vovLjlhaXlp5PlkI3vvJoiIDsKCQlzY2FuZiggIiVzIiwgJmRhdGFbaV0ubmEgKTsKCQljb3V0IDw8ICLoq4vovLjlhaXlrbjomZ/vvJoiIDsKCQlzY2FuZiggIiVzIiwgJmRhdGFbaV0ubnUgKTsKCQljb3V0IDw8ICLoq4vovLjlhaXlnIvmlofliIbmlbjvvJoiIDsKCQlzY2FuZiggIiVkIiwgJmRhdGFbaV0uQ3Njb3JlICk7CgkJY291dCA8PCAi6KuL6Ly45YWl6Iux5paH5YiG5pW477yaIiA7CgkJc2NhbmYoICIlZCIsICZkYXRhW2ldLkVzY29yZSApOwoJCWNvdXQgPDwgIuiri+i8uOWFpeaVuOWtuOWIhuaVuO+8miIgOwoJCXNjYW5mKCAiJWQiLCAmZGF0YVtpXS5Nc2NvcmUgKTsKCgkJZGF0YVtpXS5Tc2NvcmUgPSBzdW0oIGRhdGFbaV0uQ3Njb3JlLCBkYXRhW2ldLkVzY29yZSwgZGF0YVtpXS5Nc2NvcmUgKTsKCQlkYXRhW2ldLkFzY29yZSA9IGF2ZXJhZ2UoIGRhdGFbaV0uQ3Njb3JlLCBkYXRhW2ldLkVzY29yZSwgZGF0YVtpXS5Nc2NvcmUgKTsKCQljb3V0IDw8ICLnuL3miJDnuL7vvJoiIDw8IGRhdGFbaV0uU3Njb3JlIDw8ICdcbic7CgkJY291dCA8PCAi5bmz5Z2H5YiG5pW477yaIiA8PCBkYXRhW2ldLkFzY29yZSA8PCAnXG4nOwoJCW5vcCA9IGkgKyAxOwoJfQoKCWNvdXQgPDwgIuiri+i8uOWFpeaVuOWtl+mBuOaTh+imgeWft+ihjOeahOWKn+iDve+8mlxuIiA7Cgljb3V0IDw8ICIoIDEgKeS+neeFp+WQjeasoeaOkuW6j1xuIiA7Cgljb3V0IDw8ICIoIDIgKeS+neeFp+WtuOiZn+aOkuW6j1xuIiA7Cgljb3V0IDw8ICIoIDMgKeS+neWQhOenkeaIkOe4vuiZn+aOkuW6j1xuIiA7Cgljb3V0IDw8ICIoIDQgKee1kOadn1xuIiA7CglpbnQgY2g7CgljaW4gPj4gY2ggOwoJc3dpdGNoKCBjaCApewoJCWNhc2UgJzEnOgoJCQltYWluMigpOwoJCQlyZXR1cm4gbWFpbigpOwoJCWNhc2UgJzInOgoJCQltYWluMygpOwoJCQlyZXR1cm4gbWFpbigpOwoJCWNhc2UgJzMnOgoJCQltYWluNCgpOwoJCQlyZXR1cm4gbWFpbigpOwoJCWNhc2UgJzQnOgoJCQlyZXR1cm4gMDsKCQlkZWZhdWx0OgoJCQljb3V0IDw8ICLoq4vph43mlrDovLjlhaU6IiA7Cgl9Cn0KCgppbnQgbWFpbjIoIHZvaWQgKQkJLy/mjpLlkI0KewoJcHJpbnRmKCAi5o6S5ZCNXHTlp5PlkI1cdOWtuOiZn1x05ZyL5paHXHToi7HmlodcdOaVuOWtuFx057i95YiGXHTlubPlnYdcbiIgKTsKCVN0dWRlbnQgZGF0YVtTSVpFXTsKCWludCBpLCBrLCBqID0gMCA7CglkYXRhW2ldLlJhbmsgPSBSYW5rICggJmRhdGFbaV0uU3Njb3JlICk7Cglmb3IgKCBpID0gMCA7IGkgPCA1IDsgaSsrICl7CgkJZm9yKCA7ZGF0YVtrXS5SYW5rICE9IGkrMTtrKysgKTt7CgkJCXByaW50ZiggIiU0ZFx0JTRkXHQlNGRcdCU0ZFx0JTRkXHQlNGRcdCU0ZFx0JTRkXG4iICwgZGF0YVtrXS5SYW5rICwgZGF0YVtrXS5uYW1lICwgZGF0YVtrXS5pZCAsIGRhdGFba10uQ3Njb3JlICwgZGF0YVtrXS5Fc2NvcmUgLCBkYXRhW2tdLk1zY29yZSAsIGRhdGFba10uU3Njb3JlICwgZGF0YVtrXS5Bc2NvcmUgKTsKCQkJayA9IDA7CgkJfX0KCXN5c3RlbSggInBhdXNlIiApOwoJcmV0dXJuIDA7Cn0KaW50IG1haW4zKCB2b2lkICkJCS8v5a246JmfCnsKCXByaW50ZiggIuWnk+WQjVx05a246JmfXHTlnIvmlodcdOiLseaWh1x05pW45a24XHTnuL3liIZcdOW5s+Wdh1xuIiApOwoJU3R1ZGVudCBkYXRhW1NJWkVdOwoJaW50IGksIGssIGogPSAwIDsKCWZvciAoIGkgPSAwIDsgaSA8IDUgOyBpKysgKXsKCQlmb3IoIDtkYXRhW2tdLm51ICE9IGkrMTtrKysgKTt7CgkJCXByaW50ZiggIiU0ZFx0JTRkXHQlNGRcdCU0ZFx0JTRkXHQlNGRcdCU0ZFxuIiAsIGRhdGFba10ubmFtZSAsIGRhdGFba10uaWQgLCBkYXRhW2tdLkNzY29yZSAsIGRhdGFba10uRXNjb3JlICwgZGF0YVtrXS5Nc2NvcmUgLCBkYXRhW2tdLlNzY29yZSAsIGRhdGFba10uQXNjb3JlICk7CgkJCWsgPSAwOwoJCX19CglzeXN0ZW0oICJwYXVzZSIgKTsKCXJldHVybiAwOwoJCn0KaW50IG1haW40KCB2b2lkICkJCS8v5ZCE56eR5oiQ57i+CnsKCWNvdXQgPDwgIuiri+i8uOWFpeaVuOWtl+mBuOaTh+imgeaOkuW6j+eahOenkeebru+8mlxuIiA7Cgljb3V0IDw8ICIoIDEgKeS+neeFp+Wci+aWh+aIkOe4vuaOkuW6j1xuIiA7Cgljb3V0IDw8ICIoIDIgKeS+neeFp+iLseaWh+aIkOe4vuaOkuW6j1xuIiA7Cgljb3V0IDw8ICIoIDMgKeS+neeFp+aVuOWtuOaIkOe4vuaOkuW6j1xuIiA7Cgljb3V0IDw8ICIoIDQgKee1kOadn1xuIiA7CglpbnQgY2g7CgljaW4gPj4gY2g7Cglzd2l0Y2goIGNoICl7CgljYXNlICcxJzoKCQltYWluNDEoKTsKCQlyZXR1cm4gbWFpbjQoKTsKCWNhc2UgJzInOgoJCW1haW40MigpOwoJCXJldHVybiBtYWluNCgpOwoJY2FzZSAnMyc6CgkJbWFpbjQzKCk7CgkJcmV0dXJuIG1haW40KCk7CgljYXNlICc0JzoKCQlyZXR1cm4gMDsKCWRlZmF1bHQ6CgkJY291dCA8PCAi6KuL6YeN5paw6Ly45YWlOiIgOwoJfQoJcmV0dXJuIDA7Cn0KaW50IG1haW40MSggdm9pZCApCQkvL+Wci+aWhwp7CglwcmludGYoICLlp5PlkI1cdOWtuOiZn1x05ZyL5paHXHToi7HmlodcdOaVuOWtuFx057i95YiGXHTlubPlnYdcbiIgKTsKCVN0dWRlbnQgZGF0YVtTSVpFXTsKCWludCBpLCBrLCBqID0gMCA7CglkYXRhW2ldLlJhbmsgPSBSYW5rICggJmRhdGFbaV0uQ3Njb3JlICk7Cglmb3IgKCBpID0gMCA7IGkgPCA1IDsgaSsrICl7CgkJZm9yKCA7ZGF0YVtrXS5SYW5rICE9IGkrMTtrKysgKTt7CgkJcHJpbnRmKCAiJTRkXHQlNGRcdCU0ZFx0JTRkXHQlNGRcdCU0ZFx0JTRkXG4iICwgZGF0YVtrXS5uYW1lICwgZGF0YVtrXS5pZCAsIGRhdGFba10uQ3Njb3JlICwgZGF0YVtrXS5Fc2NvcmUgLCBkYXRhW2tdLk1zY29yZSAsIGRhdGFba10uU3Njb3JlICwgZGF0YVtrXS5Bc2NvcmUgKTsKCQlrID0gMDsKCQl9fQoJc3lzdGVtKCAicGF1c2UiICk7CglyZXR1cm4gMDsKfQppbnQgbWFpbjQyKCB2b2lkICkJCS8v6Iux5paHCnsKCXByaW50ZiggIuWnk+WQjVx05a246JmfXHTlnIvmlodcdOiLseaWh1x05pW45a24XHTnuL3liIZcdOW5s+Wdh1xuIiApOwoJU3R1ZGVudCBkYXRhW1NJWkVdOwoJaW50IGksIGssIGogPSAwIDsKCWRhdGFbaV0uUmFuayA9IFJhbmsgKCAmZGF0YVtpXS5Fc2NvcmUgKTsKCWZvciAoIGkgPSAwIDsgaSA8IDUgOyBpKysgKXsKCQlmb3IoIDtkYXRhW2tdLlJhbmsgIT0gaSsxO2srKyApO3sKCQlwcmludGYoICIlNGRcdCU0ZFx0JTRkXHQlNGRcdCU0ZFx0JTRkXHQlNGRcbiIgLCBkYXRhW2tdLm5hbWUgLCBkYXRhW2tdLmlkICwgZGF0YVtrXS5Dc2NvcmUgLCBkYXRhW2tdLkVzY29yZSAsIGRhdGFba10uTXNjb3JlICwgZGF0YVtrXS5Tc2NvcmUgLCBkYXRhW2tdLkFzY29yZSApOwoJCWsgPSAwOwoJCX19CglzeXN0ZW0oICJwYXVzZSIgKTsKCXJldHVybiAwOwp9CmludCBtYWluNDMoIHZvaWQgKQkJLy/mlbjlrbgKewoJcHJpbnRmKCAi5aeT5ZCNXHTlrbjomZ9cdOWci+aWh1x06Iux5paHXHTmlbjlrbhcdOe4veWIhlx05bmz5Z2HXG4iICk7CglTdHVkZW50IGRhdGFbU0laRV07CglpbnQgaSwgaywgaiA9IDAgOwoJZGF0YVtpXS5SYW5rID0gUmFuayAoICZkYXRhW2ldLk1zY29yZSApOwoJZm9yICggaSA9IDAgOyBpIDwgNSA7IGkrKyApewoJCWZvciggO2RhdGFba10uUmFuayAhPSBpKzE7aysrICk7ewoJCXByaW50ZiggIiU0ZFx0JTRkXHQlNGRcdCU0ZFx0JTRkXHQlNGRcdCU0ZFxuIiAsIGRhdGFba10ubmFtZSAsIGRhdGFba10uaWQgLCBkYXRhW2tdLkNzY29yZSAsIGRhdGFba10uRXNjb3JlICwgZGF0YVtrXS5Nc2NvcmUgLCBkYXRhW2tdLlNzY29yZSAsIGRhdGFba10uQXNjb3JlICk7CgkJayA9IDA7CgkJfX0KCXN5c3RlbSggInBhdXNlIiApOwoJcmV0dXJuIDA7Cn0KCmludCBzdW0gKCBpbnQgeCwgaW50IHksIGludCB6ICl7CQlyZXR1cm4geCArIHkgKyB6IDsJfQppbnQgYXZlcmFnZSAoaW50IHgsIGludCB5LCBpbnQgeiApewkJcmV0dXJuICggeCArIHkgKyB6ICkgLyAzOwl9CmludCBSYW5rIChpbnQgeFtdICl7CglpbnQgaSwgajsKCWludCByYW5rW10gPSB7MH07Cglmb3IoIGkgPSAwIDsgaSA8PSBub3AgOyBpKysgKXsKCQlmb3IgKCBqID0gMCA7IGogPD0gbm9wIDsgaisrICl7CgkJCWlmKCB4W2ldIDw9IHhbal0gKXsKCQkJCXJhbmtbaV0rKzt9fX0JcmV0dXJuIHJhbmtbaV07fQ==