| 情報学部 | 菅沼ホーム | 全体目次 | 演習解答例 | 付録 | 索引 |

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;
}

| 情報学部 | 菅沼ホーム | 全体目次 | 演習解答例 | 付録 | 索引 |