Prog1_6th

Similar documents
Prog1_15th

Prog1_10th

Prog1_3rd

Prog1_12th

2006年10月5日(木)実施

DVIOUT

PowerPoint プレゼンテーション

プログラミング基礎

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

Prog2_9th

プログラミング基礎

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

kiso2-09.key

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

Prog1_10th

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裶²ó ¨¡ À©¸æ¹½Â¤¡§·«¤êÊÖ¤· ¨¡

Microsoft PowerPoint - class04.ppt

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

PowerPoint プレゼンテーション

Microsoft PowerPoint - 説明3_if文switch文(C_guide3)【2015新教材対応確認済み】.pptx

PowerPoint プレゼンテーション

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Microsoft Word - no11.docx

プログラミングA

Cプログラミング1(再) 第2回

演習課題No12

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

Prog1_6th

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint - lec4.ppt

kiso2-06.key

slide5.pptx

Microsoft PowerPoint - lec10.ppt

Microsoft Word - Cプログラミング演習(12)

Microsoft PowerPoint - kougi7.ppt

Microsoft Word - no15.docx

Microsoft Word - Cプログラミング演習(8)

計算機プログラミング

プログラミングA

プログラミング基礎

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

プログラミング基礎

Microsoft Word - no202.docx

Prog1_2nd

講習No.9

スライド 1

Microsoft PowerPoint - C_Programming(3).pptx

Microsoft Word - no13.docx

PowerPoint プレゼンテーション - 物理学情報処理演習

Java講座

PowerPoint Presentation

C¥×¥í¥°¥é¥ß¥ó¥° ÆþÌç

プログラミング実習I

8 / 0 1 i++ i 1 i-- i C !!! C 2

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft Word - no12.doc

講習No.12

プログラミング実習I

プログラミングA

tuat1.dvi

3. 標準入出力

< F2D837C E95CF CF68A4A94C5816A2E6A>

program7app.ppt

:30 12:00 I. I VI II. III. IV. a d V. VI

02: 変数と標準入出力

5

PowerPoint Presentation

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Microsoft PowerPoint - 計算機言語 第7回.ppt

新・明解C言語 ポインタ完全攻略

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

gengo1-2

ポインタ変数

第1回 プログラミング演習3 センサーアプリケーション

Microsoft Word - Cプログラミング演習(1)_2012

Microsoft Word - Cプログラミング演習(9)

C C UNIX C ( ) 4 1 HTML 1

演算増幅器

Microsoft Word - Cプログラミング演習(11)

Taro-ファイル処理(公開版).jtd

Microsoft Word - no103.docx

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

コマンドラインから受け取った文字列の大文字と小文字を変換するプログラムを作成せよ 入力は 1 バイトの表示文字とし アルファベット文字以外は変換しない 1. #include <stdio.h> 2. #include <ctype.h> /*troupper,islower,isupper,tol

演算増幅器

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

gengo1-11

PowerPoint プレゼンテーション

C言語によるアルゴリズムとデータ構造

