主に入力と出力、キーボード入力(scanf)、条件分岐(if文)等を憶えた方向けのC言語プログラム作成問題です。
解答例も全て添付しています。自主学習、授業用にご利用ください。
2つの数を入力させて合計を求める
キーボードから2つの数(整数)を入力させて合計を表示させる。
ファイル名: tasizan.c
実行イメージ
2つの数の合計を求めます 数1? 100 [Enter] 数2? 200[Enter] 合計は 300 です
#include <stdio.h> int main(void) { int x, y; printf("2つの数の合計を求めます\n"); printf("数1? "); scanf("%d", &x); printf("数2? "); scanf("%d", &y); printf("合計は %d です\n", x+y); return 0; }
2つの数の大きい方を表示する
2つの数(整数)をキーボードから入力させて大きい方の値を表示する。(入力された数が同じ場合はどちらを表示しても良い)
ファイル名: max2.c
実行イメージ
数1? 99 [Enter] 数2? 100[Enter] 大きい数: 100
#include <stdio.h> int main(void) { int x, y; printf("数1? "); scanf("%d", &x); printf("数2? "); scanf("%d", &y); if(x > y){ printf("大きい数: %d\n", x); } else{ printf("大きい数: %d\n", y); } return 0; }
3つの数の一番大きい数を求める
3つの数(整数)をキーボードから入力させ一番大きい数を表示する。
但し、3つの数が全て同じ場合は「すべて同じです」と表示させる。
ファイル名: max3.c
実行イメージ
数1? 10 [Enter] 数2? 50[Enter] 数3? 100 [Enter] 大きい数: 100
数1? 99 [Enter] 数2? 100 [Enter] 数3? 99[Enter] 大きい数: 100
数1? 100[Enter] 数2? 100 [Enter] 数3? 99[Enter] 大きい数: 100
数1? 99[Enter] 数2? 99[Enter] 数3? 99 [Enter] すべて同じ
#include <stdio.h> int main(void) { int x, y, z; printf("数1? "); scanf("%d", &x); printf("数2? "); scanf("%d", &y); printf("数3? "); scanf("%d", &z); if(x > y){ /* xを基準に判定 */ if(x > z){ printf("大きい数: %d\n", x); /* xが最大 */ } } else if(y > x){ /* yを基準に判定 */ if(y > z){ printf("大きい数: %d\n", y); /* yが最大 */ } else{ printf("大きい数: %d\n", z); /* zが最大 */ } } else if(z > x){ /* この時点でxとyが同じ数だと考えられる */ printf("大きい数: %d\n", z); /* zが最大 */ } else if(z < x){ /* xとyの方がzより大きい */ printf("大きい数: %d\n", x); } else{ printf("すべて同じ\n"); /* 3つとも同じ */ } return 0; }
金額が3000円以上だと2割引きにするプログラム
ファイル名: waribiki.c
条件
・キーボードから単価と個数を入力する
・金額(単価×個数)を計算し表示する。ただし3000円以上なら「2割引きになります」と表示してから金額を表示する
実行イメージ
金額が3000円未満
単価? 500 [Enter] 個数? 5 [Enter] 金額は \2500です
金額が3000円以上
単価? 500 [Enter] 個数? 6 [Enter] 2割引きになります。 金額は \2400です
#include <stdio.h> int main(void) { int tanka, kosu, kingaku; /* 単価、個数、金額 */ printf("単価? "); scanf("%d", &tanka); printf("個数? "); scanf("%d", &kosu); kingaku = tanka * kosu; /* 金額を計算する */ if(kingaku >= 3000){ /* 3000円以上の場合 */ printf("2割引きになります。\n"); kingaku *= 0.8; /* 2割引きの計算 */ } printf("\n金額は \\%dです\n", kingaku); return 0; }
16進数の10進数値を答えさせるゲーム
ファイル名: question16to10.c
例)0xF(16進数のF)なら15と解答すれば正解
条件
・16進数は1問ずつ全3問出題される
・表示された16進数の10進数に直した値をキーボードから解答させる
・解答後「正解!」、「不正解」のメッセージを表示する
・全3問が終了すると正解数に応じたメッセージを表示する
3問正解 「超凄いじゃん!」
2問正解 「やるね!」
1問正解 「まあまあかな」
0問正解 「ごめん。俺が悪かった」
実行イメージ
16進数を10進数に直してね 1問目 0xA --> 10 正解! 2問目 0x12 --> 14 不正解 3問目 0xFF --> 255 正解! やるね!
/* 16進数の10進数値を答えさせるゲーム(解答例1) */ #include <stdio.h> int main(void) { int mondai[] = {0xA, 0x12, 0xFF}; /* 問題 */ int points = 0; /* 正解数 */ int kaitou; /* 解答入力 */ int i; /* 問題表示 */ printf("16進数を10進数に直してね\n"); for(i=0; i<3; i++){ printf("\n%d問目\n", i+1); printf("\t0x%X --> ", mondai[i]); /* 16進数で出力 */ scanf("%d", &kaitou); /* 10進数で入力 */ /* 正誤判断 */ if(kaitou == mondai[i]){ printf("正解!\n"); points++; /* 正解した数をカウント */ } else{ printf("不正解\n"); } } /* 正解数によりメッセージを変える */ if(points == 3) printf("超凄いじゃん!\n"); else if(points == 2) printf("やるね!\n"); else if(points == 1) printf("まあまあかな\n"); else printf("ごめん。俺が悪かった\n"); return 0; }
/* 16進数の10進数値を答えさせるゲーム(解答例2) */ #include <stdio.h> int main(void) { int mondai1 = 0xA, mondai2 = 0x12, mondai3 = 0xFF; /* 問題 */ int points = 0; /* 正解数 */ int kaitou; /* 解答入力 */ /* 1問目 */ printf("16進数を10進数に直してね\n"); printf("\n1問目\n"); printf("\t0x%X --> ", mondai1); /* 16進数で出力 */ scanf("%d", &kaitou); /* 10進数で入力 */ /* 正誤判断 */ if(kaitou == mondai1){ printf("正解!\n"); points++; /* 正解した数をカウント */ } else{ printf("不正解\n"); } /* 2問目 */ printf("\n2問目\n"); printf("\t0x%X --> ", mondai2); /* 16進数で出力 */ scanf("%d", &kaitou); /* 10進数で入力 */ /* 正誤判断 */ if(kaitou == mondai2){ printf("正解!\n"); points++; /* 正解した数をカウント */ } else{ printf("不正解\n"); } /* 3問目 */ printf("\n3問目\n"); printf("\t0x%X --> ", mondai3); /* 16進数で出力 */ scanf("%d", &kaitou); /* 10進数で入力 */ /* 正誤判断 */ if(kaitou == mondai3){ printf("正解!\n"); points++; /* 正解した数をカウント */ } else{ printf("不正解\n"); } /* 正解数によりメッセージを変える */ if(points == 3) printf("超凄いじゃん!\n"); else if(points == 2) printf("やるね!\n"); else if(points == 1) printf("まあまあかな\n"); else printf("ごめん。俺が悪かった\n"); return 0; }
/* 16進数の10進数値を答えさせるゲーム(解答例3) */ #include <stdio.h> int main(void) { int points = 0; /* 正解数 */ int kaitou; /* 解答入力 */ /* 1問目 */ printf("16進数を10進数に直してね\n"); printf("\n1問目\n"); printf("\t0xA --> "); scanf("%d", &kaitou); /* 正誤判断 */ if(kaitou == 10){ printf("正解!\n"); points++; /* 正解した数をカウント */ } else{ printf("不正解\n"); } /* 2問目 */ printf("\n2問目\n"); printf("\t0x12 --> "); scanf("%d", &kaitou); /* 正誤判断 */ if(kaitou == 18){ printf("正解!\n"); points++; /* 正解した数をカウント */ } else{ printf("不正解\n"); } /* 3問目 */ printf("\n3問目\n"); printf("\t0xFF --> "); scanf("%d", &kaitou); /* 正誤判断 */ if(kaitou == 255){ printf("正解!\n"); points++; /* 正解した数をカウント */ } else{ printf("不正解\n"); } /* 正解数によりメッセージを変える */ if(points == 3) printf("超凄いじゃん!\n"); else if(points == 2) printf("やるね!\n"); else if(points == 1) printf("まあまあかな\n"); else printf("ごめん。俺が悪かった\n"); return 0; }
コメント