fork download
  1. #include <stdio.h>
  2.  
  3. #define NINNZUU 5
  4. #define KAMOKU 4
  5.  
  6. struct seiseki {
  7. int no;
  8. char ten[4];
  9. int sum;
  10. };
  11.  
  12. int main(void) {
  13.  
  14. struct seiseki data[NINNZUU + 1] = {
  15. {1001,{85,74,63,90},0},
  16. {1002,{78,65,70,62},0},
  17. {1003,{89,92,88,76},0},
  18. {1004,{32,48,66,25},0},
  19. {1005,{92,76,81,98},0},
  20. { -1,{ 0, 0, 0, 0},0}
  21. };
  22. char i,j;
  23. char kamokuname[KAMOKU][10] = {"国語","数学","理科","社会"};
  24.  
  25. struct seiseki *p;
  26. struct seiseki t;
  27.  
  28. p = data;
  29.  
  30. printf("番号 ");
  31. for(j=0;j<KAMOKU;j++)
  32. printf("%s ",kamokuname[j]);
  33. printf("合計\n");
  34.  
  35. for(i=0;i<NINNZUU;i++)
  36. {
  37. for(j=0;j<KAMOKU;j++)
  38. (p+i)->sum += (p+i)->ten[j];
  39. }
  40.  
  41. for(i=0;i<NINNZUU;i++)
  42. {
  43. for(j=i+1;j<NINNZUU;j++)
  44. {
  45. if((p+i)->sum < (p+j)->sum)
  46. {
  47. t = *(p+i);
  48. *(p+i) = *(p+j);
  49. *(p+j) = t;
  50. }
  51. }
  52. }
  53.  
  54. for(i=0;i<NINNZUU;i++)
  55. {
  56. printf("%d ",(p+i)->no);
  57. for(j=0;j<KAMOKU;j++)
  58. printf("%d ",(p+i)->ten[j]);
  59. printf("%d\n",(p+i)->sum);
  60. }
  61. return 0;
  62. }
  63.  
Success #stdin #stdout 0s 4368KB
stdin
1
2
3
4
5
6
7
8
9
10
stdout
番号 国語 数学 理科 社会 合計
1005 92 76 81 98 347
1003 89 92 88 76 345
1001 85 74 63 90 312
1002 78 65 70 62 275
1004 32 48 66 25 171