情報学部 | 菅沼ホーム | 全体目次 | 演習解答例 | 付録 | 索引 |
if (論理式) { 文1(複数の文も可) } else { 文2(複数の文も可) } ・・・・・・
if (論理式1) { ・・・・・・ if (論理式2) { ・・・・・・ } else { ・・・・・・ } ・・・・・・ } else { ・・・・・・ }
01 if (a == b) { 02 max = y; 03 min = z; 04 if (min < 0.0) { 05 min = 0.0; 06 a = b; 07 } 08 } 09 else { 10 max = s; 11 min = g; 12 } 13 x = 9; 14 y = 10;
/******************************/ /* 円周と面積の計算 */ /* coded by Y.Suganuma */ /******************************/ #include <stdio.h> int main() { /* πの値 */ double pi = 3.141593; /* 半径の入力 */ double r; printf("円の半径は? "); scanf("%lf", &r); /* 計算と出力 */ if (r > 0.0) { double enshu = 2.0 * pi * r; double men = pi * r * r; printf("円周=%f 面積=%f\n", enshu, men); } return 0; }
/****************************/ /* 坪と㎡の間の単位変換 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { /* データの入力 */ int sw; printf("変換方向(0:坪→㎡,1:㎡→坪)は? "); scanf("%d", &sw); double x; printf("変換するデータは? "); scanf("%lf", &x); /* 変換と出力 */ if (sw == 0) { /* 坪から㎡ */ double y = 3.3 * x; printf(" xは %f ㎡\n", y); } else { /* ㎡から坪 */ double y = x / 3.3; printf(" xは %f 坪\n", y); } return 0; }
if (論理式1) { if (論理式2) 文1; } else 文2;
if (論理式1) if (論理式2) 文1; else 文2;
if (論理式) { 文1(複数の文も可) } else { 文2(複数の文も可) }
if (論理式1) if (論理式2) 文1; else 文2;
if (a > b && c > a) { amax = c; amin = b; } if (a > b && c < b) { amax = a; amin = c; } ・・・・・
/**************************************/ /* 3つのデータの最大値と最小値の計算 */ /* coded by Y.Suganuma */ /**************************************/ #include <stdio.h> int main() { double a, b, c, amin, amax; /* データの入力 */ printf("3つのデータを入力して下さい "); scanf("%lf %lf %lf", &a, &b, &c); /* a>bの場合 */ if (a > b) { if (c > a) { amax = c; amin = b; } else { amax = a; if (c < b) amin = c; else amin = b; } } /* a≦bの場合 */ else { if (c > b) { amax = c; amin = a; } else { amax = b; if (c < a) amin = c; else amin = a; } } /* 出力 */ printf("最大値=%f 最小値=%f\n", amax, amin); return 0; }
#include <stdio.h> int main() { double a, b, c; /* データの入力 */ printf("3つのデータを入力して下さい "); scanf("%lf %lf %lf", &a, &b, &c); /* 初期設定 */ double amax = a; double amin = a; /* 残りの2つのデータと比較する */ if (b > amax) amax = b; else { if (b < amin) amin = b; } if (c > amax) amax = c; else { if (c < amin) amin = c; } /* 出力 */ printf("最大値=%f 最小値=%f\n", amax, amin); return 0; }
/****************************/ /* データの比較 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { /* データの入力 */ int data; printf("データを入力して下さい "); scanf("%d", &data); /* 判定と出力 */ int x = 10, y = 20, z = 30; if (data == x) printf("xと等しい\n"); else { if (data == y) printf("yと等しい\n"); else { if (data == z) printf("zと等しい\n"); else printf("いずれとも等しくない\n"); } } return 0; }
/****************************/ /* データの比較 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { /* データの入力 */ int data; printf("データを入力して下さい "); scanf("%d", &data); /* 判定と出力 */ int x = 10, y = 20, z = 30; if (data == x) printf("xと等しい\n"); else if (data == y) printf("yと等しい\n"); else if (data == z) printf("zと等しい\n"); else printf("いずれとも等しくない\n"); return 0; }
---------------------(C++11)if 文-------------------------
if (初期化 論理式) { 文1(複数の文も可) } else { 文2(複数の文も可) }
//int k = y / x; //if (k > 1) { if (int k = y / x; k > 1) { 文1(複数の文も可) } else { 文2(複数の文も可) }
----------------------(C++11)if 文終わり--------------------
switch (式) { [case 定数式1 :] [文1] [case 定数式2 :] [文2] ・・・・・ [default :] [文n] }
switch (data) { case x : printf("xと等しい\n"); break; case y : printf("yと等しい\n"); break; case z : printf("zと等しい\n"); break; default : printf("いずれとも等しくない\n"); }
/****************************/ /* データの比較 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { /* データの入力と判定準備 */ int data; printf("データを入力して下さい "); scanf("%d", &data); int sw, x = 10, y = 20, z = 30; if (data == x) sw = 0; else { if (data == y) sw = 1; else sw = (data == z) ? 2 : 3; } /* 判定と出力 */ switch (sw) { case 0 : printf("xと等しい\n"); break; case 1 : printf("yと等しい\n"); break; case 2 : printf("zと等しい\n"); break; default : printf("いずれとも等しくない\n"); } return 0; }
---------------------(C++11)switch 文-------------------------
switch (初期化 式) { [case 定数式1 :] [文1] [case 定数式2 :] [文2] ・・・・・ [default :] [文n] }
//int k = y / x; //switch (3 * k) { switch (int k = y / x; 3 * k) { case 0: printf("0\n"); break; case 3: printf("3\n"); break; default: printf("other\n"); }
----------------------(C++11)switch 文終わり--------------------
goto ラベル; ・・・ ラベル: ・・・ ・・・
/**********************************/ /* 正しいデータの再入力(goto文) */ /* coded by Y.Suganuma */ /**********************************/ #include <stdio.h> int main() { int x, y; again: printf("2つの正のデータを入力して下さい "); scanf("%d %d", &x, &y); if (x < 0 || y < 0) /* いずれかが負 */ goto again; else /* 両方とも 0 以上 */ printf("和は=%d\n", x+y); return 0; }
#include <stdio.h> int main() { double data; double sum = 0.0; scanf("%lf", &data); sum += data; scanf("%lf", &data); sum += data; scanf("%lf", &data); sum += data; scanf("%lf", &data); sum += data; scanf("%lf", &data); sum += data; printf("和=%f\n", sum); return 0; }
#include <stdio.h> int main() { double sum = 0.0; int i1; for (i1 = 0; i1 < 5; i1++) { // for (int i1 = 0; i1 < 5; i1++) { // C++ の場合は,上 2 行の代わりにこの行でも良い // // 以下に示す例題においても同様 double data; scanf("%lf", &data); sum += data; } printf("和=%f\n", sum); return 0; }
for (式1; 式2; 式3) { 文(複数の文も可) } ・・・・・
<while文> while (式) { 文(複数の文も可) } ・・・・・
<do while文> do { 文(複数の文も可) } while (式) ; ・・・・・
式1; while (式2) { 文(複数の文も可) 式3; }
for (式1; 式2; 式3) { ・・・・・ for (式4; 式5; 式6) { ・・・・・ } ・・・・・ }
01 int x = 10, y = 20, sum; 02 for (int i1 = 0; i1 < 10; i1 = i1+1) { // C では許されない 03 int a = x; 04 for (int i2 = 0; i2 < 5; i2 = i2+1) { // C では許されない 05 int y = a / 50; 06 a += y; 07 ・・・・・・・・ 08 } 09 sum = a / y; 10 }
/****************************/ /* 平均値の計算 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { /* 初期設定 */ double sum1 = 0.0; double sum2 = 0.0; /* データの数の読み込み */ int n; printf("人数は? "); scanf("%d", &n); /* データの読み込み */ int i1; for (i1 = 0; i1 < n; i1++) { double x, y; printf("英語と数学の点は? "); scanf("%lf %lf", &x, &y); sum1 += x; sum2 += y; } /* 結果の計算と出力 */ if (n <= 0) /* 0で割るのを防ぐ */ printf("データがない!\n"); else { double mean1 = sum1 / n; double mean2 = sum2 / n; printf(" 英語=%f 数学=%f\n", mean1, mean2); } return 0; }
/****************************/ /* 平均値の計算 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { /* 初期設定 */ double sum1 = 0.0; double sum2 = 0.0; /* データの数の読み込み */ int n; printf("人数は? "); scanf("%d", &n); /* データの読み込み */ int i1 = 0; while (i1 < n) { double x, y; printf("英語と数学の点は? "); scanf("%lf %lf", &x, &y); sum1 += x; sum2 += y; i1++; } /* 結果の計算と出力 */ if (n <= 0) printf("データがない!\n"); else { double mean1 = sum1 / n; double mean2 = sum2 / n; printf(" 英語=%f 数学=%f\n", mean1, mean2); } return 0; }
/************************************/ /* ファイル入出力(平均値の計算後) */ /* coded by Y.Suganuma */ /************************************/ #include <stdio.h> int main() { /* 初期設定 */ double sum1 = 0.0; double sum2 = 0.0; int n = 0; /* データの読み込み */ FILE *in = fopen("input","r"); double x, y; while (EOF != fscanf(in,"%lf %lf",&x,&y)) { sum1 += x; sum2 += y; n++; } fclose(in); /* 結果の計算と出力 */ if (n <= 0) printf("データがない!\n"); else { FILE *out = fopen("output", "w"); double mean1 = sum1 / n; double mean2 = sum2 / n; fprintf(out, "人数 %d 英語=%f 数学=%f\n", n, mean1, mean2); fclose(out); } return 0; }
/************************************/ /* ファイル入出力(平均値の計算後) */ /* coded by Y.Suganuma */ /************************************/ #include <iostream> #include <fstream> int main() { /* データの読み込み */ std::ifstream in("input"); double sum1 = 0.0, sum2 = 0.0; int n = 0; while (!in.eof()) { double x, y; in >> x >> y; sum1 += x; sum2 += y; n++; } in.close(); /* 結果の計算と出力 */ if (n <= 0) std::cout << "データがない!\n"; else { std::ofstream out("output"); double mean1 = sum1 / n; double mean2 = sum2 / n; out << "人数 " << n << " 英語=" << mean1 << " 数学=" << mean2 << std::endl; out.close(); } return 0; }
/************************************/ /* クラス平均と最も良いクラスの出力 */ /* coded by Y.Suganuma */ /************************************/ #include <stdio.h> int main() { /* データの入力と平均値の計算 */ int n; printf("クラスの数は? "); scanf("%d", &n); double max; int i1, max_c; for (i1 = 0; i1 < n; i1++) { /* クラスの数だけ繰り返す */ int m; printf("%d 番目のクラスの人数は ", i1+1); scanf("%d", &m); double mean = 0.0; /* この初期設定はここで必要 */ int i2; for (i2 = 0; i2 < m; i2++) { /* クラスの人数だけ繰り返す */ double x; printf(" %d 番目の人の点は? ", i2+1); scanf("%lf", &x); mean += x; } mean /= m; if (i1 == 0 || mean > max) { max = mean; max_c = i1 + 1; } } /* 結果の出力 */ printf("最大平均値はクラス %d の %f 点\n", max_c, max); return 0; }
/*************************************/ /* 正しいデータの再入力(do-while文)*/ /* coded by Y.Suganuma */ /*************************************/ #include <stdio.h> int main() { int x, y; do { printf("2つの正のデータを入力して下さい "); scanf("%d %d", &x, &y); } while (x <= 0 || y <= 0); printf("和は=%d\n", x+y); return 0; }
/****************************/ /* 最大値の計算 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { int n = 5, i1, max = 0; for (i1 = 0; i1 < n; i1++) { int x; printf("データを入力してください "); scanf("%d", &x); if (x > max) max = x; } printf(" 最大値=%d\n", max); return 0; }
#include <stdio.h> int main() { int n = 5, i1, max; printf("データを入力してください "); scanf("%d", &max); /* 最初のデータでmaxを初期化 */ for (i1 = 1; i1 < n; i1++) { /* i1を1から始める */ int x; printf("データを入力してください "); scanf("%d", &x); if (x > max) max = x; } printf(" 最大値=%d\n", max); return 0; }
if (x < 0 && x > max)
#include <stdio.h> int main() { int n = 5, i1, max, sw = 0, x; /* maxに対する初期設定は不要 */ for (i1 = 0; i1 < n; i1++) { printf("データを入力してください "); scanf("%d", &x); if (x < 0 && (sw == 0 || x > max)) { max = x; sw = 1; } } printf(" 最大値=%d\n", max); return 0; }
/* for 文 */ 001 #include <stdio.h> 002 int main() 003 { 004 // (1)入力 005 int i, no = -1, sum1 = 0, sum2 = 0; 006 for (; no < 0; ) { 007 printf("0以上の整数を入力してください "); 008 scanf("%d", &no); 009 } 010 // (2)*と和1 011 for (i = 1; i <= no; i++) { // for (i = 0; i < no; i++) { 012 printf("*"); 013 sum1 += i; // sum1 += (i + 1); 014 } 015 if (no > 0) 016 printf("\n"); 017 printf("sum1 = %d\n", sum1); 018 // (3)和2 019 printf("データ? "); 020 scanf("%d", &i); 021 for (; i != 0; ) { 022 sum2 += i; 023 printf("データ? "); 024 scanf("%d", &i); 025 } 026 printf("sum2 = %d\n", sum2); 027 return 0; 028 } /* while 文 */ 029 #include <stdio.h> 030 int main() 031 { 032 // (1)入力 033 int i, no = -1, sum1 = 0, sum2 = 0; 034 while (no < 0) { 035 printf("0以上の整数を入力してください "); 036 scanf("%d", &no); 037 } 038 // (2)*と和1 039 i = 1; 040 while (i <= no) { 041 printf("*"); 042 sum1 += i; 043 i++; 044 } 045 if (no > 0) 046 printf("\n"); 047 printf("sum1 = %d\n", sum1); 048 // (3)和2 049 printf("データ? "); 050 scanf("%d", &i); 051 while (i != 0) { 052 sum2 += i; 053 printf("データ? "); 054 scanf("%d", &i); 055 } 056 printf("sum2 = %d\n", sum2); 057 return 0; 058 } /* do while文 */ 059 #include <stdio.h> 060 int main() 061 { 062 // (1)入力 063 int i, no = -1, sum1 = 0, sum2 = 0; // noに対する初期設定は必要なし 064 do { 065 printf("0以上の整数を入力してください "); 066 scanf("%d", &no); 067 } while (no < 0); 068 // (2)*と和1 069 // i = 1; 070 // do { 071 // printf("*"); 072 // sum1 += i; 073 // i++; 074 // } while (i <= no); 075 // if (no > 0) 076 // printf("\n"); 077 if (no > 0) { 078 i = 1; 079 do { 080 printf("*"); 081 sum1 += i; 082 i++; 083 } while (i <= no); 084 printf("\n"); 085 } 086 printf("sum1 = %d\n", sum1); 087 // (3)和2 088 printf("データ? "); 089 scanf("%d", &i); 090 // do { 091 // sum2 += i; 092 // printf("データ? "); 093 // scanf("%d", &i); 094 // } while (i != 0); 095 if (i != 0) { 096 do { 097 sum2 += i; 098 printf("データ? "); 099 scanf("%d", &i); 100 } while (i != 0); 101 } 102 printf("sum2 = %d\n", sum2); 103 return 0; 104 }
/**********************************/ /* データの和(負のデータで終了) */ /* coded by Y.Suganuma */ /**********************************/ #include <stdio.h> int main() { /* データ数の入力 */ int n; printf("データ数は? "); scanf("%d", &n); /* 和の計算 */ int i1, sum = 0; for (i1 = 0; i1 < n; i1++) { int x; printf(" データを入力して下さい "); scanf("%d", &x); if (x < 0) break; else sum += x; } /* 出力 */ printf("和=%d\n", sum); return 0; }
#include <stdio.h> int main() { /* データ数の入力 */ int n; printf("データ数は? "); scanf("%d", &n); /* 和の計算 */ int i1, x = 0, sum = 0; for (i1 = 0; i1 < n && x >= 0; i1++) { printf(" データを入力して下さい "); scanf("%d", &x); if (x >= 0) sum += x; } /* 出力 */ printf("和=%d\n", sum); return 0; }
/**********************************/ /* データの和(負のデータを除外) */ /* coded by Y.Suganuma */ /**********************************/ #include <stdio.h> int main() { /* データ数の入力 */ int n; printf("データ数は? "); scanf("%d", &n); /* 和の計算 */ int i1, sum = 0; for (i1 = 0; i1 < n; i1++) { int x; printf(" データを入力して下さい "); scanf("%d", &x); if (x < 0) continue; sum += x; } /* 出力 */ printf("和=%d\n", sum); return 0; }
情報学部 | 菅沼ホーム | 全体目次 | 演習解答例 | 付録 | 索引 |