看板 C_Sharp 關於我們 聯絡資訊
小弟我是剛學習C#的初學者, 有個程式目的是要用來檢驗小朋友的九九乘法表是否熟練, 要隨機產生兩個變數相乘,然後讓小朋友輸入答案, 若是答對,顯示非常好,然後顯示下一題(不一樣的題目), 就這樣一直下去. 若是答錯,顯示錯了再試一次,然後顯示同一題的題目,直到答對為止. 以上這是題目. 然後我想要把隨機亂數出題的部分寫成一個副程式, 判斷小朋友輸入的答案是否正確為另一個副程式 然後從主程式裡面去呼叫,這樣的方式去寫, 我的問題是: 我不會讓答對了的題目一直做下去,變成一直循環這樣, 還有錯了之後我不會讓他在顯示同樣的題目,直到做對換題這樣, 我一直想不出來該怎麼去修改, 想請有經驗的高手們幫我看一下, 跟我指正一下哪裡做錯了… 我把我的程式PO上來, 請高手幫個忙, 謝謝你!! 以下是我的程式 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Multiplication { class Multiplication { public static void Main(string[] args) { Console.WriteLine("Welcome to Multiplication"); Console.WriteLine("Please answer the following question"); int [] com; com = question(); Correct(com[0],com[1]); } public static int[] question() { System.Random number = new Random(); int a = number.Next(1, 9); int b = number.Next(1, 9); Console.WriteLine("How much is {0} times {1}?", a, b); int input = Convert.ToInt32(Console.ReadLine()); int ans = a * b; int [] com = new int[]{input,ans}; return com; } public static void Correct(int input, int ans) { if (input != ans) Console.WriteLine("No.Please try again."); else Console.WriteLine("Very Good!"); question(); } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.161.98
james732:http://pastie.org/2846131 大概是這種感覺 11/11 17:06
summerpurple:如果不用while去寫 會很複雜嗎? 11/11 17:56
james732:你可以改用 for, 不過應該不會比較簡單 11/11 19:54
james732:for 跟 while 都不要的話,那就只好用 goto 了 11/11 19:55
lwecloud:為什麼不要用while? 11/11 20:40
summerpurple:沒有特別原因,只是想問問看有沒有不用while的寫法這 11/11 21:05
summerpurple:感謝james大大提供的方法^^ 11/11 22:40
hatasum:遞迴也可以阿 開一個function input:題目 11/12 00:10
hatasum:如果他答對,則再出題目呼叫同個function;否則就丟原題目 11/12 00:11
james732:遞迴一直進去,可能會有 stack overflow 問題 11/12 00:32
james732:雖然要回答到 overflow 應該也要玩得夠久...XD 11/12 00:32
linxiaoxi:遞回,且要防止退棧overflow,可以用異步方式 11/14 09:54
linxiaoxi:示例代碼推文寫不下,回復到看板里了 11/14 09:55