黑马程序员技术交流社区

标题: 帮我看下程序怎么改 [打印本页]

作者: 穆玉明    时间: 2013-6-12 15:17
标题: 帮我看下程序怎么改
本帖最后由 穆玉明 于 2013-6-12 22:43 编辑

//重复让用户输入一个数,判断是否是质数,输入q结束
        static void Main(string[] args)
        {
           string  input="";

           int number = 0;
            bool reasult;
            do
            {   Console.WriteLine("请输入一个正数");
                input = Console.ReadLine();
                if (input=="q")
                {
                    Console.WriteLine("程序结束");
                    break;
                }
                try
                {
                     
                    number=Convert.ToInt32(Console.ReadLine());
                    reasult=ZhiShu(number);
                    if (reasult==true)
                    {
                        Console.WriteLine("{0}是质数",number);
                    }
                    else
                    {
                        Console.WriteLine("{0}不是质数",number);
                    }
                }
                catch
                {
                    Console.WriteLine("您的输入有误,请重新输入");
                    continue;
                }
            }while(true);           
            Console.ReadKey();
        }
        public static bool ZhiShu(int number)
        {
            for (int i = 2; i < number;i++ )
            {//不能被自身或者1整除的数,由于i不可能等于number
                if (number%i==0)
                {
                    return false;//条件一旦成立,说明不是质数了
                }
            }
            return true;
        }



具体问题;我输入内容得输入两次才能判断   怎么实现我输入一次就行
作者: ljh4282158    时间: 2013-6-12 15:31
   try
            {
                string input = "";

                input = Console.ReadLine();
                if (input == "q")
                {
                    Console.WriteLine("程序结束");

                }
                int number = 0;
                bool reasult;
                do
                {
                    Console.WriteLine("请输入一个正数");



                    number = Convert.ToInt32(Console.ReadLine());
                    reasult = ZhiShu(number);
                    if (reasult == true)
                    {
                        Console.WriteLine("{0}是质数", number);
                    }
                    else
                    {
                        Console.WriteLine("{0}不是质数", number);
                    Console.WriteLine("您的输入有误,请重新输入");
                    continue;
                    }


                  


                } while (true);
                Console.ReadKey();
            }
            catch (Exception)
            {

                Console.WriteLine("退出程序");
            }

           
        }

        public static bool ZhiShu(int number)
        {
            for (int i = 2; i < number; i++)
            {//不能被自身或者1整除的数,由于i不可能等于number
                if (number % i == 0)
                {
                    return false;//条件一旦成立,说明不是质数了
                }
            }
            return true;
        }


修改了下。可以判断是不是是质数了。  那个 输入 P 退出的我不知道
    所以用了个 try  catch  后 输入的是字母就退出程序
作者: 胡章诚    时间: 2013-6-12 16:07
我做出的修改:
1、将Console.ReadLine()改为input
2、加了一个 if, 判断 number是否为正数
3、对zhishu()函数做了修改,确定1不是质数

代码如下:
static void Main(string[] args)
        {
            string input = "";

            int number = 0;
            bool reasult;
            do
            {
                Console.WriteLine("请输入一个正数");
                input = Console.ReadLine();
                if (input == "q")
                {
                    Console.WriteLine("程序结束");
                    break;
                }
                try
                {

                    number = Convert.ToInt32(input);                    //将Console.ReadLine()改为input
                    if (number > 0)                //判断number是不是正数
                    {
                        reasult = ZhiShu(number);
                        if (reasult == true)
                        {
                            Console.WriteLine("{0}是质数", number);
                        }
                        else
                        {
                            Console.WriteLine("{0}不是质数", number);
                        }
                    }
                    else
                    {
                        Console.WriteLine("对不起,您输入的不是正数");
                        continue;
                    }
                    
                }
                catch
                {
                    Console.WriteLine("您的输入有误,请重新输入");
                    continue;
                }
            } while (true);
            Console.ReadKey();
        }
        public static bool ZhiShu(int number)
        {
            if (number == 1)                        //1不是质数,也不是合数
                return false;
            for (int i = 2; i < number; i++)
            {//不能被自身或者1整除的数,由于i不可能等于number
                if (number % i == 0)
                {
                    return false;//条件一旦成立,说明不是质数了
                }
            }
            return true;
        }

作者: 李云飞    时间: 2013-6-12 17:04
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 质数
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("请您输入一个数:");
                string str = Console.ReadLine();
                if ("q" == str)
                {
                    Console.WriteLine("您输入的数字为q,请按任意键退出程序....");
                    break;
                }
                int number;
                if (int.TryParse(str, out number) == false)
                {
                    Console.WriteLine("您输入的数不合法,请重新输入");
                    continue;
                }

               bool flag = isZhiShu(number);

                    if(flag)
                        Console.WriteLine("您输入的数字{0},是质数", number);

                    else
                        Console.WriteLine("您输入的数字{0},不是质数", number);              
            }
            Console.ReadKey();
        }
        //判断是否是质数
        static bool isZhiShu(int a)
        {
            bool flag = true;
            for (int i = 2; i < a; i++)
            {
                if (a % i == 0)
                {
                    flag = false;
                    break;
                }
            }
            return flag;
        
        }
    }

}
你可以参考下,如有不妥请指出。谢谢
作者: 蔓越莓    时间: 2013-6-12 19:10
输入两次才判断是因为在 number=Convert.ToInt32(Console.ReadLine());……这里再次Console.Readline了一次。可以把这里换成number = Convert.ToInt32(input);就好了

搜狗截图_2013-06-12_19-05-31.png (20.61 KB, 下载次数: 0)

搜狗截图_2013-06-12_19-05-31.png

作者: 江湖一浪人    时间: 2013-6-12 19:17
你的代码能实现题目所述的功能。      具体问题;我输入内容得输入两次才能判断   怎么实现我输入一次就行????这句话不懂!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2