struct.cのmain関数内で宣言されている配列info4の要素数を2つ以上増やして名前を設定し、
実行結果を確認してください。
| struct.c |
|---|
#include<stdio.h>
/* 構造体Students型の定義の始まり */
struct Students{
char *name;
double exam;
int absence;
};
/* 構造体Students型の定義の終わり */
int main(void){
int StudentsNumber=3, i;
/* 構造体Students型を3個要素に持つ配列info4の宣言↓ */
struct Students info4[3];
/* 構造体Students型配列info4の各要素のメンバnameに代入の始まり */
info4[0].name="Meg Ryan";
info4[1].name="Julia Roberts";
info4[2].name="Gwyneth Partrow";
/* 構造体Students型配列info4の各要素のメンバnameに代入の終わり */
/* 構造体Students型配列info4の各要素のメンバexamに標準入力の始まり */
for(i=0;i<StudentsNumber;i++){
printf("Input the Examination Points(double) for %s\n",
info4[i].name);
scanf("%lf", &(info4[i].exam));
}
/* 構造体Students型配列info4の各要素のメンバexamに標準入力の終わり */
/* 構造体Students型配列info4の各要素のメンバabsenceに標準入力の始まり */
for(i=0;i<StudentsNumber;i++){
printf("Input the Absence Times(int) for %s\n", info4[i].name);
scanf("%d", &(info4[i].absence));
}
/* 構造体Students型配列info4の各要素のメンバabsenceに標準入力の終わり */
/* 構造体Students型配列info4の各要素の総合点を標準出力の始まり */
printf("Total Points are:\n");
for(i=0;i<StudentsNumber;i++){
printf("%s: %f\n", info4[i].name, info4[i].exam-10.0*(double)info4[i].absence);
}
/* 構造体Students型配列info4の各要素の総合点を標準出力の終わり */
return 0;
}
|
| struct_add2obj.c |
|---|
#include<stdio.h>
/* 構造体Students型の定義の始まり */
struct Students{
char *name;
double exam;
int absence;
};
/* 構造体Students型の定義の終わり */
int main(void){
int StudentsNumber=5, i;
/* 構造体Students型を3個要素に持つ配列info4の宣言↓ */
struct Students info4[5];
/* 構造体Students型配列info4の各要素のメンバnameに代入の始まり */
info4[0].name="Meg Ryan";
info4[1].name="Julia Roberts";
info4[2].name="Gwyneth Partrow";
info4[3].name="Yuchi Kanzawa";
info4[4].name="Gonbe Nanashino";
/* 構造体Students型配列info4の各要素のメンバnameに代入の終わり */
/* 構造体Students型配列info4の各要素のメンバexamに標準入力の始まり */
for(i=0;i<StudentsNumber;i++){
printf("Input the Examination Points(double) for %s\n",
info4[i].name);
scanf("%lf", &(info4[i].exam));
}
/* 構造体Students型配列info4の各要素のメンバexamに標準入力の終わり */
/* 構造体Students型配列info4の各要素のメンバabsenceに標準入力の始まり */
for(i=0;i<StudentsNumber;i++){
printf("Input the Absence Times(int) for %s\n", info4[i].name);
scanf("%d", &(info4[i].absence));
}
/* 構造体Students型配列info4の各要素のメンバabsenceに標準入力の終わり */
/* 構造体Students型配列info4の各要素の総合点を標準出力の始まり */
printf("Total Points are:\n");
for(i=0;i<StudentsNumber;i++){
printf("%s: %f\n", info4[i].name, info4[i].exam-10.0*(double)info4[i].absence);
}
/* 構造体Students型配列info4の各要素の総合点を標準出力の終わり */
return 0;
}
|
struct.cの構造体struct Students
のデータメンバを2つ以上増やして、
それらのメンバをscanf入力するプログラムを追加して、
実行確認してください。
| struct_add2member.c |
|---|
#include<stdio.h>
/* 構造体Students型の定義の始まり */
struct Students{
char *name;
double exam;
double exam2;
double report;
int absence;
};
/* 構造体Students型の定義の終わり */
int main(void){
int StudentsNumber=3, i;
/* 構造体Students型を3個要素に持つ配列info4の宣言↓ */
struct Students info4[3];
/* 構造体Students型配列info4の各要素のメンバnameに代入の始まり */
info4[0].name="Meg Ryan";
info4[1].name="Julia Roberts";
info4[2].name="Gwyneth Partrow";
/* 構造体Students型配列info4の各要素のメンバnameに代入の終わり */
/* 構造体Students型配列info4の各要素のメンバexamに標準入力の始まり */
for(i=0;i<StudentsNumber;i++){
printf("Input the Mid-Term Examination Points(double) for %s\n",
info4[i].name);
scanf("%lf", &(info4[i].exam));
}
/* 構造体Students型配列info4の各要素のメンバexamに標準入力の終わり */
/* 構造体Students型配列info4の各要素のメンバexam2に標準入力の始まり */
for(i=0;i<StudentsNumber;i++){
printf("Input the Final Examination Points(double) for %s\n",
info4[i].name);
scanf("%lf", &(info4[i].exam2));
}
/* 構造体Students型配列info4の各要素のメンバexam2に標準入力の終わり */
/* 構造体Students型配列info4の各要素のメンバreportに標準入力の始まり */
for(i=0;i<StudentsNumber;i++){
printf("Input the Report Points(double) for %s\n",
info4[i].name);
scanf("%lf", &(info4[i].report));
}
/* 構造体Students型配列info4の各要素のメンバexam2に標準入力の終わり */
/* 構造体Students型配列info4の各要素のメンバabsenceに標準入力の始まり */
for(i=0;i<StudentsNumber;i++){
printf("Input the Absence Times(int) for %s\n", info4[i].name);
scanf("%d", &(info4[i].absence));
}
/* 構造体Students型配列info4の各要素のメンバabsenceに標準入力の終わり */
/* 構造体Students型配列info4の各要素の総合点を標準出力の始まり */
printf("Total Points are:\n");
for(i=0;i<StudentsNumber;i++){
printf("%s: %f\n", info4[i].name, 0.4*info4[i].exam+0.4*info4[i].exam2+0.2*info4[i].report-10.0*(double)info4[i].absence);
}
/* 構造体Students型配列info4の各要素の総合点を標準出力の終わり */
return 0;
}
|
scanf入力して画面出力するプログラムを作成してください。
ただし、プログラム実行時にメーカ、型番の入力については14文字以内に抑えてください。)
| struct_pencil.c |
|---|
#include<stdio.h>
/* 構造体Students型の定義の始まり */
struct Pencil{
char Brand[16], Type[16];
double Price;
int Hardness;
};
/* 構造体Students型の定義の終わり */
int main(void){
int PencilNumber=3, i;
/* 構造体Students型を3個要素に持つ配列info4の宣言↓ */
struct Pencil in_myshop[3];
/* 構造体Pencil型配列in_myshopの各要素の各メンバに標準入力の始まり */
for(i=0;i<PencilNumber;i++){
/***↓本当はfgets関数を用いた方が良い***/
printf("Brand:");
scanf("%s", in_myshop[i].Brand);
printf("Type:");
scanf("%s", in_myshop[i].Type);
printf("Price:");
scanf("%lf", &(in_myshop[i].Price));
printf("Hardness:");
scanf("%d", &(in_myshop[i].Hardness));
}
/* 構造体Pencil型配列in_myshopの各要素の各メンバに標準入力の終り */
/* 構造体Pencil型配列in_myshopの各要素の各メンバに標準出力の始まり */
for(i=0;i<PencilNumber;i++){
printf("Brand:%sType:%sPrice:%f\tHardness:%d\n",
in_myshop[i].Brand,
in_myshop[i].Type,
in_myshop[i].Price,
in_myshop[i].Hardness);
}
return 0;
}
|