printf("5つの整数を入力して下さい \n"); /* データ入力 */ for( /*** 02 ***/ ){ printf("%dつ目の入力 :",i+1); scanf("%d", /*** 03 ***/ ); sum=dat[0]; /* 合計値の初期設定 */ n_max= 0

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(C 言語 ) サンプル問題 知識科目 第 1 問 (

DVIOUT

2

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

新・明解C言語 実践編

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

Microsoft PowerPoint - kougi2.ppt

Microsoft Word - no206.docx

Transcription:

2012 年 5 月 24 日 ( 木 ) 実施 多分岐のプログラム 前回は多段階の 2 分岐を組み合わせて 3 種類以上の場合分けを実現したが, 式の値の評価によって, 一度に多種類の場合分けを行う多分岐の利用によって見通しのよいプログラムを作成できる場合がある ( 流れ図は右図 ) 式の評価 : 値 1 : 値 2 : 値 n : 該当値無し 処理 1 処理 2 処理 n 既定の処理 switch 文 C 言語で多分岐のプログラムを実現するための文として,switch 文が用意されている switch 文の構文は次のようになる switch ( 制御式 ) case 事例式 1: [ 文 1-1 [ 文 1-2] [break;]] case 事例式 2: [ 文 2-1 [ 文 2-2] [break;]] case 事例式 n: [ 文 n-1 [ 文 n-2] [break;]] [default: [ 既定文 1 [ 既定文 2] ]] ここで,[] 内は省略可能である switch 文の機能は, 制御式を評価してその値が事例式のいずれかの値に一致したとき, そのcaseラベルに続く文をbreak 文に出会うまで実行する break 文に到達すると switch 文から抜け出す もし, 一致した case ラベルに続く文で break 文が省略されている場合には, その下のcaseラベルに続く文も break 文に出会うまで実行する また,switch 文では, 制御式を評価してその値が事例式のいずれの値にも一致しないときは, default ラベルが書かれていれば, それに続く文を実行する (default は要求されているものが抜け落ちているという意味 ) 例題 1(switch 文を用いた多分岐 -int 型変数の評価 -) 次のソースプログラムをテキストエディタで入力して,prog6-1.c の名前を付けて保存する それを翻訳 編集して実行形式のファイルを作成し,60 点未満,60 点台,70 点台,80 点台,90 点以上の 5 通りの場合について実行せよ /* prog6-1.c */ #include <stdlib.h> int main(void) - 1 -

int tensuu, rank; printf(" 点数を 0 点から 100 点の範囲の整数で入力してください : "); scanf("%d", &tensuu); if (tensuu < 0 tensuu> 100) printf(" 入力された点数は範囲外です \n"); rank = tensuu/10; switch(rank) case 6: printf(" 点数が %d 点なので, 成績評価は [ 可 ] です \n", tensuu); break; case 7: printf(" 点数が %d 点なので, 成績評価は [ 良 ] です \n", tensuu); break; case 8: printf(" 点数が %d 点なので, 成績評価は [ 優 ] です \n", tensuu); break; case 9: case 10: printf(" 点数が %d 点なので, 成績評価は [ 秀 ] です \n", tensuu); break; default: printf(" 点数が %d 点なので, 成績評価は [ 不可 ] です \n", tensuu); 解説 1.rank が 9 の場合の case ラベルに続く文はなく,break 文が省略された場合に相当する したがって,rank が9 及び10 の場合に同一の文が実行される 2.default ラベルに続く文は rankが6,7,8,9,10の何れでもない場合に実行される 例題 2(switch 文を用いた多分岐 -char 型配列要素の評価 -) 次のソースプログラムをテキストエディタで入力して,prog6-2.c の名前を付けて保存する それを翻訳 編集して実行形式のファイルを作成し, 実行せよ /* prog6-2.c */ #include <stdlib.h> int nyuryoku1(void); int nyuryoku2(void); void wa(int,int); void sa(int,int); void seki(int,int); void shou(int,int); void amari(int,int); int main(int argc,char *argv[]) int x, y; - 2 -

if (argc!= 2) printf(" 利用法 :\n prog6-2 +\n prog6-2 -\n prog6-2 *\n prog6-2 /\n"); printf(" prog6-2 %%\n"); else if (argv[1][1]!= '\0') printf(" 演算子は 1 文字のみです \n"); else if (argv[1][0]!= '+' && argv[1][0]!= '-' && argv[1][0]!= '*' && argv[1][0]!= '/' && argv[1][0]!= '%') printf(" 演算子は,+,-,*,/,%% のいずれかです \n"); switch(argv[1][0]) case '+': x = nyuryoku1(); y = nyuryoku2(); wa(x,y); break; case '-': x = nyuryoku1(); y = nyuryoku2(); sa (x,y); break; case '*': x = nyuryoku1(); y = nyuryoku2(); seki(x,y); break; case '/': x = nyuryoku1(); y = nyuryoku2(); shou(x,y); break; case '%': x = nyuryoku1(); y = nyuryoku2(); amari(x,y); break; int nyuryoku1(void) int a; printf("1 つ目の整数を入力してください : "); scanf("%d", &a); return a; int nyuryoku2(void) int a; printf("2 つ目の整数を入力してください : "); scanf("%d", &a); return a; void wa(int a,int b) printf("%d + %d => %d\n", a,b,a+b); void sa(int a,int b) printf("%d - %d => %d\n", a,b,a-b); - 3 -

void seki(int a,int b) printf("%d * %d => %d\n", a,b,a*b); void shou(int a,int b) printf("%d / %d => %d\n", a,b,a/b); void amari(int a,int b) printf("%d %% %d => %d\n", a,b,a%b); 解説 C 言語では 1 行に複数の文を並べて記述することが出来る 注意 Windows 上でも gcc で翻訳 編集した場合, 前回の prog5-2.c の注意と同様, プログラ ム実行時に,prog6-2 * とした場合,'*' が任意の文字列を表すワイルドカードとして扱われる ため, 積を呼び出すための第 1 プログラム引数を 'x' とする等の工夫が必要である 演習 1 第 1 プログラム引数として,A または a を入力すると あ,I または i を入力すると い,U または u を入力すると う,E または eを入力すると え,O または oを入力すると, お, それ以外の文字を入力すると 変換ルールがありません と画面に表示するプログラムの空欄 1),2) を埋めてソースプログラムを完成させ, テキストエディタで入力して,ex6-1.cの名前を付けて保存する それを翻訳 編集して実行形式のファイルを作成し, 実行せよ ( 提出するファイルは ex6-1.cの完成版とする ) /* ex6-1.c */ #include <stdlib.h> int main(int argc,char *argv[]) if (argc!= 2) printf(" 利用法 :\n ex6-1 A\n ex6-1 a\n ex6-1 I\n ex6-1 i\n"); printf(" ex6-1 U\n ex6-1 u\n ex6-1 E\n ex6-1 e\n"); printf(" ex6-1 O\n ex6-1 o\n"); - 4 -

