NekoC

猫でもわかるC言語の個人的なまとめ資料

View on GitHub

05_制御文

if文

構文


if (条件) {
	文1;
	文2;
	...
}

scanf関数


int scanf(
		const char *format [,argument]...
		);

/* 下記のように使用すること*/

/*数値型 変数;
scanf("変換指定子", &変数);*/

int n;
scanf("%d",&n)

scanf関数の変換指定子

変換指定子 入力
%c 文字入力
%d 10進整数
%f float型浮動小数点数
%lf double型浮動小数点数
%s 文字列
%p ポインタ
%o 8進入力
%x 16進入力
%u 符号なし10進整数

if文とscanf関数を用いた判定プログラム

コード


/*---------------------------------
年齢により入場料が異なるテーマパークの料金を表示するプログラム

  1. 年齢を尋ねる。
  2. 6最未満なら無料
  2. 6最以上なら1000円
---------------------------------*/

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int age;

	printf("この度は「猫でもランド」に\n"
		"ご来園ありがとうございます。\n");
	printf("---------------------------\n");
	printf("年齢を入力してください---\n");

	/* scanfによる入力格納処理*/
	scanf_s("%d", &age);

	if (age < 6){
		printf("入場料は無料です。\n");
	} else if(age >= 6) {
		printf("入場料は1000円です。");
	}
	else {
		printf("不正な入力です。");
	}
	printf("---------------------------\n");
	printf("では、ごゆっくりお楽しみください。\n");

	system("pause");
	return 0;
}

出力結果


この度は「猫でもランド」に
ご来園ありがとうございます。
---------------------------
年齢を入力してください---
10
入場料は1000円です。
---------------------------
では、ごゆっくりお楽しみください。
続行するには何かキーを押してください . . .

switch文

サンプルコード


#include <stdio.h>
#include <stdlib.h>

void IntMode();
void CharMode();

int main()
{
	int mode;

	printf("モード選択(IntMode: 0 CharMode: 1 Exit: other)");
	scanf_s("%d", &mode);

	/*モード選択*/
	switch (mode) {
	case 0:
		IntMode();
		break;
	case 1:
		CharMode();
		break;
	default:
		printf("プログラムを終了します。\n");
		system("pause");
		return 0;
	}
	return 0;
}

void IntMode(){

	int input;

	printf("------------------------------------\n");
	printf("IntMode\n");
	printf("------------------------------------\n");
	printf("1から5までの整数を入力してください。\n");
	scanf_s("%d", &input);

	switch (input){
	case 1:
		printf("1が入力されました。\n");
		break;
	case 2:
		printf("2を入力しましたね。\n");
		break;
	case 3:
		printf("あなたは3を入力しました。\n");
		break;
	case 4:
		printf("4とは不吉な。\n");
		break;
	case 5:
		printf("5か縁起がいいね。\n");
		break;
	default:
		printf("1から5までの整数を入力してください。\n");
		break;
	}

	system("pause");
}

void CharMode(){

	char input;

	printf("------------------------------------\n");
	printf("CharMode\n");
	printf("------------------------------------\n");
	printf("aからcまでを1文字入力してください。\n");
	scanf_s("%c", &input);

	switch (input){
	case 'a':
		printf("Kiss\n");
		break;
	case 'b':
		printf("bust\n");
		break;
	case 'c':
		printf("fuck\n");
		break;
	default:
	printf("aからcまでを1文字入力してください。\n");
		break;
	}

	system("pause");

}

出力結果1


モード選択(IntMode: 0 CharMode: 1 Exit: other)0
------------------------------------
IntMode
------------------------------------
1から5までの整数を入力してください。
4
4とは不吉な。
続行するには何かキーを押してください . . .

出力結果2


モード選択(IntMode: 0 CharMode: 1 Exit: other)1
------------------------------------
CharMode
------------------------------------
aからcまでを1文字入力してください。
aからcまでを1文字入力してください。
続行するには何かキーを押してください . . .

getchar関数

問題を解決したサンプルコード

サンプルコード

#include <stdio.h>
#include <stdlib.h>

int main(){
	int choise;

	/*終了フラグ*/
	int endFlg = 0;

	while (1){
		printf("********** Menu **********\n");
		printf("A: ゲーム\n");
		printf("B: 音楽\n");
		printf("C: 表計算\n");
		printf("X: 終了\n");
		printf("*************************\n");
		printf("-------> ");

		while (1) {
			choise = getchar();
			if (choise != '\n'){
				break; //whileループを抜ける
			}
		}

			switch (choise){
			case 'A':
			case 'a':
				printf("\n ゲームばかりしないでください\n\n");
				break;
			case 'B':
			case 'b':
				printf("\n 音楽が選択されました。\n\n");
				break;
			case 'C':
			case 'c':
				printf("\n 表計算が選択されました。\n\n");
				break;
			case 'X':
			case 'x':
				endFlg = 1;
				break;
			default:
				printf("不正な入力です。\n\n");
				break;
			}
			if (endFlg == 1){
				break;
			}
		}
		printf("\n 終了です。\n");
		return 0;
}

出力結果


********** Menu **********
A: ゲーム
B: 音楽
C: 表計算
X: 終了
*************************
-------> A

 ゲームばかりしないでください

********** Menu **********
A: ゲーム
B: 音楽
C: 表計算
X: 終了
*************************
-------> X

 終了です。
続行するには何かキーを押してください . . .

for文

サンプルコード


#include <stdio.h>
#include <stdlib.h>

int main(){
	int outer, inner;

	for (outer = 0; outer < 3; outer++){
			printf(" outer: %d\n", outer);
		for (inner = 2; inner < 7; inner += 2){
			printf("\t inner: %d\n", inner);
		}
	}

	system("pause");
	return 0;

}

出力結果


 outer: 0
         inner: 2
         inner: 4
         inner: 6
 outer: 1
         inner: 2
         inner: 4
         inner: 6
 outer: 2
         inner: 2
         inner: 4
         inner: 6
続行するには何かキーを押してください . . .