OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

以前勉強していたのですが、教えてください。

  • 暇なときにでも
  • 質問No.209161
  • 閲覧数40
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 100% (2/2)

今自分でC言語の勉強をしているのですが、解けないプログラムが本に載っていましたので教えてください。

#include<stdio.h>

struct DATE_DATA
{
int yy, mm, dd;
};

void sub1(struct DATE_DATA *data, int i);
void sub2(struct DATE_DATA *data, int i);

void main(void)
{
int i;
struct DATE_DATA data[5];

for(i = 0; i < 5; i++)
{
sub1(&data[i], i);
}
for(i = 0; i < 5; i++)
{
sub2(&data[i], i);
}
}                          
                         
void sub1(struct DATE_DATA *data, int i) /&data[i] ,iの
{                        アドレスを受け取る/
printf("%d回目\n", i + 1);
printf(" year = ");
printf("%d", &data->yy); /構造体ポインタ変数名->メンバ名
printf(" month = ");   なのにdataの前に&が付いている/
printf("%d", &data->mm);
printf(" day = ");
printf("%d", &data->dd);
}

void sub2(struct DATE_DATA *data, int i)
{
printf("%d回目 ", i + 1);
printf("%02d/", data->yy); /dataの前には&が付いていない/
printf("%02d/", data->mm);
printf("%02d\n", data->dd);
}

長くなりまして、すみません。質問がプログラムの中にあることも、すみません。
どうしても分からなくて回答をお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル9

ベストアンサー率 18% (18/98)

現在勉強中という事で,ヒントを

mainの中で,sub1とsub2を呼出していますが,引数の渡し方はどうしていますか?

又,sub1のprintf関数で表示されるのは何ですか?
sub2の表示内容は判りますよね?
補足コメント
hirami

お礼率 100% (2/2)

すみません!間違え箇所がありました。
#include<stdio.h>

struct DATE_DATA
{
int yy, mm, dd;
};

void sub1(struct DATE_DATA *data, int i);
void sub2(struct DATE_DATA *data, int i);

void main(void)
{
int i;
struct DATE_DATA data[5];

for(i = 0; i < 5; i++)
{
sub1(&data[i], i);
}
for(i = 0; i < 5; i++)
{
sub2(&data[i], i);
}                           
                         
void sub1(struct DATE_DATA *data, int i) /&data[i] ,iの
{                        アドレスを受け取る/
printf("%d回目\n", i + 1);
printf(" year = ");
scanf("%d", &data->yy); /構造体ポインタ変数名->メンバ名
printf(" month = ");   なのにdataの前に&が付いている/
scanf("%d", &data->mm);
printf(" day = ");
scanf("%d", &data->dd);
}

void sub2(struct DATE_DATA *data, int i)
{
printf("%d回目 ", i + 1);
printf("%02d/", data->yy); /dataの前には&が付いていない/
printf("%02d/", data->mm);
printf("%02d\n", data->dd);
}

sub1の部分を全てprintfにしていましたが、悩んでいたのはscanfの部分でした。
回答をおねがいします。間違えていてすみませんでした。
投稿日時 - 2002-01-31 20:41:03
お礼コメント
hirami

お礼率 100% (2/2)

ヒントをいただき冷静に考えてみると、sub2を理解することができました。scanfはhitomuraさんに教えていただいたHPを見たり、本を片っ端から取り出して内容を把握することができそうです。本当にありがとうございました。今後も宜しくお願いします。
投稿日時 - 2002-02-01 00:53:39
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル12

ベストアンサー率 48% (325/664)

(No.1のyo-kan-62さんの回答を見て)…そーか、勉強中ですよね。 では、関連サイトを挙げるだけにします。 scanf()の解説: http://www.microsoft.com/japan/developer/library/vccore/_crt_scanf.2c_.wscanf.htm 演算子の優先順位: http://www.microsoft.com/japan/de ...続きを読む
(No.1のyo-kan-62さんの回答を見て)…そーか、勉強中ですよね。
では、関連サイトを挙げるだけにします。

scanf()の解説:
http://www.microsoft.com/japan/developer/library/vccore/_crt_scanf.2c_.wscanf.htm

演算子の優先順位:
http://www.microsoft.com/japan/developer/library/vclang/_clang_precedence_and_order_of_evaluation.htm
お礼コメント
hirami

お礼率 100% (2/2)

ありがとうございます。早速HPを見て、参考にします。
また質問を載せると思いますので、宜しくお願いします。
投稿日時 - 2002-02-01 00:40:57


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