プログラミング演習2004

第6回目 [5月25日、H.16(‘04)]
多岐選択(switch文)と
繰り返し構造
(do-while文、while文)
本日のメニュー
1)前回の課題について
2)前回の宿題について
3)switch文、do-while文、while文の課題
4)宿題
PE04-06.ppt
前回の課題
教科書の各演習を順に処理していくプログ
ラムを作成せよ。
(1)演習3-1(41頁)、演習3-3(45頁)、
演習3-4(45頁)
(2)[発展](時間に余裕の有る人は進む)
演習3-2、演習3-5~演習3-8
ファイル名は en5-****.c
ファイル名の **** は学籍番号の二桁目と下3桁
例:学生番号 034987 ならば xxx-3987.c
int a, b, c, d;
/* 演習3-1 */
printf("整数A:"); scanf("%d", &a);
printf("整数B:"); scanf("%d", &b);
if( a % b == 0 )
puts("bはaの約数です。");
else
puts("bはaの約数ではありません。");
/* 演習3-3 */
if(c>0) d= c;
printf("整数:");
else
d=-c;
scanf("%d", &c);
d = ( c > 0 ) ? c : -c;
printf("絶対値は%dです\n",(c>0)?c:-c
/* 演習3-4 */
puts("二つの整数を入力せよ");
printf("整数A:"); scanf("%d", &a);
printf("整数B:"); scanf("%d", &b);
if ( a > b )
puts("AはBより大きいです。");
else
if ( b > a )
puts("AはBより小さいです。");
else
puts("AとBは等しいです。");
/* 演習3-2 */
比較演算、等価演算を
int main(void) {
した結果の値を
int a, b;
出力する
puts("二つの整数を入力せよ");
printf("整数A:"); scanf("%d", &a);
printf("整数B:"); scanf("%d", &b);
printf("a> b の結果は%d\n", a> b );
printf("a>=b の結果は%d\n", a>=b );
printf("a< b の結果は%d\n", a< b );
printf("a<=b の結果は%d\n", a<=b );
printf("a==b の結果は%d\n", a==b );
printf("a!=b の結果は%d\n", a!=b );
return(0);
}
前回の宿題
◎3つの整数を入力し、 整数を入力? 8 5 2
最大値と最小値を表示 最大値は 8 です。
最小値は
2
です。
するプログラムを作れ。
[46~47頁を参考に] 整数を入力? 8 5 2 4
最大値は 9 です。
{発展問題}入力する整
最小値は 2 です。
数が五つの場合。
ファイル名:hw5-****.c hw5-****.exe
9
• 締め切り: 5月22日(土) 午後1時
• リストの提出は、オープン利用室のレポート入れ
• aucopy でのファイル転送フォルダーは、
[森下伊三男]-[プログラミング演習]
int a, b, c;
printf("三つの整数は");
scanf("%d %d %d",&a,&b,&c);
if ( a > b )
if ( a > c )
printf("最も大きい値は %d",a);
文
else
printf("最も大きい値は %d",c);
else
if ( b > c )
printf("最も大きい値は %d",b);
文
else
printf("最も大きい値は %d",c);
int a, b, c, d, e, maxとりあえず、
;
printf("123456 朝日太郎\n");
1個だけの入力
printf("5つの整数は?"); の場合は
それが最大置
scanf("%d %d %d %d %d",
&a,&b,&c,&d,&e);
2個目が
max = a;
入力された
if ( b > max ) max = b; 段階での
if ( c > max ) max = c; 最大値
if ( d > max ) max = d; 5個目が
if ( e > max ) max = e; 入力された
段階の
printf("最大値は %d です。",max);
最大値
提出課題について
・「bはaの約数」 → a % b がゼロになる
if( a % b == 0 ) 「bはaの約数」
else
「bはaの約数でない」
if( a % b )
→ True(非0)の時は 「bはaの約数でない」
if( b%a ), if( a/b ), if( b/a)
と書いた人が多い[これでは約数判定できない]
・符号反転 –a を以下のように書いた人が多い
(-1)*a, -1*a, a*-1, a*(-1)
[特に、間違いではない]
・x = (a>b) ? 1 : 0; では a>b の値は分からない。
・宿題は良くできていた。3項演算子の利用もあった。
復習
構造化プログラミング
順次構造
A
B
選択構造
・二者択一、
複数場合分け
・if文、switch文
true
判断
A
false
B
繰り返し(反復)構造
・定数回繰り返し、前判断、後判断
・for文、while文、do-while文
どの構造も入口と出口
が一つだけ
false
判断
true
A
今日の課題 ファイル名は en6-****.c
教科書の各演習を順に処理するプログラム
を作成せよ。
(1)演習3-9、演習3-10(53頁)、
演習3-11、演習3-12(57頁)
(2)List4-2、4-3(62,63頁)を理解して
から演習4-1、演習4-2(65頁)、List47(68頁)を理解してから演習4-6(96
頁)
提出はいつもと同様、リスト印刷とファイル転送
ファイル名の **** は学籍番号の二桁目と下3桁
例:学生番号 034987 ならば xxx-3987.c
今日の宿題
ファイル名:hw6-****.{c, exe}
正の整数を入力していき、 data ? 30
0(ゼロ) 又は負の整数が data ? 54
入力されるまでに入力さ data ? 16
data ? –1
れた正の整数について、
最大値は 54 です。
次の値を順に出力せよ 最小値は 16 です。
1) 最大値 2) 最小値 個数は 3 個です。
平均値は 33.33 です。
3) 個数
4) 平均値
• 締め切り: 5月29日(土) 午後1時
• リストの提出は、オープン利用室のレポート入れ
• aucopy でのファイル転送フォルダーは、
[森下伊三男]-[プログラミング演習]