課題1
下記のプログラムをswitch1.cとして書き、実行することで、switch文の動作を 確認せよ。
#include <stdio.h> int main(void) { int a; for(a=1; a<=5; a++){ printf("-------------\n"); switch(a){ case 1: printf("a=1\n"); case 3: printf("a=3\n"); case 5: printf("a=5\n"); default : printf("others\n"); } } return 0; }
課題2
下記のプログラムをswitch2.cとして書き、実行することで、switch文におけるbreak の働きを理解せよ。
(プログラム) #include <stdio.h> int main(void) { int a; for(a=1; a<=5; a++){ printf("-------------\n"); switch(a){ case 1: printf("a=1\n"); break; case 3: printf("a=3\n"); break; case 5: printf("a=5\n"); break; default : printf("others\n"); } } return 0; }
課題3
次のプログラムの(あ)の行を、下記の1-5のそれぞれに置き換えることが可能か
どうか答えよ。また、置き換えが可能な場合、そのときの実行結果も示せ。
(実際にプログラミングする際には、コンパイル可能かどうかで、置き換え可能か判断
できる。)
#include <stdio.h> #define MAX 2 int main(void){ int a; for(a=0; a<5; a++){ printf("a = %d \n", a); switch(a){ case 3: (あ) printf("成功!\n"); break; } } return 0; }
課題4
#include <stdio.h> int main(void){ char a[]="I am very hungry"; int i=0; printf("文字列 = %s\n", a); while(a[i] != '\0'){ switch(a[i]){ case 'a': a[i] = 'b'; break; case 'v': case 'h': a[i] = 'w'; break; case 'y': a[i] = 'z'; break; default: a[i] = '*'; } i++; } printf("文字数 = %d\n", i); printf("文字列 = %s\n", a); return 0; }
課題5
ソフトウェア基礎aのクラスA, B, C(小文字a, b, cにも対応するとする) を入力すると担当者の名前を表示させ、それ以外の文字入力に対しては、「そのような クラスはありません」と表示させたい。 目的を達成するプログラムをswitch5.cとして書き、下記の実行例のように、 正しく実行されることを確認せよ。
(実行例) hp3225[susaki]501:~/program% hp3225[susaki]501:~/program% ./a.out ソフトウェア基礎aのクラス名を入力してください(A,B,Cのいずれか) a 担当者は小豆畑先生です hp3225[susaki]502:~/program% hp3225[susaki]502:~/program% ./a.out ソフトウェア基礎aのクラス名を入力してください(A,B,Cのいずれか) A 担当者は小豆畑先生です hp3225[susaki]503:~/program% hp3225[susaki]503:~/program% ./a.out ソフトウェア基礎aのクラス名を入力してください(A,B,Cのいずれか) b 担当者は北風先生です hp3225[susaki]504:~/program% hp3225[susaki]504:~/program% ./a.out ソフトウェア基礎aのクラス名を入力してください(A,B,Cのいずれか) B 担当者は北風先生です hp3225[susaki]505:~/program% hp3225[susaki]505:~/program% ./a.out ソフトウェア基礎aのクラス名を入力してください(A,B,Cのいずれか) c 担当者は鈴木先生です hp3225[susaki]506:~/program% hp3225[susaki]506:~/program% ./a.out ソフトウェア基礎aのクラス名を入力してください(A,B,Cのいずれか) C 担当者は鈴木先生です hp3225[susaki]507:~/program% hp3225[susaki]507:~/program% ./a.out ソフトウェア基礎aのクラス名を入力してください(A,B,Cのいずれか) d そのようなクラスはありません hp3225[susaki]508:~/program%
課題6
任意の数のデータを入力させ表示させる場合に、オプションを1つだけ 選択させることで、表示方法を変更可能としたい。 下記の実行例に示された3つのオプション通りに、表示方法を可能とする プログラムをswitch6.cとして書き、正しく表 示されることを確認せよ。3つのオプションa,b,c以外の文字が入力されたら、例題13の 通りに表示されるものとする。この場合、switch文か、else-if文のどちらかを使用せ よ。
(実行例) hp3225[susaki]501:~/program% hp3225[susaki]507:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(1つだけ) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください a 4 5 6 7 8 hp3225[susaki]502:~/program% hp3225[susaki]507:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(1つだけ) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください b data[0]=4 data[1]=5 data[2]=6 data[3]=7 data[4]=8 hp3225[susaki]503:~/program% hp3225[susaki]507:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(1つだけ) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください c 8 7 6 5 4 hp3225[susaki]504:~/program% hp3225[susaki]507:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(1つだけ) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください z 4 5 6 7 8 hp3225[susaki]505:~/program% hp3225[susaki]507:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(1つだけ) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください d 4 5 6 7 8 hp3225[susaki]506:~/program%
課題7
上記の課題6では、オプションを1つしか選択できなかった。しかしここでは、 3つのオプションのうち、複数のオプションの組合せも変更可能としたい。 しかも、オプションの様々な入力に対しても、同一の結果を表示させたい。 例えば、abc, acb, bac, bca, cab, cbaのような文字列に対しても、 全て同様に「改行つき、要素数つき、逆順で」表示させるというものである。
下記の実行例に示された3つのオプション通りに、表示方法を可能とするプログラムを switch7.cとして書き、正しく表示されることを確認せよ。この場合も、 課題12-4と同様、switch文か、else-if文のどちらかを使用せよ。
(実行例) hp3225[susaki]501:~/program% hp3225[susaki]501:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(複数可) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください ab data[0]=4 data[1]=5 data[2]=6 data[3]=7 data[4]=8 hp3225[susaki]502:~/program% hp3225[susaki]502:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(複数可) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください ba data[0]=4 data[1]=5 data[2]=6 data[3]=7 data[4]=8 hp3225[susaki]503:~/program% hp3225[susaki]503:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(複数可) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください bc data[4]=8 data[3]=7 data[2]=6 data[1]=5 data[0]=4 hp3225[susaki]504:~/program% hp3225[susaki]504:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(複数可) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください ca 8 7 6 5 4 hp3225[susaki]505:~/program% hp3225[susaki]505:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(複数可) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください bac data[4]=8 data[3]=7 data[2]=6 data[1]=5 data[0]=4 hp3225[susaki]506:~/program% hp3225[susaki]506:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(複数可) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください cab data[4]=8 data[3]=7 data[2]=6 data[1]=5 data[0]=4 hp3225[susaki]507:~/program% hp3225[susaki]507:~/program% ./a.out データを入力してください 4 5 6 7 8 データ表示のオプションを入力してください(複数可) a: 改行して表示 b: 何番目の要素かを表示 c: 入力とは逆順に表示 オプションなしの場合は z を入力してください z 4 5 6 7 8 hp3225[susaki]508:~/program%