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