fork download
  1. #include <cstdio>
  2. #include <stdlib.h>
  3. #include <iostream>
  4.  
  5. #define SIZE 6
  6.  
  7. using namespace std;
  8.  
  9. int sum ( int x, int y, int z );
  10. int average (int x, int y, int z );
  11. int Rank ( int x[] );
  12.  
  13. int main2( void );
  14. int main3( void );
  15. int main4( void );
  16. int main41( void );
  17. int main42( void );
  18. int main43( void );
  19.  
  20. int nop; //輸入人數
  21.  
  22. typedef struct Student
  23. {
  24. char *name,na;
  25. char *id,nu;
  26. int Cscore;
  27. int Escore;
  28. int Mscore;
  29. int Sscore;
  30. int Ascore;
  31. int Rank;
  32.  
  33. };
  34.  
  35. int main( void )
  36. {
  37. Student data[SIZE];
  38. int i;
  39.  
  40. for( i = 0 ; i < SIZE ; i++ )
  41. {
  42. data[i].name = &data[i].na ;
  43. data[i].id = &data[i].nu ;
  44. data[i].Cscore = 0 ;
  45. data[i].Escore = 0 ;
  46. data[i].Mscore = 0 ;
  47.  
  48. cout << "第" << i+1 << "個學生\n" ;
  49. cout << "請輸入姓名:" ;
  50. scanf( "%s", &data[i].na );
  51. cout << "請輸入學號:" ;
  52. scanf( "%s", &data[i].nu );
  53. cout << "請輸入國文分數:" ;
  54. scanf( "%d", &data[i].Cscore );
  55. cout << "請輸入英文分數:" ;
  56. scanf( "%d", &data[i].Escore );
  57. cout << "請輸入數學分數:" ;
  58. scanf( "%d", &data[i].Mscore );
  59.  
  60. data[i].Sscore = sum( data[i].Cscore, data[i].Escore, data[i].Mscore );
  61. data[i].Ascore = average( data[i].Cscore, data[i].Escore, data[i].Mscore );
  62. cout << "總成績:" << data[i].Sscore << '\n';
  63. cout << "平均分數:" << data[i].Ascore << '\n';
  64. nop = i + 1;
  65. }
  66.  
  67. cout << "請輸入數字選擇要執行的功能:\n" ;
  68. cout << "( 1 )依照名次排序\n" ;
  69. cout << "( 2 )依照學號排序\n" ;
  70. cout << "( 3 )依各科成績號排序\n" ;
  71. cout << "( 4 )結束\n" ;
  72. int ch;
  73. cin >> ch ;
  74. switch( ch ){
  75. case '1':
  76. main2();
  77. return main();
  78. case '2':
  79. main3();
  80. return main();
  81. case '3':
  82. main4();
  83. return main();
  84. case '4':
  85. return 0;
  86. default:
  87. cout << "請重新輸入:" ;
  88. }
  89. }
  90.  
  91.  
  92. int main2( void ) //排名
  93. {
  94. printf( "排名\t姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
  95. Student data[SIZE];
  96. int i, k, j = 0 ;
  97. data[i].Rank = Rank ( &data[i].Sscore );
  98. for ( i = 0 ; i < 5 ; i++ ){
  99. for( ;data[k].Rank != i+1;k++ );{
  100. 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 );
  101. k = 0;
  102. }}
  103. system( "pause" );
  104. return 0;
  105. }
  106. int main3( void ) //學號
  107. {
  108. printf( "姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
  109. Student data[SIZE];
  110. int i, k, j = 0 ;
  111. for ( i = 0 ; i < 5 ; i++ ){
  112. for( ;data[k].nu != i+1;k++ );{
  113. 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 );
  114. k = 0;
  115. }}
  116. system( "pause" );
  117. return 0;
  118.  
  119. }
  120. int main4( void ) //各科成績
  121. {
  122. cout << "請輸入數字選擇要排序的科目:\n" ;
  123. cout << "( 1 )依照國文成績排序\n" ;
  124. cout << "( 2 )依照英文成績排序\n" ;
  125. cout << "( 3 )依照數學成績排序\n" ;
  126. cout << "( 4 )結束\n" ;
  127. int ch;
  128. cin >> ch;
  129. switch( ch ){
  130. case '1':
  131. main41();
  132. return main4();
  133. case '2':
  134. main42();
  135. return main4();
  136. case '3':
  137. main43();
  138. return main4();
  139. case '4':
  140. return 0;
  141. default:
  142. cout << "請重新輸入:" ;
  143. }
  144. return 0;
  145. }
  146. int main41( void ) //國文
  147. {
  148. printf( "姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
  149. Student data[SIZE];
  150. int i, k, j = 0 ;
  151. data[i].Rank = Rank ( &data[i].Cscore );
  152. for ( i = 0 ; i < 5 ; i++ ){
  153. for( ;data[k].Rank != i+1;k++ );{
  154. 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 );
  155. k = 0;
  156. }}
  157. system( "pause" );
  158. return 0;
  159. }
  160. int main42( void ) //英文
  161. {
  162. printf( "姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
  163. Student data[SIZE];
  164. int i, k, j = 0 ;
  165. data[i].Rank = Rank ( &data[i].Escore );
  166. for ( i = 0 ; i < 5 ; i++ ){
  167. for( ;data[k].Rank != i+1;k++ );{
  168. 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 );
  169. k = 0;
  170. }}
  171. system( "pause" );
  172. return 0;
  173. }
  174. int main43( void ) //數學
  175. {
  176. printf( "姓名\t學號\t國文\t英文\t數學\t總分\t平均\n" );
  177. Student data[SIZE];
  178. int i, k, j = 0 ;
  179. data[i].Rank = Rank ( &data[i].Mscore );
  180. for ( i = 0 ; i < 5 ; i++ ){
  181. for( ;data[k].Rank != i+1;k++ );{
  182. 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 );
  183. k = 0;
  184. }}
  185. system( "pause" );
  186. return 0;
  187. }
  188.  
  189. int sum ( int x, int y, int z ){ return x + y + z ; }
  190. int average (int x, int y, int z ){ return ( x + y + z ) / 3; }
  191. int Rank (int x[] ){
  192. int i, j;
  193. int rank[] = {0};
  194. for( i = 0 ; i <= nop ; i++ ){
  195. for ( j = 0 ; j <= nop ; j++ ){
  196. if( x[i] <= x[j] ){
  197. rank[i]++;}}} return rank[i];}
Success #stdin #stdout 0s 2736KB
stdin
Standard input is empty
stdout
第1個學生
請輸入姓名:請輸入學號:請輸入國文分數:請輸入英文分數:請輸入數學分數:總成績:0
平均分數:0
第2個學生
請輸入姓名:請輸入學號:請輸入國文分數:請輸入英文分數:請輸入數學分數:總成績:0
平均分數:0
第3個學生
請輸入姓名:請輸入學號:請輸入國文分數:請輸入英文分數:請輸入數學分數:總成績:0
平均分數:0
第4個學生
請輸入姓名:請輸入學號:請輸入國文分數:請輸入英文分數:請輸入數學分數:總成績:0
平均分數:0
第5個學生
請輸入姓名:請輸入學號:請輸入國文分數:請輸入英文分數:請輸入數學分數:總成績:0
平均分數:0
第6個學生
請輸入姓名:請輸入學號:請輸入國文分數:請輸入英文分數:請輸入數學分數:總成績:0
平均分數:0
請輸入數字選擇要執行的功能:
( 1 )依照名次排序
( 2 )依照學號排序
( 3 )依各科成績號排序
( 4 )結束
請重新輸入: