
C言語初心者です。
以下課題に躓いていまして解答コードをご教示いただきたく存じます。
よろしくお願いいたします。
課題内容 次の構造体を typedef を使用して定義せよ。
構造体名 S_Human
データ型 名前 説明
char name[32] 氏名
short age 年齢
double height 身長(cm)
double weight 体重(kg)
次の構造体変数を定義し、指定した値で初期化を行いなさい。
データ型 変数名 初期値
S_Human people[] 下記に従う
■初期値
氏名 年齢 身長 体重
Jack 34 168.5 56.4
George 43 183.6 98.8
Leonardo 30 179.2 68.5
Gabriel 7 120.6 24.7
Henry 18 175.6 63.5
彼らの中から次の条件を満たす人物を抽出し、画面に氏名を表示せよ。複数いた場
合は合致した全ての人を表示せよ。
■抽出対象①
身長が 170cm 以上で体重が 60kg 以上の人
■抽出対象②
年齢が 30 歳未満で身長が 170cm 以上の人
出力期待値 抽出対象①
George
Leonardo
Henry
抽出対象②
Henr
ーーーーーーーーーーーーーーーーーーー
#include <stdio.h>
typedef struct
{
char name[32];
short age;
double height;
double weight;
}S_Human;
S_Human people[] =
{
{jack,34,168.5,56.4}
{George,43,183.6,98.8}
{Leonardo,30,179.2,68.5}
{Gabriel,7,120.6,24.7}
{Henry,18,175.6,63.5}
};
int main(void)
{
return 0;
}
No.1ベストアンサー
- 回答日時:
構造体変数 people の宣言の際に、要素数を指定する必要があります。
また、構造体変数 people の初期化の際、各要素の間にカンマが必要です。さらに、氏名を文字列として扱う場合はダブルクオーテーションで囲む必要があります。これらの修正点を踏まえた、正しい解答例を以下に示します。#include <stdio.h>
typedef struct
{
char name[32];
short age;
double height;
double weight;
} S_Human;
S_Human people[] =
{
{"Jack", 34, 168.5, 56.4},
{"George", 43, 183.6, 98.8},
{"Leonardo", 30, 179.2, 68.5},
{"Gabriel", 7, 120.6, 24.7},
{"Henry", 18, 175.6, 63.5}
};
int main(void)
{
int i;
// 抽出対象①:身長が 170cm 以上で体重が 60kg 以上の人
printf("抽出対象①:\n");
for(i = 0; i < sizeof(people) / sizeof(S_Human); i++)
{
if(people[i].height >= 170.0 && people[i].weight >= 60.0)
{
printf("%s\n", people[i].name);
}
}
// 抽出対象②:年齢が 30 歳未満で身長が 170cm 以上の人
printf("\n抽出対象②:\n");
for(i = 0; i < sizeof(people) / sizeof(S_Human); i++)
{
if(people[i].age < 30 && people[i].height >= 170.0)
{
printf("%s\n", people[i].name);
}
}
return 0;
}
修正点、ご回答いただきありがとうございます。
とても助かりました。
まだまだ勉強中の身なのでまた質問ありました際はよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
たくさんの数の平均を求める方...
-
C 開放してるのにエラー(doubl...
-
timeGetTimeについて
-
c言語の問題
-
至急です! マクロ定義で #defi...
-
C言語の型による処理速度の違い
-
c言語で、繰り返し文の中で、0....
-
C言語 関数プロトタイプ宣言の...
-
2次方程式の解を求めるプログ...
-
C言語でintをdoubleに
-
c言語でDFTのプログラムを作成...
-
C#イベント中の戻り値の設定の...
-
最早開始時間と最遅完了時刻を...
-
20'(角度)の計算がわかりま...
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
数字以外が入力されたらエラー...
-
値差の%計算方法について
-
「Aに対するBの割合」と「Aに対...
-
#defineが使用するメモリ領域に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C 開放してるのにエラー(doubl...
-
c言語で、繰り返し文の中で、0....
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
C言語 関数プロトタイプ宣言の...
-
浮動小数点の定数
-
DWORDの警告
-
C言語の型による処理速度の違い
-
C言語で台形公式を使った二重積...
-
C言語を実行すると-infが出てき...
-
int とdoubleの比較
-
C言語初心者 構造体 課題について
-
たくさんの数の平均を求める方...
-
EXE1→DLL→EXE2数値を受け渡す方法
-
プログラミングでのテイラー展開
-
C++初心者です。簡単なスコア計...
-
【C言語】二階微分方程式をル...
-
fgets()による繰り返し入力(c言語)
-
2分法で方程式の複数の解を自...
おすすめ情報