(1)次に示す生徒の情報を構造体として作成し,内容を関数(値参照)を用いて表示しなさい.
番号 | 氏名 | 点数 | 成績 |
1 | 内田 | 85 | B |
#include <stdio.h>
struct seiseki {
int bangou;
char simei[25];
int ten;
char hantei;
};
void disp_all(struct seiseki seito)
{
printf("番号¥t氏名¥t点数¥t成績¥n");
printf("%d¥t%s¥t%d¥t%c¥n",seito.bangou,seito.simei,seito.ten,seito.hantei);
}
void main()
{
struct seiseki seito = {1, "内田", 85, 'B'};
disp_all(seito);
}
(2)次に示す複数の生徒の情報を構造体として作成し,内容を関数(アドレス参照)を用いて表示しなさい.
番号 | 氏名 | 点数 | 成績 |
1 | 内田 | 85 | B |
2 | 梅田 | 59 | F |
3 | 鈴木 | 98 | S |
#include <stdio.h>
struct seiseki {
int bangou;
char simei[25];
int ten;
char hantei;
};
void disp_all(struct seiseki *p, int n)
{
int i;
printf("番号¥t氏名¥t点数¥t成績¥n");
for(i=0;i<n;i++){
printf("%d¥t%s¥t%d¥t%c¥n",(*(p+i)).bangou,(*(p+i)).simei,(*(p+i)).ten,(*(p+i)).hantei);
}
}
void main()
{
struct seiseki seito[3] = {{1, "内田", 85, 'B'},
{2, "梅田", 59, 'F'},
{3, "鈴木", 98, 'S'}};
disp_all(seito,3);
}
(3)次に示す複数の生徒の情報を構造体として作成し,平均値と成績を求めるプログラムを作成せよ.
*main文に表に示す初期条件を入れること*
番号 | 氏名 | 第1回 | 第2回 | 第3回 | 第4回 | 平均 | 成績 |
1 | 内田 | 85 | 74 | 63 | 90 | 0.0 | ? |
2 | 若林 | 78 | 65 | 70 | 62 | 0.0 | ? |
3 | 鈴木 | 89 | 92 | 88 | 76 | 0.0 | ? |
4 | 梅田 | 32 | 48 | 66 | 25 | 0.0 | ? |
5 | 堀越 | 92 | 98 | 90 | 95 | 0.0 | ? |
成績判定には,以下の表を利用しなさい.
点数 | 成績 |
90点以上 | S |
80点以上90点未満 | A |
70点以上80点未満 | B |
60点以上70点未満 | C |
60点未満 | F |
#include <stdio.h>
struct seiseki {
int bangou;
char simei[25];
int ten_1;
int ten_2;
int ten_3;
int ten_4;
float heikin;
char hantei;
};
void disp_all(struct seiseki *p, int n)
{
int i;
printf("番号¥t氏名¥t第1回¥t第2回¥t第3回¥t第4回¥t平均¥t成績¥n");
for(i=0;i<n;i++){
printf("%d¥t%s¥t%d¥t%d¥t%d¥t%d¥t%.1f¥t%c¥n",(*(p+i)).bangou,(*(p+i)).simei,(*(p+i)).ten_1,(*(p+i)).ten_2,(*(p+i)).ten_3,(*(p+i)).ten_4,(*(p+i)).heikin,(*(p+i)).hantei);
}
printf("¥n");
}
void ave(struct seiseki *p, int n)
{
int i;
for(i=0;i<n;i++){
(*(p+i)).heikin = ((*(p+i)).ten_1+(*(p+i)).ten_2+(*(p+i)).ten_3+(*(p+i)).ten_4)/4;
}
}
void seiseki(struct seiseki *p, int n)
{
int i;
for(i=0;i<n;i++){
if((*(p+i)).heikin >= 90){
(*(p+i)).hantei = 'S';
} else if((*(p+i)).heikin >= 80){
(*(p+i)).hantei = 'A';
} else if((*(p+i)).heikin >= 70){
(*(p+i)).hantei = 'B';
} else if((*(p+i)).heikin >= 60){
(*(p+i)).hantei = 'C';
} else {
(*(p+i)).hantei = 'F';
}
}
}
void main()
{
struct seiseki seito[5] = {{1,"内田",85,74,63,90,0.0,'?'},
{2,"若林",78,65,70,62,0.0,'?'},
{3,"鈴木",89,92,88,76,0.0,'?'},
{4,"梅田",32,48,66,25,0.0,'?'},
{5,"堀越",92,98,90,95,0.0,'?'}};
disp_all(seito,5);
ave(seito,5);
seiseki(seito,5);
disp_all(seito,5);
}
(4)(3)で表示されている生徒の情報をファイル(seiseki.csv)に保存するプログラムを作成せよ.
#include <stdio.h>
struct seiseki {
int bangou;
char simei[25];
int ten_1;
int ten_2;
int ten_3;
int ten_4;
float heikin;
char hantei;
};
void disp_all(struct seiseki *p, int n)
{
int i;
printf("番号¥t氏名¥t第1回¥t第2回¥t第3回¥t第4回¥t平均¥t成績¥n");
for(i=0;i<n;i++){
printf("%d¥t%s¥t%d¥t%d¥t%d¥t%d¥t%.1f¥t%c¥n",(*(p+i)).bangou,(*(p+i)).simei,(*(p+i)).ten_1,(*(p+i)).ten_2,(*(p+i)).ten_3,(*(p+i)).ten_4,(*(p+i)).heikin,(*(p+i)).hantei);
}
printf("¥n");
}
void ave(struct seiseki *p, int n)
{
int i;
for(i=0;i<n;i++){
(*(p+i)).heikin = ((*(p+i)).ten_1+(*(p+i)).ten_2+(*(p+i)).ten_3+(*(p+i)).ten_4)/4;
}
}
void seiseki(struct seiseki *p, int n)
{
int i;
for(i=0;i<n;i++){
if((*(p+i)).heikin >= 90){
(*(p+i)).hantei = 'S';
} else if((*(p+i)).heikin >= 80){
(*(p+i)).hantei = 'A';
} else if((*(p+i)).heikin >= 70){
(*(p+i)).hantei = 'B';
} else if((*(p+i)).heikin >= 60){
(*(p+i)).hantei = 'C';
} else {
(*(p+i)).hantei = 'F';
}
}
}
void write(struct seiseki *p, int n)
{
int i;
FILE *fp;
fp = fopen("seiseki.csv", "w");
if(fp == NULL){
printf("ファイルを作れませんでしたorz¥n");
return;
}
fprintf(fp, "番号,氏名,第1回,第2回,第3回,第4回,平均,成績¥n");
for(i=0;i<n;i++){
fprintf(fp, "%d,%s,%d,%d,%d,%d,%f,%c¥n",(*(p+i)).bangou,(*(p+i)).simei,(*(p+i)).ten_1,(*(p+i)).ten_2,(*(p+i)).ten_3,(*(p+i)).ten_4,(*(p+i)).heikin,(*(p+i)).hantei);
}
fclose(fp);
}
void main()
{
struct seiseki seito[5] = {{1,"内田",85,74,63,90,0.0,'?'},
{2,"若林",78,65,70,62,0.0,'?'},
{3,"鈴木",89,92,88,76,0.0,'?'},
{4,"梅田",32,48,66,25,0.0,'?'},
{5,"堀越",92,98,90,95,0.0,'?'}};
disp_all(seito,5);
ave(seito,5);
seiseki(seito,5);
disp_all(seito,5);
write(seito,5);
}