- 締切済み
サブ関数、メイン関数
C言語の質問です! ランダムに九九の計算を出題して、キーボードから答えを入力し、正解かどうかを判定するプログラムをつくりたいです。出題の部分をサブ関数、判定の部分をメイン関数として作成する場合、どのようなプログラムの書き方になるのか、教えてください! #include<stdio.h> #include<stdlib.h> #include<process.h> void kakezan(void); void answer(void); void hanrei(void); int a,b,c; int main() { printf("やめるときは、100と入力してください。\n"); while(1){ kakezan(); answer(); hantei(); } return 0; } void kakezan(void) { a=rand() %10; b=rand() %10; printf("%d×%d=",a,b); } void answer(void) { scanf("%d",&c); if(c==100) exit(0); } void hantei(void) { if(c==a*b) printf(">>正解\n"); else printf(">>不正解\n"); printf("\n"); return; } 一応考えてみたのですが、 ちゃんと、判定→メイン 出題→サブ関数になっているのかなとおもって・・・ このプログラムであっているのでしょうか??
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kenji_aki
- ベストアンサー率50% (29/58)
int 出題() { printf(問題の出題); return 答え; } int main() { int 解; int 入力; loop: 解 = 出題(); 入力 = キーボードからの入力; if (入力==100) break; else if (入力==解) printf("正解\n"); else printf("不正解\n"); end loop: return 0; } 判定をメイン関数でする。というのはmain()でループやIFによって判定するのではないですか? あなたのコードですと、サブ関数内で判定処理を行っています。 また、終了をサブ関数内で行うのはあまり丁寧ではないですね。 上記では出題()というサブ関数を用意して、出題を出力し正答を返します。 メイン関数に戻ってきたらキー入力を求めて出題()から得た回答と比較してそれぞれ処理します。 それぞれの処理を全部関数化する必要も無いと思うのですがいかがでしょう。