構造体
Posted: 2006年12月05日(火) 22:51
gstudent構造体を定義し,ユーザからの入力を3人分(fusayoshi,taro, hanako)受付けて,入力後に全員のデータを表示するプログラムを作成せよ.また構造体への値の代入は,struct gstudent set_gstudent();という関数の内部で行い,返り値として値の入った構造体を受け取るようにすること.
#include<stdio.h>
#include<string.h>
struct gstudent{
char name[20];
int height;
float weight;
int math;
long schols;
};
void show_profile(struct gstudent user_prof) {
printf("名前:%s, 身長:%d, 体重:%f, 数学の成績:%d,奨学金:%ld\n", user_prof.name, user_prof.height, user_prof.weight, user_prof.math,user_prof.schols);
}
struct gstudent set_gstudent(char username[/url],int userheight,float userweight,int usermath,long userschols){
struct gstudent temp;
strcpy(temp.name,username);
temp.height=userheight;
temp.weight=userweight;
temp.math=usermath;
temp.schols=userschols;
return temp;
}
int main(void) {
struct gstudent fusayoshi,taro,hanako,user_prof;
printf("fusayoshiのデータを入力してください\n");
printf("Fusayoshi\n");
scanf("%s,%d,%f,%d,%ld",user_prof.name,user_prof.height,user_prof.weight,user_prof.math,user_prof.schols);
printf("taroのデータを入力してください\n");
printf("Taro\n");
scanf("%s,%d,%f,%d,%ld",user_prof.name,user_prof.height,user_prof.weight,user_prof.math,user_prof.schols);
printf("hanakoのデータを入力してください\n");
printf("Hanako\n");
scanf("%s,%d,%f,%d,%ld",user_prof.name,user_prof.height,user_prof.weight,user_prof.math,user_prof.schols);
show_profile(fusayoshi);
show_profile(taro);
show_profile(hanako);
return 0;
}
こんなプログラムを作ったのですが、
実行結果が、
fusayoshiのデータを入力してください
Fusayoshi
172,47.2,56,10000
taroのデータを入力してください
Taro
176,60.0,81,50000
hanakoのデータを入力してください
Hanako
165,48.1,75,30000
名前:n@h 奎須 hi@, 身長:-1073743908, 体重:-1.999742, 数学の成績:134514126,奨学金:1075145064
名前:, 身長:0, 体重:2.139266, 数学の成績:1073826116,奨学金:1073826712
名前:wK@, 身長:1073918700, 体重:2.020582, 数学の成績:0,奨学金:0
こんな事になってしまうんですが、どこが可笑しいか教えてもらえませんでしょうか?お願いします。
#include<stdio.h>
#include<string.h>
struct gstudent{
char name[20];
int height;
float weight;
int math;
long schols;
};
void show_profile(struct gstudent user_prof) {
printf("名前:%s, 身長:%d, 体重:%f, 数学の成績:%d,奨学金:%ld\n", user_prof.name, user_prof.height, user_prof.weight, user_prof.math,user_prof.schols);
}
struct gstudent set_gstudent(char username[/url],int userheight,float userweight,int usermath,long userschols){
struct gstudent temp;
strcpy(temp.name,username);
temp.height=userheight;
temp.weight=userweight;
temp.math=usermath;
temp.schols=userschols;
return temp;
}
int main(void) {
struct gstudent fusayoshi,taro,hanako,user_prof;
printf("fusayoshiのデータを入力してください\n");
printf("Fusayoshi\n");
scanf("%s,%d,%f,%d,%ld",user_prof.name,user_prof.height,user_prof.weight,user_prof.math,user_prof.schols);
printf("taroのデータを入力してください\n");
printf("Taro\n");
scanf("%s,%d,%f,%d,%ld",user_prof.name,user_prof.height,user_prof.weight,user_prof.math,user_prof.schols);
printf("hanakoのデータを入力してください\n");
printf("Hanako\n");
scanf("%s,%d,%f,%d,%ld",user_prof.name,user_prof.height,user_prof.weight,user_prof.math,user_prof.schols);
show_profile(fusayoshi);
show_profile(taro);
show_profile(hanako);
return 0;
}
こんなプログラムを作ったのですが、
実行結果が、
fusayoshiのデータを入力してください
Fusayoshi
172,47.2,56,10000
taroのデータを入力してください
Taro
176,60.0,81,50000
hanakoのデータを入力してください
Hanako
165,48.1,75,30000
名前:n@h 奎須 hi@, 身長:-1073743908, 体重:-1.999742, 数学の成績:134514126,奨学金:1075145064
名前:, 身長:0, 体重:2.139266, 数学の成績:1073826116,奨学金:1073826712
名前:wK@, 身長:1073918700, 体重:2.020582, 数学の成績:0,奨学金:0
こんな事になってしまうんですが、どこが可笑しいか教えてもらえませんでしょうか?お願いします。