構造体の定義において,最後のセミコロン;を忘れて,エラーだらけになっている人を多く見ました。
#include <stdio.h>
struct seiseki {
char simei[25];
int ten_1;
int ten_2;
};
void main()
{
....
}
課題1 次に示す生徒の情報を構造体として定義・作成し,各内容を画面に表示するプログラムを作成しなさい。
番号 | 氏名 | 点数 | 成績 |
1 | 小林 | 82 | A |
/* 課題1 */
#include <stdio.h>
#include <string.h>
struct seiseki{
int num;
char name[10];
int score;
char grade;
};
void main()
{
struct seiseki a;
a.num = 1;
a.score = 82;
a.grade = 'A';
strcpy(a.name, "小林");
printf("番号:%d,名前:%s,点数:%d,成績:%c¥n", a.num, a.name, a.score, a.grade);
}
課題2 次に示す複数の生徒の情報を構造体の配列として作成し,順番に画面に表示するプログラムを作成しなさい。
番号 | 氏名 | 点数 | 成績 |
1 | 石山 | 82 | A |
2 | 松村 | 48 | F |
3 | 中島 | 98 | S |
/* 課題2 */
#include <stdio.h>
struct seiseki{
int num;
char name[10];
int score;
char grade;
};
void main()
{
int i;
struct seiseki a[] = {
{1,"石山",82,'A'},
{2,"松村",48,'F'},
{3,"中島",98,'S'}};
for(i=0; i<3; i++){
printf("番号:%d,名前:%s,点数:%d,成績:%c\n",
a[i].num,
a[i].name,
a[i].score,
a[i].grade);
}
}
課題3 前回の課題3を構造体を用いて書き直しなさい。
/* 課題3 */
#include <stdio.h>
struct seiseki{
char name[10];
int lang;
int phy;
};
void main()
{
int i;
struct seiseki a[] ={
{"佐藤", 65, 71},
{"鈴木", 84, 83},
{"高橋", 74, 74},
{"田中", 90, 90},
{"渡辺", 87, 78},
{"伊藤", 93, 95}
};
/* 各人の名前と平均点 */
for(i=0; i<6; i++){
printf("%d番目 名前:%s,平均点:%.1f\n", i+1, a[i].name, (float)(a[i].lang+a[i].phy)/2);
}
}
課題4 前回の課題4を構造体を用いて書き直しなさい。
/* 課題4 */
#include <stdio.h>
#include <math.h>
struct test{
char name[10];
int score;
};
void main()
{
FILE *fp;
int i, sum=0;
float ave, bun, dev;
struct test seiseki[50];
/* (1)ファイルから読み込む */
fp = fopen("50data.txt","r");
for(i=0; i<50; i++){
fscanf(fp, "%s %d", &(seiseki[i].name), &(seiseki[i].score));
printf("%s %d\n", seiseki[i].name, seiseki[i].score);
}
fclose(fp);
/* (2)平均点標準偏差の算出 */
for(i=0; i<50; i++){
sum+=seiseki[i].score;
}
ave = (float)sum/50;
for(i=0; i<50; i++){
bun+=(seiseki[i].score-ave)*(seiseki[i].score-ave);
}
bun /= 50;
dev = sqrt(bun);
printf("平均点:%.1f,標準偏差:%.1f\n", ave, dev);
/* (3)偏差値の算出 */
for(i=0; i<50; i++){
printf("%s %.1f\n", seiseki[i].name, 10*(seiseki[i].score-ave)/dev+50);
}
}