finished cls12

This commit is contained in:
2026-07-12 21:27:30 +09:00
parent 54df531af1
commit 5d8dfb667f
10 changed files with 231 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
include ../common.mk
PROJECT_NAME:=cls12
TGTS:=$(patsubst %.c,%,$(wildcard *.c))
all: $(TGTS) a2-alt
%: %.c
@mkdir -p $(BUILD_PATH)/$(PROJECT_NAME)
$(CC) $(CFLAGS) $^ -o $(BUILD_PATH)/$(PROJECT_NAME)/$@
a2-alt: a2.c
@mkdir -p $(BUILD_PATH)/$(PROJECT_NAME)
$(CC) $(CFLAGS) -D ALT_DATA $^ -o $(BUILD_PATH)/$(PROJECT_NAME)/$@
clean:
$(RM) -drf $(BUILD_PATH)/$(PROJECT_NAME)
+41
View File
@@ -0,0 +1,41 @@
#include <stdio.h>
#define STUDENTS_NUM 4
struct student {
char name[20];
int english;
int mathematics;
int japanese;
double average;
};
int main(void) {
struct student students[] = {
{ .name = "佐藤", .english = 82, .mathematics = 72, .japanese = 58 },
{ .name = "秋山", .english = 77, .mathematics = 82, .japanese = 79 },
{ .name = "永田", .english = 52, .mathematics = 62, .japanese = 39 },
{ .name = "藤田", .english = 61, .mathematics = 82, .japanese = 88 }
};
for (int i = 0; i < STUDENTS_NUM; i++) {
students[i].average = (double)(
students[i].english +
students[i].mathematics +
students[i].japanese
) / 3.f;
}
for (int i = 0; i < STUDENTS_NUM; i++) {
printf(
"%10s: 英語=%3d\t数学=%3d\t国語=%3d\t平均=%.2lf\n",
students[i].name,
students[i].english,
students[i].mathematics,
students[i].japanese,
students[i].average
);
}
return 0;
}
+73
View File
@@ -0,0 +1,73 @@
#include <stdio.h>
#define STUDENTS_NUM 4
struct student {
char name[20];
int english;
int mathematics;
int japanese;
double average;
};
int main(void) {
#ifdef ALT_DATA
struct student students[] = {
{ .name = "佐藤", .english = 89, .mathematics = 86, .japanese = 78 },
{ .name = "秋山", .english = 78, .mathematics = 65, .japanese = 79 },
{ .name = "永田", .english = 64, .mathematics = 33, .japanese = 53 },
{ .name = "藤田", .english = 89, .mathematics = 47, .japanese = 62 }
};
#else
struct student students[] = {
{ .name = "佐藤", .english = 82, .mathematics = 72, .japanese = 58 },
{ .name = "秋山", .english = 77, .mathematics = 82, .japanese = 79 },
{ .name = "永田", .english = 52, .mathematics = 62, .japanese = 39 },
{ .name = "藤田", .english = 61, .mathematics = 82, .japanese = 88 }
};
#endif
for (int i = 0; i < STUDENTS_NUM; i++) {
students[i].average = (double)(
students[i].english +
students[i].mathematics +
students[i].japanese
) / 3.f;
}
int grades[4] = {0};
for (int i = 0; i < STUDENTS_NUM; i++) {
char grade = 0;
int avg = students[i].average;
if (avg < 60) {
grade = 'D';
grades[3]++;
} else if (avg >= 60 && avg < 70) {
grade = 'C';
grades[2]++;
} else if (avg >= 70 && avg < 80) {
grade = 'B';
grades[1]++;
} else {
grade = 'A';
grades[0]++;
}
printf(
"%10s: 英語=%3d\t数学=%3d\t国語=%3d\t平均=%.2lf\t成績=%c\n",
students[i].name,
students[i].english,
students[i].mathematics,
students[i].japanese,
students[i].average,
grade
);
}
printf("成績: ");
for (int i = 0; i < 4; i++) {
printf("%c=%d人\t", 'A' + i, grades[i]);
}
putchar('\n');
return 0;
}