if,else,また,かつ,switchなどを勉強しました。
それらを組み合わせて、条件に一致したものを抽出したり、合計値を出したり、○×判定したり、と色々やりました。
ここまでできるようになると、楽しくなってきます。
以下、今日の復習です。
表データから抽出・判定・計算
結果表示
全データ表示
No 名前 血液型 国語 数学
1 渡辺 A 30 24
2 佐藤 B 48 49
3 山田 O 17 32
4 井上 O 41 38
5 田中 A 10 29
A型かB型の人のみ表示
No 名前 血液型 国語 数学
1 渡辺 A 30 24
2 佐藤 B 48 49
5 田中 A 10 29
合計点数が60点以上なら合格
No 名前 血液型 合計 合否
1 渡辺 A 54 ×
2 佐藤 B 97 ○
3 山田 O 49 ×
4 井上 O 79 ○
5 田中 A 39 ×
それぞれの血液型は何人か?
O型の人数は2人
A型の人数は2人
B型の人数は1人
ソース
#include
int main(void){
/* 宣言と初期化 */
int i,j,ans,sumo,suma,sumb;
int no[5]={1,2,3,4,5};
char name[5][20]={"渡辺","佐藤","山田","井上","田中"};
char blood[5]={'A','B','O','O','A'};
int hai[5][2]={30,24,48,49,17,32,41,38,10,29};
/* 全部表示 */
printf("\n全データ表示\n");
printf("%2s %4s %6s %4s %4s\n","No","名前","血液型","国語","数学");
for(i=0;i<=4;i++){
printf("%2d %4s %-6c ",no[i],name[i],blood[i]);
for(j=0;j<=1;j++){
printf("%4d ",hai[i][j]);
}
printf("\n");
}
/* A型かB型の人のみ表示 */
printf("\nA型かB型の人のみ表示\n");
printf("%2s %4s %6s %4s %4s\n","No","名前","血液型","国語","数学");
for(i=0;i<=4;i++){
if(blood[i]=='A'|blood[i]=='B'){
printf("%2d %4s %-6c ",no[i],name[i],blood[i]);
for(j=0;j<=1;j++){
printf("%4d ",hai[i][j]);
}
printf("\n");
}
}
/* 合計点数が60点以上なら合格 */
printf("\n合計点数が60点以上なら合格\n");
printf("%2s %4s %6s %4s %4s\n","No","名前","血液型","合計","合否");
for(i=0;i<=4;i++){
printf("%2d %4s %-6c ",no[i],name[i],blood[i]);
ans=0;
for(j=0;j<=1;j++){
ans=ans+hai[i][j];
}
if(ans>=60)
printf("%-4d ○",ans);
else
printf("%-4d ×",ans);
printf("\n");
}
/* それぞれの血液型は何人か? */
printf("\nそれぞれの血液型は何人か?\n");
sumo=0;
suma=0;
sumb=0;
for(i=0;i<=4;i++){
switch(blood[i]){
case 'O':
sumo=sumo+1;
break;
case 'A':
suma=suma+1;
break;
case 'B':
sumb=sumb+1;
break;
}
}
printf("O型の人数は%d人\n",sumo);
printf("A型の人数は%d人\n",suma);
printf("B型の人数は%d人\n",sumb);
return 0;
}