
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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
C言語初心者 構造体 課題について
C言語・C++・C#
-
C言語初心者 ポインタについて、お助けください、、
C言語・C++・C#
-
C言語初心者です、、、お助けください
C言語・C++・C#
-
-
4
再起呼び出しの回数をカウントするプログラム
C言語・C++・C#
-
5
C言語に関する質問です
C言語・C++・C#
-
6
C言語の入力した文字を反転させるプログラミングの仕方が分かりません。
Ruby
-
7
C言語(構造体)
C言語・C++・C#
-
8
プログラミングが分かりません。
C言語・C++・C#
-
9
str系関数を使わずに二つの文字を結合する方法
C言語・C++・C#
-
10
while文について、c言語です。
C言語・C++・C#
-
11
printf で二進表示を行いたい。
C言語・C++・C#
-
12
Run-Time Check Failure #3というエラーが出ます。
C言語・C++・C#
-
13
構造体から平均点を求める方法
C言語・C++・C#
-
14
c言語でポインタ変数を用いた配列の反転操作
C言語・C++・C#
-
15
c言語 構造体
C言語・C++・C#
-
16
アスタリスクで正方形
C言語・C++・C#
-
17
c言語のプログラミングについての質問なのですが、 定価と消費税率(%)を引数として税込価格を返すpr
C言語・C++・C#
-
18
プログラミング言語C
C言語・C++・C#
-
19
c言語 16進数の2進数への変換
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C 開放してるのにエラー(doubl...
-
c言語で、繰り返し文の中で、0....
-
doubleの変数にintとintの割り...
-
float型とdouble型の変数の違い...
-
c言語のコンパイルエラー canno...
-
関数におけるif文とreturn文に...
-
C言語を実行すると-infが出てき...
-
浮動小数点の定数
-
int とdoubleの比較
-
-1.#IND00と出てしまうのですが...
-
型変換のitoaのaって?
-
c言語の問題
-
C言語で-23乗を取り扱うには
-
方程式を2分法を用いて解くプロ...
-
C言語の複素数についてです。
-
fgets()による繰り返し入力(c言語)
-
C言語 関数プロトタイプ宣言の...
-
C言語の型による処理速度の違い
-
線形補間
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
doubleの変数にintとintの割り...
-
C 開放してるのにエラー(doubl...
-
float型とdouble型の変数の違い...
-
C言語を実行すると-infが出てき...
-
関数におけるif文とreturn文に...
-
c言語で、繰り返し文の中で、0....
-
Cで3乗根を求める方法
-
int とdoubleの比較
-
C言語 関数プロトタイプ宣言の...
-
C言語の型による処理速度の違い
-
2次方程式の解を求めるプログ...
-
ax^2+bx+c=0の解を求めたいので...
-
至急です! マクロ定義で #defi...
-
C++で外積
-
線形補間
-
指数形式で入力するには
-
doubleは常に%lfとするべきなのか
-
c言語のコンパイルエラー canno...
-
C言語のpow関数の不具合
おすすめ情報