納得C言語
[第8回]演習問題Ⅱ
第7回まで学習した内容を使い、演習問題を行います!
1 数当てゲーム
ある数値を入力し、10回以内で当てるゲームを作ってみよう!
但し、入力した数値が大きいか小さいか正解かを判定する自作関数を作成して作ってみよう。
画像のようになればOK!
結果1 10回以内に正解した場合
結果2 10回以内に正解できなかった場合
演習問題Ⅱ 第1問のヒント
1 数当てゲーム
1.正解か不正解かを判定する関数を作成します
2.10回ループさせるにはfor文を使います
3.数値と数値を判定させるにはif文を使います
4.正解か不正解かの判定をし、終了させるにはif文を使います
5.10回より前に正解した場合はbreakを使ってfor文から抜けます
演習問題Ⅱ 第1問の解答
1 数当てゲーム
解答プログラム
#include <stdio.h> // プロトタイプ宣言 int hantei(int l,int s); int main() { int i = 0 ,s = 0 ,l = 0 ,a = 0; printf("数値を入力してください==>"); scanf("%d",&s); printf("数当てゲーム!チャンスは10回!\n"); //10回繰り返す for(i=0;i<10;i++){ printf("数値を入力!==>"); scanf("%d",&l); //自作関数hantei の呼び出し a = hantei(s,l); //もしa==0ならばbreakで抜ける if(a == 0){ break; } } //a != 0 ならば以下の処理を行う if(a != 0){ printf("残念!正解の数値は%dです\n",s); } return 0; } //判定部分 int hantei(int s,int l) { //l よりsが大きければ if(l < s){ printf("正解の数値は大きいです\n"); //戻り値として1を返す return 1; } //lよりsが小さければ if(l > s){ printf("正解の数値は小さいです\n"); //戻り値として2を返す return 2; } //lとsが同じならば if(l==s){ printf(" 大正解です!\n"); //戻り値として0を返す return 0; } }
解説
まず正解の数値を入力します。
次に、10回繰り返すのでfor文を使用し10未満で終了します。
<=では11回、回してしまうので注意しましょう。
次に自作関数hanteiへ正解と入力された数値を引数にして渡します。
hanteiでは正解と入力された数値を比較し、大きいか小さいか同じかで返す数値を変えています。
最後にmain文で正解(a=0)であればfor文から抜けてしまいます。
for文で10回判定しても正解でない場合、aは0以外の数値なので不正解となります。
演習問題Ⅱ 第2問
2 6回の練習問題で作ったプログラムを改良してみよう!
計算を1回で終了するものではなく何回もできるようにし、プログラムの終了も出来るようにしよう。
画像のようになればOK!
結果
演習問題Ⅱ 第2問のヒント
2 6回の練習問題で作ったプログラムを改良してみよう!
1.加減乗除の計算を何度も行うようにするにはwhile文を使い、無限ループを作成します
2.分岐条件は複数あるので、switch文を使って分岐条件を作成します
3.「終了=>0」にはif文を使います
4.プログラムを途中で終了させるには、breakを使ってwhile文から抜けます
演習問題Ⅱ 第2問の解答
2 6回の練習問題で作ったプログラムを改良してみよう!
解答プログラム
#include <stdio.h> //プロトタイプ宣言 int add(int i,int n); int sub(int i,int n); int mul(int i,int n); int div(int i,int n); int main() { int s = 0,a = 0,b = 0,c = 0; //変数の宣言と初期化 while(1){ printf("\n簡易計算機\n"); printf("加算=>1, 減算=>2 ,乗算=>3 ,除算=>4 ,終了=>0\n"); printf("\nどの計算をしますか ="); scanf("%d",&s); if(s == 0){ //s == 0 の場合break で抜ける printf("終了します\n"); break; } printf("数値Aを入力してください="); scanf("%d",&a); printf("数値Bを入力してください="); scanf("%d",&b); switch(s){ case 1: // 入力した値a,bを関数add()に引数として渡し、返ってきた結果をcに代入 c = add(a,b); printf("加算A+Bの答えは%d\n",c); break; case 2: // 入力した値a,bを関数sub()に引数として渡し、返ってきた結果をcに代入 c = sub(a,b); printf("減算A-Bの答えは%d\n",c); break; case 3: // 入力した値a,bを関数mul()に引数として渡し、返ってきた結果をcに代入 c = mul(a,b); printf("乗算A*Bの答えは%d\n",c); break; case 4: // 入力した値a,bを関数div()に引数として渡し、返ってきた結果をcに代入 c = div(a,b); printf("除算A/Bの答えは%d\n",c); break; default: printf("数値が正しくありません\n"); } } return 0; } int add(int i,int n) //自作関数add { int kai; kai = i + n; //加算 return kai; //kaiを返す } int sub(int i,int n) //自作関数sub { int kai; kai = i - n; //減算 return kai; //kaiを返す } int mul(int i,int n) //自作関数mul { int kai; kai = i * n; //乗算 return kai; //kaiを返す } int div(int i,int n) //自作関数div { int kai; kai = i / n; //除算 return kai; //kaiを返す }
解説
何度も計算させる場合はwhile文で無限ループを作ってしまいます。
また、ループから抜ける場合はif文で0が入力されたかを判定しbreakを使用します。
自作関数ですが、今回は計算結果をmain関数に返しているのでint型を宣言します。
また、自作関数を作成する場合にはmain関数より前でプロトタイプ宣言をする必要があるので、忘れないようにしましょう。
あとがき
お久しぶりです。その後C言語学習はいかがですか?
この学習項目もついに8回です!やっと学習コンテンツの折り返し・・・ではないですね。
4合目到達と言ったところでしょうか。
「難しいな」と思っている方も少なくないと思います。
事実私もC言語学習当初はまったく分かりませんでした(てへっ
ですがプログラムを沢山書いたり、自分でプログラムを作成していくうちに「難しい」から「面白い」に変わりました。
今、「うーん難しい」と思っている方はもう少しがんばってみましょう!
コメントの投稿
トラックバック
男 財布 ブランド
ポールスミス メンズ
2013年11月 6日 18:44
トラックバックURL
http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1090