C言語:プログラム作成問題 Lv.2

challenge_C言語logo C言語プログラミングにチャレンジ

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

コメント

タイトルとURLをコピーしました