fork download
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. // 科目構造体:ten.h
  6. struct t_rec {
  7. int kamoku[3];
  8. };
  9.  
  10. // 学生情報構造体:gaku3.h
  11. struct g_rec {
  12. char gakuban[9];
  13. char cls[5];
  14. char *pnamae;
  15. int sei;
  16. struct t_rec *pten;
  17. struct g_rec *pgnext;
  18. };
  19.  
  20. struct g_rec *new_record(void)
  21. {
  22. struct g_rec *pg;
  23. int i;
  24.  
  25. pg = (struct g_rec *)malloc(sizeof (struct g_rec));
  26. pg->pnamae = (char *)malloc(20);
  27. pg->pten = (struct t_rec *)malloc(sizeof (struct t_rec));
  28.  
  29. printf("学籍番号==>");
  30. scanf("%8s", pg->gakuban);
  31. printf("クラス==>");
  32. scanf("%4s", pg->cls);
  33. printf("名前==>");
  34. scanf("%19s", pg->pnamae);
  35. printf("性別==>");
  36. scanf("%d", &pg->sei);
  37. for (i = 0; i < 3; i++) {
  38. printf("点数%d==>", i+1);
  39. scanf("%d", &pg->pten->kamoku[i]);
  40. }
  41.  
  42. return pg;
  43. }
  44.  
  45. int main()
  46. {
  47. struct g_rec *pghead = NULL;
  48. struct g_rec *pg;
  49. struct g_rec *pgnext;
  50. int i, num;
  51.  
  52. printf("n件入力==>");
  53. scanf("%d", &num);
  54. for (i = 0; i < num; i++) {
  55. pgnext = new_record();
  56. pgnext->pgnext = NULL;
  57. if (pghead == NULL) {
  58. pghead = pgnext;
  59. continue;
  60. }
  61. for (pg = pghead; ; pg = pg->pgnext) {
  62. if (pg->pgnext == NULL) {
  63. pg->pgnext = pgnext;
  64. break;
  65. }
  66. }
  67. }
  68.  
  69. // リストの表示
  70. printf("*** 表示 ***\n");
  71. for (pg = pghead; pg; ) {
  72. printf("学籍番号:%s\n", pg->gakuban);
  73. printf("クラス:%s\n", pg->cls);
  74. printf("氏名:%s\n", pg->pnamae);
  75. printf("性別:%s\n", (pg->sei == 1) ? "男" : "女");
  76. for (i = 0; i < 3; i++) {
  77. printf("点数%d:%d\n", i+1, pg->pten->kamoku[i]);
  78. }
  79. pg = pg->pgnext;
  80. }
  81.  
  82. // リストの削除
  83. for (pg = pghead; pg; pg = pgnext) {
  84. pgnext = pg->pgnext;
  85. free(pg->pnamae);
  86. free(pg->pten);
  87. free(pg);
  88. }
  89.  
  90. return 0;
  91. }
  92.  
Success #stdin #stdout 0.02s 1856KB
stdin
3
20120101
2091
田中角栄
1
80
70
90
20120102
2092
佐藤B作
1
10
20
30
20120301
2093
田中真紀子
2
90
80
70
stdout
n件入力==>学籍番号==>クラス==>名前==>性別==>点数1==>点数2==>点数3==>学籍番号==>クラス==>名前==>性別==>点数1==>点数2==>点数3==>学籍番号==>クラス==>名前==>性別==>点数1==>点数2==>点数3==>*** 表示 ***
学籍番号:20120101
クラス:2091
氏名:田中角栄
性別:男
点数1:80
点数2:70
点数3:90
学籍番号:20120102
クラス:2092
氏名:佐藤B作
性別:男
点数1:10
点数2:20
点数3:30
学籍番号:20120301
クラス:2093
氏名:田中真紀子
性別:女
点数1:90
点数2:80
点数3:70