s_ki11 发表于 2013-1-29 23:54:53

从键盘上输入两个整数,由用户回答它们的和,差,积,...

本帖最后由 绯色の胖子 于 2015-6-12 18:12 编辑

题目:从键盘上输入两个整数,由用户回答它们的和,差,积,商和取余运算结果,并统计出正确答案的个数。

代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2
{
    class Program
    {
      static void Main(string[] args)
      {
            Console.WriteLine("if you want to exit this program,press enter directly.");
            try { ToDo(); }
            catch (Exception ex) { Console.WriteLine(ex); }
      }

      public static void ToDo()
      {
            int a = 0;
            int b = 0;
            int c = 0;
            int result1=0;
            int result2=0;
            int i=0;
            
            do
            {   
                Console.WriteLine("input first num");
                a = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("input second num:");
                b = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("input operator:1=plus,2=minuse,3=multiply,4=devide");
                c = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("input result:");
                result1 = Convert.ToInt32(Console.ReadLine());
                switch (c)
                {
                  case 1:
                  result2 = a + b;
                  break;

                  case 2:
                  result2 = a - b;
                  break;
                  
                  case 3:
                  result2 = a * b;
                  break;   
               
                  case 4:
                  result2 = a / b;
                  break;
                  default :
                  break;
                }
                if (result1 == result2)
                {
                  i++;
                }
                Console.WriteLine("correct time is {0}", i);
            } while (i>0);
            
      }
    }
}


纯自学……没老师……
求建议,求优化!

s_ki11 发表于 2013-1-29 23:55:36

本来想做个枚举来处理加减乘除的……
可不会从键盘获取……求教!

Mr_blueCold 发表于 2013-1-30 14:18:15

其实这样就可以了,如果你是打算换成输入“1+2”然后猜答案的话,会更麻烦,因为你读入的是字符串,你还需要判断那部分属于数字,哪部分属于运算符。对于初学者来说可能麻烦点,如果你学过正则表达式的话可以用正则表达式来做,会容易一点。当然我也是属于菜鸟等级的,所以也不能提供多大的帮助

Mr_Alex 发表于 2013-1-30 14:25:13

挺好的,只是,你的循环的跳出条件是不是有问题~~

如果i>0就一直循环 ?那岂不是只要回答正确一个,就要无限次的回答了 @20#

s_ki11 发表于 2013-1-30 14:44:07

Mr_Alex 发表于 2013-1-30 14:25 static/image/common/back.gif
挺好的,只是,你的循环的跳出条件是不是有问题~~

如果i>0就一直循环 ?那岂不是只要回答正确一个,就要无 ...

啊……没打算让他跳出……应该是1>0就一直循环……

Mr_Alex 发表于 2013-1-30 14:46:29

s_ki11 发表于 2013-1-30 14:44 static/image/common/back.gif
啊……没打算让他跳出……应该是1>0就一直循环……

噗。。。有这样的么 程序一打开就不打算关闭了 ?

s_ki11 发表于 2013-1-30 14:48:17

Mr_Alex 发表于 2013-1-30 14:46 static/image/common/back.gif
噗。。。有这样的么 程序一打开就不打算关闭了 ?

程序显示的第一行话是……
Console.WriteLine("if you want to exit this program,press enter directly.")

不为己身的栄光 发表于 2013-1-31 00:34:44

建议用窗口做做看C#窗口还是很容易的

Mr_blueCold 发表于 2013-2-1 00:56:03

s_ki11 发表于 2013-1-30 14:44 static/image/common/back.gif
啊……没打算让他跳出……应该是1>0就一直循环……

LZ的程序中已经使用了try,而convert.toint32()这个方法当你直接输入回车或者其他不是数字的字符串时会直接抛出异常,从而执行catch里面的语句,所以是可以跳出的。而程序最开始部也说也直接输入回车就可以跳出了么?我看程序的时候以为LZ有注意到这点,但看评论好像没有注意?这个点挺重要的,值得关注一下啊LZ。这个程序利用这点退出我觉得还是挺巧妙的。

Mr_blueCold 发表于 2013-2-1 01:17:13

如果LZ是用winform做的话就会简单点,用控制台的话差不多就这样..当然也也可以在每次循环开始的时候询问是否要退出,是的话就跳出循环

2012好想回家 发表于 2013-2-2 17:04:38

应该要判断输入的是否是int整形吧~
这个应该很容易想到o(* ̄▽ ̄*)o

老虚__颜艺森赛 发表于 2013-2-4 00:46:53

把加减乘除封成4个方法,用一个get方法来设置入参和选择的运算

基于委托、表驱动之类的去取运算方法,从而去点switch块,这样不是更nice么

s_ki11 发表于 2013-2-5 16:28:56

2012好想回家 发表于 2013-2-2 17:04 static/image/common/back.gif
应该要判断输入的是否是int整形吧~
这个应该很容易想到o(* ̄▽ ̄*)o

想到了 求方法 。

s_ki11 发表于 2013-2-5 16:39:18

老虚__颜艺森赛 发表于 2013-2-4 00:46 static/image/common/back.gif
把加减乘除封成4个方法,用一个get方法来设置入参和选择的运算

基于委托、表驱动之类的去取运算方法,从而 ...

嗯!可惜还不会用get!

2012好想回家 发表于 2013-2-5 18:22:14

s_ki11 发表于 2013-2-5 16:28 static/image/common/back.gif
想到了 求方法 。

只要在if里判断convert.Toint32(num) 能不能成功就可以了
页: [1] 2 3 4 5
查看完整版本: 从键盘上输入两个整数,由用户回答它们的和,差,积,...