上記のYoutube動画でデモとして紹介されていた、
構造体を利用して、ユーザー情報(クラス・出席番号・名前)と、5教科の合計値を画面に表示するプログラムです。動画の説明通り書いたコードを書いたつもりですが、下記2つの問題が解決できずにいます。ご教示いただけたら幸いです。
1.名前の最後に"P"が付与される。※例:名前をtanakaにしたらtanaka"P"と出力される
2.各科目の点数に何の数字を入れても、5教科の合計値が「-858993060」と出る
OS:Windows10
開発環境:Visual C++ 2010 Express
#include<stdio.h>
char getHyouka(int);//関数プロトタイプの宣言
char* getKamoku(int);//関数プロトタイプの宣言
struct seiseki {//成績を表示する構造体
char cls;//クラス名(文字)
int no;//出席番号
char *name;//名前
int tokuten[6];//国語、数学、理科、社会、英語、合計を格納
char rank;//評価 400点以上 A 300点以上 B 200点以上 C100点以上 D 100点未満 E
};
int main(int argc, const char * argv[])
{
struct seiseki takepon;
printf("クラスを入力して下さい\t");
scanf("%c",&takepon.cls);
printf("出席番号を入力して下さい\t");
scanf("%d",&takepon.no);
printf("名前を入力して下さい\t");
scanf("%s",&takepon.name);
for(int i=0;i<5;i++){
char *kamoku=getKamoku(i);
printf("%sの点数を入力して下さい\t",kamoku);
scanf("%d",&takepon.tokuten[i]);
takepon.tokuten[5]+=takepon.tokuten[i];
}
printf("クラス:%c\t出席番号:%d\t名前:%s\n",takepon.cls,takepon.no,&takepon.name);
for(int i=0;i<5;i++){
char *kamoku=getKamoku(i);
printf("%s:%d\t",kamoku,takepon.tokuten[i]);
}
printf("合計:%d\t",takepon.tokuten[5]);
printf("評価:%c\n",getHyouka(takepon.tokuten[5]));
return 0;
}
//科目名を返す関数
char* getKamoku(int i){
char *kamoku;
switch(i){
case 0:
kamoku="国語";
break;
case 1:
kamoku="数学";
break;
case 2:
kamoku="理科";
break;
case 3:
kamoku="社会";
break;
case 4:
kamoku="英語";
break;
default:
break;
}
return kamoku;
}
//評価を返す関数
char getHyouka(int tokuten){
char rank;
if(tokuten >= 400){
rank ='A';
}else if(tokuten >= 300){
rank ='B';
}else if(tokuten >= 200){
rank ='C';
}else if(tokuten >= 100){
rank ='D';
}else{
rank ='E';
}
return rank;
}