ページ 11

scanf関数・forとif文の組み合わせ

Posted: 2020年6月20日(土) 00:45
by みみ
大学の課題です。c言語はまだ初めて間もないです。
教えて頂けるととても助かります!!

[課題]
キーボードから西暦年を入力して、昭和あるいは平成何年か表示する。生年を3人分続けて計算するものとする。その際、scanf関数、for文とif文の組み合わせる。西暦1926年(昭和1年)から2018年(平成30年)までを範囲とします。

コード:

#include <stdio.h>
int main(void){
    int seireki, syouwa, heisei;
    
    scanf("%d", &seireki);
    printf("西暦は%d年\n", seireki);
    
    if(seireki >= 1988){
        for(seireki = 1988; seireki <= 2018; seireki++){
        heisei = seireki - 1988;
        printf("平成%2d年\n", heisei);
        }
    } else {
        for(seireki = 1926; seireki <= 1987; seireki++){
        syouwa = seireki - 1925;
        printf("平成%2d年\n", syouwa);
        }
    }
}
上が自力で作れた範囲です。
ですが、一人分しか表示できず、ループされてしまっています。
ヒントでもいいので、教えて頂けると幸いです。

Re: scanf関数・forとif文の組み合わせ

Posted: 2020年6月20日(土) 01:12
by みけCAT

コード:

#include <stdio.h>
int main(void) {
    for (3人分) {
        キーボードからの西暦年の入力を受け取る

        昭和あるいは平成何年か表示する
    }
}
のような感じで処理するといいでしょう。

また、ループを書いているのでループされます。
せっかくseirekiに入力を読み込んでいるのに、for文のループ変数にしてぶち壊してはいけません。
今あるfor文は両方とも消しましょう。

さらに、昭和のはずの時も「平成」と出力してしまっているので、そこも修正するべきですね。

Re: scanf関数・forとif文の組み合わせ

Posted: 2020年6月20日(土) 17:59
by みみ
分かりやすく教えて頂き、ありがとうございました。
とても助かりました!