4章 制御の流れ-1 if else 文 if (条件式) 文a; else 文b; 文が1つでもこちらの形式がお薦め if (条件式) { 文a-1; 文a-2; } else { 文b-1; 文b-2; } 条件式 • 関係演算子 == 等しい != 等しくない >= <= > < • 論理演算子 && || ! AND OR NOT 条件式は0(偽)または 1(真)のint型の値を返す。 正の値を返す式は真と見なさ れる。 /* 66666 tachibana masayoshi */ /* p104 list 4.1 */ #include "stdafx.h" int main(void) { int Taro,Hanako,Jiro; Tara = 20; Hanako = 50; Jiro = 10; if if if if (Taro == 20) printf("太郎は20歳ですね\n"); (Hanako != 20) printf("花子は20歳ではありません\n"); (Hanako >= 20) printf("花子は20歳以上です\n"); (Jiro < 20) printf("次郎は20歳未満ですね\n"); if (Taro > Jiro) printf("太郎は次郎より年上です\n"); if (Hanako > Taro) printf("花子は太郎より年上です\n"); } return 0; 論理演算子(AND) A && B A B 結果 偽 偽 偽 偽 真 偽 真 偽 偽 真 真 真 A B 結果 0 0 0 0 1 0 1 0 0 1 1 1 論理演算子 (OR) A || B A B 結果 偽 偽 偽 偽 真 真 真 偽 真 真 真 真 A B 結果 0 0 0 0 1 1 1 0 1 1 1 1 論理演算子(OR) A || B A B 結果 偽 偽 偽 偽 真 真 注意!! 真 偽 真 真 真 真 A B 結果 0 0 0 0 1 1 注意!! 1 0 1 1 1 1 論理演算子 (NOT) !A A 結果 偽 真 真 偽 A 結果 0 1 1 0 論理演算子の優先順位 高い 低い ! > && > || 間違いやすいので注意 !A && B || A && !B ((!A) && B) || (A && (!B)) 同じ値 /* p110 list 4.3 */ #include "stdafx.h" int main(void) { int x,y; char c1,c2,c3; printf("数値2つと文字を3文字を入力してください(x y c1 c2 c3) >>>\n"); scanf_s("%d %d %c %c %c",&x, &y, &c1, &c2, &c3); printf("入力値:x=%d y=%d c1=%c c2=%c c3=%c\n",x,y,c1,c2,c3); if (x>=0 && x<=100) printf("xは0以上100以下です\n"); if (y<=0 || y>=100) printf("yは0以下かまたは100以上です\n"); if (c1>='0' && c1<='9') printf("c1は数字\n"); if (c2>='A' && c2<='Z') printf("c2は英大文字\n"); if (c3=='Y' || c3=='y') printf("c3はYまたはy\n"); printf("xの値は%dです\n",x); printf("yの値は%dです\n",y); printf("c1 コードは10進数で%d 16進数で%xです\n",c1,c1); printf("c2 コードは10進数で%d 16進数で%xです\n",c2,c2); printf("c3 コードは10進数で%d 16進数で%xです\n",c3,c3); } return 0; 3つ以上の数値の比較 int x=10,y=20,z=30; if (z>=y>=x) printf("A\n"); else printf("B\n"); 出力されるのは A か B か? 3つ以上の数値の比較 int x=10,y=20,z=30; if (z>=y>=x) printf("A\n"); else printf("B\n"); 答えはB 3つ以上の数値の比較 x=10,y=20,z=30 z>=y>=x (z>=y)>=x → (30>=20)>=10 → 1>=10 → 0 答えはB 3つ以上の数値の比較 int x=10,y=20,z=30; if (z>=y && y>=x) printf("A\n"); else printf("B\n"); この場合はAが出力される 3つ以上の数値の比較 かならず z>=y のように書くこと! && y>=x x==y==zも同じ理由で x==y && y==z と書く 3つ以上の数値の比較 おなじ理由で a == 1 || 2 || 3 も a == 1 || a == 2 || a == 3 と書く if else 文 if (条件式) 文a; else 文b; 文が1つでもこちらの形式がお薦め if (条件式) { 文a-1; 文a-2; } else { 文b-1; 文b-2; } 複文 { { 文1; 文2; { 文3; 文4; } 文1; 文2; 文N; } } ネストした複文 if-elseの使い方 Start aを入力 a<0 No a == 1 No a == 2 Yes Yes Yes scanf("%d",&a); smallと出力 oneと出力 twoと出力 if (a<0) printf("small\n"); else if (a==1) printf("one\n"); else if (a==2) printf("two\n"); else printf("big\n"); No bigと出力 End /* p116 list 4.4 */ #include "stdafx.h" int main(void) { int a; printf("入力データは?>>>\n"); scanf_s("%d", &a); } printf("データは"); if (a %2 == 0) { printf("偶数"); } else { printf("奇数"); } printf("です\n"); return 0; 真 偶数 a%2==0 偽 奇数 switch文(1) switch (式) { case 定数式1: 文1; break; case 定数式2: 文2; break; default : 文n; break; } breakが無いと、突き抜ける。 式 1 式==定数式1 yes 文1 no yes 式==定数式2 文2 no default 文n caseのうしろには定数式しか書けない。 /* p118 list 4.5 */ #include "stdafx.h" int main(void) { int rank; printf("あなたの順位は?>>>\n"); scanf_s("%d", &rank); } switch(rank) { case 1: printf("優勝したあなたには、海外旅行です。\n"); break; case 2: printf("2位のあなたには、国内旅行です。\n"); break; case 3: printf("3位のあなたには、ホテルの食事券です。\n"); break; default: printf("タオルをどうぞ。\n"); break; } return 0; switch文(2) switch (式) { case 定数式1: 文1; case 定数式2: 文2; default : 文n; break; } 式 式==定数式1 1 yes 文1 no 式==定数式2 default breakが無いと、突き抜ける。 文2 no 文n yes /* p121 list 4.6 */ #include "stdafx.h" int main(void) { char c; printf("あなたの順位は?>>>\n"); scanf_s("%c", &c); switch(rank) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9' : printf("入力文字は数字の%cです。\n",c); break; default: printf("入力文字は数字ではありません。\n"); break; } return 0; } 多岐条件文 if (条件式1) 文1; else if (条件式2) 文2; else if (条件式3) else if (条件式n) 文n; else 文m; 数学関数(1) sin(x) asin(x) cos(x) acos(x) tan(x) atan(x) atan2(x,y) exp(x) log(x) log10(x) pow(x,y) sqrt(x) fabs(x) ceil(x) floor(x) fmod(x) 各関数の説明はP127 数学関数(2) VC++では必要 2行続けて書く • #define _USE_MATH_DEFINES #include <math.h>が必要 • double型 • 角度はradian – radian = degree*π/180.0 • パラメータ、結果の型、値の範囲に注意 数学定数 • 定数(よく使われるもの) π M_PI 1/π M_1_PI e M_E const double pi=M_PI; • 3.141592653589793のように値を 打ち込むのはやめた方がいい VC++と教科書の違い • #include "stdafx.h" • #include <stdio.h> • scanf_s ( ) • scanf ( ) • #define _USE_MATH_DEFINES #include <math.h> • #include <math.h>
© Copyright 2024 Paperzz