标题:[分享]自動出題程序------'兩位數加減法'測試題
只看楼主
C_B_Lu
Rank: 1
等 级:新手上路
威 望:1
帖 子:453
专家分:0
注 册:2006-1-10
 问题点数:0 回复次数:3 
[分享]自動出題程序------'兩位數加減法'測試題

一个控制台应用程序,用于自动出题,并对用户的计算结果进行作出判断。

1xTUzaUl.rar (3.36 KB) [分享]自動出題程序------'兩位數加減法'測試題



原代碼如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace Math
{
class Program
{
enum Operate { Addition, Subtration }

static void Main(string[] args)
{
welcome(); // 調用自定義方法,顯示歡迎介面
int total, t, f; // 分別用于存儲試題總數,答對的題數,答錯的題數
bool reStart; // 存儲用戶是否愿意再試一次
int intRadix = CreateRadix();
Random random = new Random(intRadix);
do
{
reStart = false;
Console.WriteLine("\n測試現在開始,請留意題目!\n");
total = 10;
t = 0;
f = 0;
Operate oper = (Operate)(random.Next(0, 2));
int leftOperand = 0;
int rightOperand = 0;
int result = 0; // 存儲用戶輸入的結果
for (int i = 0; i < total; i++)
{
#region 出題
oper = (Operate)(random.Next(0, 2));
leftOperand = random.Next(1, 100);
if (oper == Operate.Subtration)
{
rightOperand = random.Next(0, leftOperand);
}
else
{
rightOperand = random.Next(0, 100 - leftOperand);
}
do
{
Console.Write("<{0}> {1} {2} {3} = ", (i + 1).ToString().PadLeft(total.ToString().Length, '0'), leftOperand.ToString().PadLeft(2, ' '), oper == Operate.Addition ? "+" : "-", rightOperand.ToString().PadLeft(2, ' '));
} while (!int.TryParse(Console.ReadLine(), out result));
#endregion

#region 判斷結果是否正确
if (oper == Operate.Addition)
{
if (result == leftOperand + rightOperand)
{
Console.Write(" ------------恭喜你,答對啦!!!\n");
t++;
}
else
{
Console.Write(" ------------很遺憾,正确答案應是:{0}!\n", (leftOperand + rightOperand).ToString().PadLeft(2, ' '));
f++;
}
}
if (oper == Operate.Subtration)
{
if (result == leftOperand - rightOperand)
{
Console.Write(" ------------恭喜你,答對啦!!!\n");
t++;
}
else
{
Console.Write(" ------------很遺憾,正确答案應是:{0}!\n", (leftOperand - rightOperand).ToString().PadLeft(2, ' '));
f++;
}
}
#endregion
}
#region 顯示考生的成績
Console.WriteLine("_______________________________________________________________");
Console.WriteLine("\n--- 本次你完成了{0} 道試題, 答對{1} 道, 答錯{2} 道!", total, t, f);
Console.Write("\n\n感謝你的參与,再測試一次嗎?(Y/N) ");
#region 判斷用戶是否原意再測試一次
try
{
if (Console.ReadLine().Substring(0, 1).ToUpper() == "Y")
{
reStart = true;
Console.WriteLine("\n\n\n\n另一組新試題:");
}
}
catch
{
}
#endregion
} while (reStart);

#endregion
}

#region 程序運行前的介紹
private static void welcome()
{
Console.WriteLine("**********************************");
Console.WriteLine("** 項目: '兩位數加減法'測試題 ***");
Console.WriteLine("** 制作: C_B_Lu ***");
Console.WriteLine("** 日期: 2007年月日 ***");
Console.WriteLine("**********************************\n");
}
#endregion

#region 創建一個基數,用于初始發隨來數
/// <summary>
/// 創建一個基數,用于初始發隨來數
/// </summary>
/// <returns></returns>
static int CreateRadix()
{
Console.Write("請隨意輸入一個數字:");
int intRadix;
if (int.TryParse(Console.ReadLine(), out intRadix))
{
return intRadix;
}
else
{
return CreateRadix();
}
}
#endregion
}
}


搜索更多相关主题的帖子: using System args Addition 
2007-06-12 13:49
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
得分:0 
支持一下!!!

IT精英如同彩票:平凡的人像5块也中不到一样普遍,努力一点你中了5元保了个本。奖金越高,机率也就越小,付出的也越多,盖茨如同500万一样稀有。虽然每天忙碌而平凡,但我努力成为精英,做梦中了500万。
2007-06-12 14:07
飙马
Rank: 5Rank: 5
来 自:马里亚纳
等 级:贵宾
威 望:15
帖 子:779
专家分:280
注 册:2007-3-28
得分:0 

共勉一下,我再发两个猜数字的,在C#50例中好像有的!


namespace 猜数字
{
class 猜数字
{
public static void Main()
{
string sTemp;
int iNum=new Random().Next()%100;
int iGuess=0,iCount=0;
Console.WriteLine ("请猜猜我想到的一到一百之间的数字.");
do
{
sTemp=Console.ReadLine (); //用sTemp来存储用户输入的数
try
{
iGuess=Int32.Parse (sTemp);
if(iGuess>iNum)
{
Console.WriteLine ("太大了.");
}
else if (iGuess<iNum)
{
Console.WriteLine ("太小了.");
}

}
catch(Exception e)
{
Console.WriteLine ("你输入的不是一个有效整数.");
}
finally
{
Console.WriteLine ("你已经猜了{0}次了.",++iCount);
}
}while(iGuess!=iNum);
}
}
}




public class guess_number
{

public static void Main()
{
int i_random=new Random ().Next (100);
int i_guess=0;
int i_count=0;
Console.WriteLine ("猜一猜这样一个随机数,它的范围是在零到一百之间.");
for(i_count=0;i_count<10;i_count++)
{
i_guess=int.Parse (Console.ReadLine ());
if(i_guess<i_random)
{
Console.WriteLine ("太小了,大一点儿好些.");
}
if(i_guess>i_random)
{
Console.WriteLine ("太大了,小一些儿好些.");
}
}
if(i_guess==i_random&&i_count!=10) //数字猜对了,并且猜数的数量不超过10
{
Console.WriteLine ("不错,不错,猜对了!");
}
else if(i_guess==i_random&&i_count==10)
{
Console.WriteLine ("在这功败垂成的时候,你猜对了,更加幸运!");
}
else if(i_count==10&&i_guess!=i_random)
{
Console.WriteLine ("对不起,你已经猜了十次,不能再猜了.");
}
Console.WriteLine (i_random);
}
}


IT精英如同彩票:平凡的人像5块也中不到一样普遍,努力一点你中了5元保了个本。奖金越高,机率也就越小,付出的也越多,盖茨如同500万一样稀有。虽然每天忙碌而平凡,但我努力成为精英,做梦中了500万。
2007-06-12 16:05
ylh_purple
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-5-31
得分:0 
  厉害
2007-06-13 21:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-146778-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.174045 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved