#7
by Meta3 » 3年前
Windows10 VisualStudio2019 clang
コード:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define NO 4
struct student {
char name[20];
int eng;
int math;
int jap;
double ave;
char grade;
};
typedef struct student Student; /* struct student型をStudent型とする */
int add_ave_grade(Student data[]){
int i;
for(i=0; i<NO; i++){
data[i].ave=(data[i].eng + data[i].math + data[i].jap)/3.0;
if(data[i].ave >=80){
data[i].grade = 'A';
} else if(data[i].ave >=70 && data[i].ave <80){
data[i].grade = 'B';
} else if(data[i].ave >=60 && data[i].ave <70){
data[i].grade = 'C';
} else {
data[i].grade = 'D';
}
}
return 0;
}
int ave_sort(Student data[]){
int i,j;
Student tmp;
for(i=0;i<NO;i++){
for(j=i+1;j<NO;j++){
if(data[i].ave<data[j].ave){
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}
}
}
return 0;
}
int put_eva(Student data[]){
FILE *fp;
fp = fopen("grade2020.txt", "w"); // ファイルを書き込み用にオープン(開く)
if (fp == NULL) { // オープンに失敗した場合
printf("cannot open\n"); // エラーメッセージを出して
exit(1); // 異常終了
}
int i;
for(i = 0; i <NO; i ++){
fprintf(fp, "%-10s:eng=%3d math=%3d jap=%3d:ave=%6.2lf grade=%c \n",
data[i].name,data[i].eng,data[i].math,data[i].jap,
data[i].ave,data[i].grade);
}
fclose(fp);
return 0;
}
int main(void)
{
Student data[]={{"Sato", 82,72,58},
{"Akiyama", 77, 84, 79},
{"Eida", 52, 62, 39},
{"Fujita", 41, 82, 58}};
/* 各自の平均点と評価を求める関数add_ave_grade */
add_ave_grade(data);
/* 平均点でデータをソートする関数ave_sort */
ave_sort(data);
/* 各自の3教科の成績と平均ならびに評価をファイル(grade2020.txt)に書き出すプログラム関数put_eva */
put_eva(data);
return 0;
}
Windows10 VisualStudio2019 clang
[code]#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define NO 4
struct student {
char name[20];
int eng;
int math;
int jap;
double ave;
char grade;
};
typedef struct student Student; /* struct student型をStudent型とする */
int add_ave_grade(Student data[]){
int i;
for(i=0; i<NO; i++){
data[i].ave=(data[i].eng + data[i].math + data[i].jap)/3.0;
if(data[i].ave >=80){
data[i].grade = 'A';
} else if(data[i].ave >=70 && data[i].ave <80){
data[i].grade = 'B';
} else if(data[i].ave >=60 && data[i].ave <70){
data[i].grade = 'C';
} else {
data[i].grade = 'D';
}
}
return 0;
}
int ave_sort(Student data[]){
int i,j;
Student tmp;
for(i=0;i<NO;i++){
for(j=i+1;j<NO;j++){
if(data[i].ave<data[j].ave){
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}
}
}
return 0;
}
int put_eva(Student data[]){
FILE *fp;
fp = fopen("grade2020.txt", "w"); // ファイルを書き込み用にオープン(開く)
if (fp == NULL) { // オープンに失敗した場合
printf("cannot open\n"); // エラーメッセージを出して
exit(1); // 異常終了
}
int i;
for(i = 0; i <NO; i ++){
fprintf(fp, "%-10s:eng=%3d math=%3d jap=%3d:ave=%6.2lf grade=%c \n",
data[i].name,data[i].eng,data[i].math,data[i].jap,
data[i].ave,data[i].grade);
}
fclose(fp);
return 0;
}
int main(void)
{
Student data[]={{"Sato", 82,72,58},
{"Akiyama", 77, 84, 79},
{"Eida", 52, 62, 39},
{"Fujita", 41, 82, 58}};
/* 各自の平均点と評価を求める関数add_ave_grade */
add_ave_grade(data);
/* 平均点でデータをソートする関数ave_sort */
ave_sort(data);
/* 各自の3教科の成績と平均ならびに評価をファイル(grade2020.txt)に書き出すプログラム関数put_eva */
put_eva(data);
return 0;
}[/code]