中诺电话售后电话:◆C#程序问题◆

来源:百度文库 编辑:高校问答 时间:2024/05/03 01:53:20
请高手帮我看下下面的程序,输出是多少?为什么?以及执行的过程,程序加载的时候是先执行2还是先执行1?谢谢了,越详细越好,
using System;
class Test
{
static int Find(int value, int[] array) //1
{
int i = 0;
while (array[i] != value)
{
if (++i > array.Length)
Console.WriteLine("can not find");
}
return i;
}
static void Main() //2
{
Console.WriteLine(Find(3, new int[] { 5, 4, 3, 2, 1 }));
}
}
【能否留个QQ号啊?我刚学习,还有很多需要向大家学习的地方。用QQ会方便一点,但是一定不会打扰到你的正常工作和休息时间,谢谢】

执行时先执行2,即Main()函数;
因此进入Main中,找到第一条语句,发现是调用Console.WriteLine(),所以此时系统先将Main的当前执行情况、执行到什么地方了等信息保存起来(系统内部完成的,你我等编程的程序员不用关心),然后转而进入Console.WriteLine()函数;
Console.WriteLine是个系统级的函数,根据实际调用语句Console.WriteLine(Find(3, new int[] { 5, 4, 3, 2, 1 })); 的参数来看,其中又要调用Find()函数,因此同样,系统要把当前Console.WriteLine执行到什么地方了保存起来,之后转而进入static int Find(int value, int[] array)里面;
然后看Find的执行过程,实际上是在array[]这个数组中查找,看有没有value这个变量里的值,从上面例子来看,就是从{5,4,3,2,1}中找看有没有3这个数,如果有,就返回它在数组中的位置(0号位置作为起始),如果没有,就输出“can not find”。具体找的过程是先定义一个变量i,让它为0,然后将array[i]的值与value变量的值进行比较,一旦相同了,就把i返回,如果不同,就把i自增1;如果i一直到超过数组的长度还没有array[i]与value一样,那么就输出can not find;
所以,如果我没看错的话,结果应该是3在{5,4,3,2,1}中的位置,也就是2。
时间关系,困了,只能说到这种程度……还有兴趣可以联系我:)248546916……

首先要明确一点,Main()是主函数,程序运行是由系统调用Main()函数开始的,所以肯定是先运行2.
Console是名字空间System下的一个类,WriteLine是他的一个对象(C#是完全面向对象的),他的作用是输出字符串,在调用Find()(因为Find()定义成静态,所以可以直接调用)时将实际参数:3和实例化整型数组new int[]{5,4,3,2,1}传递给了Find()对象的形式参数:value和int[] array.程序开始运行Find()对象中的内容.

程序应修改为:
while (array[i] == value)//应该是在array[i] == value时退出循环证明找到了,如果象你那样,循环连一次都达不成
{
if (++i > array.Length)
Console.WriteLine("can not find");
break; //一定要加上break;语句跳出循环,否则会无休止的循环下去
}

C#程序一定是从main开始执行的,这个程序返回2,也就是在数组中3的所在元素的下标,不过这个程序好像有问题,如果在数组中找不到参数1的话,会发生一个数组下标越界的异常

QQ就免了吧,MM还可以,男的就算了,麻烦死了