fork download
  1. #include <stdio.h>
  2.  
  3. typedef struct {
  4. int id;
  5. int english;
  6. char grade; // 「class」は予約語に近いため「grade」に変更し、文字型(char)にしました
  7. } Student;
  8.  
  9. // プロトタイプ宣言(引数はポインタ、人数も渡すと安全です)
  10. void classify(Student *data, int count);
  11.  
  12. int main(void) {
  13. // 1. 配列の宣言(*を外しました)
  14. // 初期値の {id, english} の後ろに、grade用の初期値(' 'など)を入れます
  15. Student data[] = {
  16. {1, 60, ' '}, {2, 80, ' '}, {3, 90, ' '}, {4, 70, ' '}, {5, 50, ' '}
  17. }; // 初期値の {id, english} の後ろに、grade用の初期値(' ')なくても行ける
  18. int num = 5; // 生徒の人数
  19.  
  20. // 2. 判定関数を呼び出す(これがないと実行されません)
  21. classify(data, num);
  22.  
  23. printf("--- 判定結果 ---\n");
  24. for (int i = 0; i < num; i++) {
  25. // 文字を表示するときは %c を使います
  26. printf("id:%d, score:%3d, class:%c\n", data[i].id, data[i].english, data[i].grade);
  27. }
  28.  
  29. return 0;
  30. }
  31.  
  32. void classify(Student *data, int count) {
  33. for (int i = 0; i < count; i++) {
  34. if (data[i].english >= 80) {
  35. data[i].grade = 'A';
  36. } else if (data[i].english >= 70) {
  37. data[i].grade = 'B';
  38. } else if (data[i].english >= 60) {
  39. data[i].grade = 'C';
  40. } else
  41. data[i].grade = 'D';
  42. }
  43. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
--- 判定結果 ---
id:1, score: 60, class:C
id:2, score: 80, class:A
id:3, score: 90, class:A
id:4, score: 70, class:B
id:5, score: 50, class:D