主に入力と出力、キーボード入力(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;
}
コメント