else if (argv[1][1]!= '\0') printf(" 引数は 1 文字のみです \n"); switch( 1) ) case 'A': case 'a': printf(" あ \n"); break; case 'I': case 'i': printf(" い \n"); break; case 'U': case 'u': printf(" う \n"); break; case 'E': case 'e': printf(" え \n"); break; case 'O': case 'o': printf(" お \n"); break; 2) : printf(" 変換ルールがありません \n"); 演習 2( 余裕のある人向け ) 第 1 プログラム引数として,7 桁の学籍番号を入力するとその 3 文字目を読み取り, 学科名を画面に表示するプログラムの空欄 1) ~8) ( 同一番号には同一内容が入る ) を埋めてソースプログラムを完成させ, テキストエディタで入力して,ex6-2.c の名前を付けて保存する それを翻訳 編集して実行形式のファイルを作成し, 実行せよ ( 提出するファイルは ex6-2.cの完成版とする ) ただし, 学科名は次のルールで決められているものとする また,strlenは文字列の長さを図る関数である 3 文字目が 1: 商経学部商学科 3 文字目が 2: 商経学部経済学科 3 文字目が 3: 商経学部経営学科 3 文字目が 4: 政策情報学部政策情報学科 3 文字目が 5,6,7,8,9: 大学院 3 文字目が a: サービス創造学部サービス創造学科 /* ex6-2.c */ #include <string.h> /* strlen を用いるため */ #include <stdlib.h> /* exit を用いるため */ int main(int argc,char *argv[]) - 5 -

if (argc!= 2) printf(" 利用法 :\n ex6-2 xxxxxxx(7 桁の学籍番号 )\n"); else if (strlen(argv[1])!= 7) printf(" 学籍番号は 7 文字です \n"); switch(argv[1][2]) case '1': printf("1) \n"); 2) ; case '2': printf("3) \n"); 2) ; case '3': printf("4) \n"); 2) ; case '4': printf("5) \n"); 2) ; case '5': case '6': case '7': case '8': case '9': printf("6) \n"); 2) ; case 'a': printf("7) \n"); 2) ; 8) : printf(" 該当する学科がありません \n"); - 6 -