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文字入力してください。
続行するには何かキーを押してください . . .
- モード選択を入力して、Enterキーを押下した場合、内部バッファには
\n
が蓄えられている。
- 文字入力の関数が呼ばれた時に勝手に
\n
が入力されたと判断してしまう。
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
終了です。
続行するには何かキーを押してください . . .
choise
が\n
でなくなるまでgetchar()
関数を呼んでいる。
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
続行するには何かキーを押してください . . .