题目要求如下:找出输入的一连串整数中的最大和最小值。程序首先应提醒用户指定要输入多少个值,并要求用户确认。如果没有确认需要重新输入一次。
我可以写出确认的代码:
using System;
     class Program
    {
        static void Main(string[] args)
        {
            int i;
            char a;            do
            {
                Console.WriteLine("你想比较几个数字?请输入:");
                i = int.Parse(Console.ReadLine());
                Console.WriteLine("你想输入{0}个数字来比较大小。\n确认请输入“Y”,取消请输入“N”。", i);
                a = char.Parse(Console.ReadLine());
            }
            while (a == 'N');
        }
    }接下来要做的事情就是比较输入的数字的大小。
            int data, max = -2147483648, min = 2147483647;
            for (int j = 0; j <= i; ++j)
            { 
                data=int.Parse(Console.ReadLine());
                max=(data>=max)?data:max;
                min=(data<=min)?data:min;
            
            }
            Console.WriteLine("最大的数是{0},最小的数是{1}。", max, min);
            Console.ReadLine();
可是我的头现在已经有两个大了!这个程序没有调试成功,因为执行完do以后程序就中断了。所以我也不知道我下面的for语句写的对不对。请大家帮我一下,这个程序该如何完善?

解决方案 »

  1.   

    什么叫程序中断?是执行完后自己关掉了对不对?如果是这样最后加一句Console.ReadLine()就会停在那里
      

  2.   

    教你一个最简单的方法:
    添加Microsoft.JScript引用,然后
    Console.WriteLine(Microsoft.JScript.MathObject.max(123, 1232, 345456, 456456, 56768, 9));//里面的数你可以随便添加
      

  3.   

    using System; 
        class Program 
        { 
            static void Main(string[] args) 
            { 
                int i; 
                char a; 
    Console.WriteLine("你想比较几个数字?请输入:"); 
                    i = int.Parse(Console.ReadLine()); 
               int[] number=new number[i];
          for(int j=0;j<i;j++)
    {
     Console.WriteLine("确认请输入“Y”,取消请输入“N”。", i); 
                    a = char.Parse(Console.ReadLine()); 
                if(a=='N'||a=='n')
                 break;
                 else
                    number[j]=Convert.ToInt32(a);//
    这里要注意几点。一个是输入的不是数字的判断,一个是number[]的下标问题
    }        } 你逻辑有问题
    给你个大概意思
    自己修改吧。
        } 
      

  4.   

     不晓得你要干什么, 我根据你的意思改了程序.
     测试过没有问题.
     你试试吧!
     
     static void Main(string[] args) 
            { 
                int i; 
                char a; 
                    Console.WriteLine("你想比较几个数字?请输入:"); 
                    i = int.Parse(Console.ReadLine()); 
                    Console.WriteLine("你想输入{0}个数字来比较大小。\n确认请输入“Y”,取消请输入“N”。", i); 
                    a = char.Parse(Console.ReadLine());
                    if (a == 'N')
                    {
                        return;
                    }
                    int data,max = -2147483648,min = 2147483647;
                    for (int j = 0; j <i; j++)
                    {
                        data = int.Parse(Console.ReadLine());
                        max = (data >= max) ? data : max;
                        min = (data <= min) ? data : min;
                    }
                    Console.WriteLine("最大的数是{0},最小的数是{1}。", max, min);
                    Console.ReadLine();             
               
            } 
     
      

  5.   

    using System; 
        class Program 
        { 
            static void Main(string[] args) 
            { 
                int i; 
                char a; 
    Console.WriteLine("你想比较几个数字?请输入:"); 
                    i = int.Parse(Console.ReadLine()); 
              int[] number=new number[i]; 
          for(int j=0;j <i;j++) 

    Console.WriteLine("确认请输入“Y”,取消请输入“N”。", i); 
                    a = char.Parse(Console.ReadLine()); 
                if(a=='N'||a=='n') 
                break; 
                else 
                    number[j]=Convert.ToInt32(a);// 
    这里要注意几点。一个是输入的不是数字的判断,一个是number[]的下标问题 
    }         } 你逻辑有问题 
    给你个大概意思 
    自己修改吧。 
        } 
      

  6.   

    比大小不用那么费劲吧?
    其它的逻辑自己整理吧static void Main(string[] args)
            {
                int[] ary = new int[] { 1, 2, 0, 4,3 };
                ArrayList al = new ArrayList();
                al.AddRange(ary);
                al.Sort();
                int min = Convert.ToInt32(al[0]);
                int max = Convert.ToInt32(al[al.Count - 1]);            Console.WriteLine(min);
                Console.WriteLine(max);
                
                Console.ReadKey();
            }
      

  7.   

    其实我的程序写对了,只是我自己没有意识到而已。我说的程序中断是指我忘了加入提示语句了,本来应该输入数字的,但是我没有意识到。当然,代码中有bug的。
    第一个bug,对于多少个数字的确认,只判断了a == 'N',只要不是N,输入其他什么字符都可以的,不一定是Y都可以确认。第二个bug,在for循环中,应该是j<i,而不是j<=i,否则的话会多循环一次。比如i=5,实际上会输入6个数字才开始判断。
    目前不知道如何去除第一个bug,但是第二个bug bao_yan帮我指出来了,所以给了他15分,其他我觉得有帮助的我都意识了一下。其实我是新手,你们的回答太高深了,我看不懂,所以……我更改了部分代码,如下:
    using System; 
        class Program 
        { 
            static void Main(string[] args) 
            { 
                int i; 
                char a;             do 
                { 
                    Console.WriteLine("你想比较几个数字?请输入:"); 
                    i = int.Parse(Console.ReadLine()); 
                    Console.WriteLine("你想输入{0}个数字来比较大小。\n确认请输入“Y”,取消请输入“N”。", i); 
                    a = char.Parse(Console.ReadLine()); 
                } 
                while (a == 'N');
                
                Console.WriteLine("请输入{0}个你想比较大小的数字。", i);             int data, max = -2147483648, min = 2147483647;
                for (int j = 0; j < i; ++j)
                {
                    data = int.Parse(Console.ReadLine());
                    max = (data >= max) ? data : max;
                    min = (data <= min) ? data : min;            }
                Console.WriteLine("最大的数是{0},最小的数是{1}。", max, min);
                Console.ReadLine();         } 
        }