苏飞论坛

标题: 求助啊,各位大大 [打印本页]

作者: weille52313    时间: 2013-9-24 23:03
标题: 求助啊,各位大大
自学了一个星期了,今晚起劲试了一下自己编,各位大大,为什么我求的最大值求不出来?每次输入最后一个数,最大值就是最后一个数的值!查了好久没查出原因,可能我的概念还不是很懂!求求助啊!


[code=csharp]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 返回值
{
    class Program
    {
        static void Main(string[] args)
        {
            int temp = 0;
            int Num = 0;
            try
            {
                Console.WriteLine("请你输入你要比较数值大小的数据个数!");
                Num = Convert.ToInt32(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("你输入的数据有误,请重新输入");
                Num = Convert.ToInt32(Console.ReadLine());

            }
            for (int i = 0; i < Num; i++)
            {
                try
                {
                    Console.WriteLine("请你输如第{0}个数值",i+1);
                    int number = Convert.ToInt32(Console.ReadLine());
                    int max = ZMAX(Num, number, temp);
                    if (i == Num-1)
                    {
                        Console.WriteLine("综上所述,最大值为{0}", max);
                        Console.ReadKey();
                        break;
                    }

                }
                catch
                {
                    Console.WriteLine("你输入的数据有误,请重新输入");
                    i--;
                    continue;
                }
            }

        }

        public static int ZMAX(int Num,int number,int temp)
        {

                if (number > temp)
                {
                    temp = number;
                }
            return temp;

        }
    }


}
[/code]


作者: flychen    时间: 2013-9-25 14:10
逻辑出错,你每次求得最大值没运用到去比较。把max定义成全局变量,然后这样写max = ZMAX(Num, number, max);
作者: flychen    时间: 2013-9-25 14:11
逻辑出错,你每次求得最大值没运用到去比较。把max定义成全局变量,然后这样写max = ZMAX(Num, number, max);

作者: 站长苏飞    时间: 2013-9-25 14:15
temp默认是0 你每次输入的数据肯定是大致 0的,所以一直是最后一个数,看下面修改之后的是正确 的
[code=csharp]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 返回值
{
    class Program
    {
        static void Main(string[] args)
        {
            int temp = 0;
            int Num = 0;
            try
            {
                Console.WriteLine("请你输入你要比较数值大小的数据个数!");
                Num = Convert.ToInt32(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("你输入的数据有误,请重新输入");
                Num = Convert.ToInt32(Console.ReadLine());

            }
            for (int i = 0; i < Num; i++)
            {
                try
                {
                    Console.WriteLine("请你输如第{0}个数值",i+1);
                    int number = Convert.ToInt32(Console.ReadLine());
                    temp= ZMAX(number, temp);
                  }
                catch
                {
                    Console.WriteLine("你输入的数据有误,请重新输入");
                    i--;
                    continue;
                }
            }           Console.WriteLine("综上所述,最大值为{0}", temp);
        }

        public static int ZMAX(int number,int temp)
        {
                if (number > temp)
                {
                    temp = number;
                }
            return temp;

        }
    }
}[/code]


作者: weille52313    时间: 2013-9-25 15:50
本帖最后由 weille52313 于 2013-9-25 15:51 编辑

瞬间明白了,原来逻辑错误!唉,献丑了,基础没扎实啊,亲!!这样的道理就好像是循环求和那样,明明要加上上一个sum的值才能算出结果,结果你一直给它初始化,所以就一直加加加,最后结果就是最后你加数!!还有,我还想问一个问题,在现实过程中,我这样定义一个类的方法,有必要吗?或者说我是不是最好先在我定义的类的方法上计算出来或者得到的结果再返回到main方法中,还是像我上面定义类的方法一样!我现在总感觉如果按照我上面定义的方法来做题,有点像自己挖了一个坑后,自己填上的感觉!@站长苏飞 @flychen
作者: 站长苏飞    时间: 2013-9-25 16:47
功能比较小,谈不上归划,如果真要分的话,就安功能分一下,循环在Main里,计算单独出来,输入也可以单独写方法,不过以现在的情况只要是把计算部分提取出来就够
作者: z920106140    时间: 2013-10-12 16:54
[code=csharp]                string classid = Request.QueryString["id"];
                LoadBind(classid);
                if (Session["UserID"] != null)
                {
                    ShowUserFatie();
                }
                else
                {
                    CloseUserFatie();
                }[/code]




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4