条件式 - if -

課題1

下記のプログラムをif1.cとして書き、様々な数値で試して正しく 実行されることを確認せよ。

#include <stdio.h>

int main(void) {

    int x;

    printf("数字を1つ入力してください ");
    scanf("%d", &x);

    if (x > 0){ 
        printf("正です\n");
    } else if (x < 0){
        printf("負です\n");
    } else {
        printf("0です\n");
    }

    return 0;
}
(実行結果)
% ./a.out
数字を1つ入力してください -9
負です
%
% ./a.out
数字を1つ入力してください 8
正です
%
% ./a.out
数字を1つ入力してください 0
0です

課題2

入力された2つの数字の大小を比較するプログラムが下記に示されているが、 一部分が******で隠されている。隠された部分を補って、 下記のプログラムをif2.cとして書き、様々な数値で試して正しく 実行されることを確認せよ。

#include <stdio.h>

int main(void) {

    int a, b;

    printf("データを2つ入力してください ");
    scanf("%d%d", &a,&b);

    if (*********) {
    	printf("%dが%dより大きい。\n", a, b);
    } else if (*********) {
    	printf("%dが%dより大きい。\n", b, a);
    } else {
    	printf("どちらも同じ。\n");
    }

    return 0;
}
(実行結果)
% ./a.out
データを2つ入力してください 10 20
20が10より大きい。
%
% ./a.out
データを2つ入力してください 30 10
30が10より大きい。
%
% ./a.out
データを2つ入力してください 15 15
どちらも同じ。

課題3

入力された誕生月により表示させるメッセージを変える 下記のプログラムを、*****で隠された部分を補って if3.cとして書き、様々な数値で試して正しく実行されることを確認せよ。

ちなみに、春夏秋冬の区分は下記の通りとする。

3, 4, 5月
6, 7, 8月
9, 10, 11月
12, 1, 2月
#include <stdio.h>

int main(void) {

    int a;

    printf("あなたの誕生月を入力してください ");
    scanf("%d", &a);

    if (************************) {
    	printf("誕生月は春ですね。\n");
    } else if (************************) {
    	printf("誕生月は夏ですね。\n");
    } else if (************************) {
    	printf("誕生月は秋ですね。\n");
    } else if (************************) {
    	printf("誕生月は冬ですね。\n");
    } else {
    	printf("入力されたのは1から12までの数字ではありません。\n");
    }

    return 0;
}
(実行結果)
% ./a.out
あなたの誕生月を入力してください 12
誕生月は冬ですね。
%
% ./a.out
あなたの誕生月を入力してください 8
誕生月は夏ですね。
%
% ./a.out
あなたの誕生月を入力してください 13
入力されたのは1から12までの数字ではありません。

課題4

入力された点数により成績を表示させるプログラムを if4.cとして書き、様々な数値で試して正しく実行されることを確認せよ。 その際に、下記の実行結果を参考にせよ。 点数と成績との関係は下記の表の通りである。

点数の範囲 成績
80点以上100点以下 A
70点以上80点未満 B
60点以上70点未満 C
0点以上60点未満 D
上記以外の数字 判定不能
(実行結果)
% ./a.out
テストの点数を入力してください。92
あなたの成績はAです。
%
% ./a.out
テストの点数を入力してください。59
あなたの成績はDです。
%
% ./a.out
テストの点数を入力してください。130
判定不能です。

課題5

入力された金額に応じて割引率が異なり、その割引率を考慮した上で、 支払い金額を表示させるプログラムをif5.cとして書き、様々な数値で試して 正しく実行されることを確認せよ。その際に、下記の実行結果を参考にせよ。

金額 割引
5000円以上10000円未満 1割引
10000円以上 2割引
(実行結果)
% ./a.out
金額を入力してください 3000
3000円の支払いです。
%
% ./a.out
金額を入力してください 9999
9999円の1割引きで9000円の支払いです。
%
% ./a.out
金額を入力してください 6000
6000円の1割引きで5400円の支払いです。
%
% ./a.out
金額を入力してください 15000
15000円の2割引きで12000円の支払いです。
%
% ./a.out
金額を入力してください 19999
19999円の2割引きで16000円の支払いです。
%
% ./a.out
金額を入力してください -1000
正しく金額を入力してください。

課題6

入力された数字が2および3で割りきれるかどうかを表示させるプログラムを if6.cとして書き、様々な数値で試して正しく実行されることを確認せよ。 その際に、下記の実行結果を参考にせよ。

(実行結果)
% ./a.out
数字を1つ入力してください 14
14は2では割りきれますが、3では割りきれません。
%
% ./a.out
数字を1つ入力してください 30
30は2でも3でも割りきれます。
%
% ./a.out
数字を1つ入力してください 17
17は2でも3でも割りきれません。
%
% ./a.out
数字を1つ入力してください 15
15は2では割りきれませんが、3では割りきれます。

課題7

var7.cを修正して、入力したアルファベットの次の文字を出力するプログラムを if7.cとして書け。ただし、zの次にはaを表示するものとする。

(実行結果1)
% ./a.out
1文字ローマ字で入力してください b
c

(実行結果2)
% ./a.out
1文字ローマ字で入力してください z
a

課題8

if7.cを修正して、入力したアルファベットを含めた連続する3文 字を出力するプログラムをif8.cとして書け。

(実行結果1)
% ./a.out
1文字ローマ字で入力してください b
bcd

(実行結果2)
% ./a.out
1文字ローマ字で入力してください y
yza

課題9

誕生月と誕生日、今日の月と日を入力させて、今年の誕生日が過ぎたか、まだか、 当日かを判定するプログラムを作りたい。 そのようなプログラムをif9.cとして書け。

(実行結果)
% ./a.out
誕生月と日を入力してください
3 2
今日の月と日を入力してください
2 1
今年の誕生日はまだですね
%
% ./a.out
誕生月と日を入力してください
3 2
今日の月と日を入力してください
3 2
今日は誕生日ですね !
%
% ./a.out
誕生月と日を入力してください
3 2
今日の月と日を入力してください
12 20
今年の誕生日は過ぎましたね。

課題10

上記の課題9を応用して、誕生月と誕生日、今日の月と日を入力させて、 今年度の誕生日が過ぎたか、まだか、 当日かを判定するプログラムを作りたい。 そのようなプログラムをif10.cとして書け。

(実行結果)
% ./a.out
誕生月と日を入力してください
3 2
今日の月と日を入力してください
12 20
今年度の誕生日はまだですね
%
% ./a.out
誕生月と日を入力してください
3 2
今日の月と日を入力してください
3 1
今年度の誕生日はまだですね
%
% ./a.out
誕生月と日を入力してください
12 20
今日の月と日を入力してください
3 2
今年度の誕生日は過ぎましたね。

須ア純一 京都大学大学院 工学研究科社会基盤工学専攻 空間情報学講座
[須ア純一ホームページ] [C言語 演習問題トップページ]