会c#的高人们 帮我看一下

最初由 陪你去看龙卷风 发布
月下,其实没那么复杂
代码:
int j = 0;
int k = 0;
for (int i = 0; i < 15; i++)
{
	try{
		if (i%2 == 1)
		{
			arr[i]=odd[j];
			j++;
		}
		else if (i%2 == 0)
		{
			arr[i]=even[k];
			k++;
		}
	   }catch(Exception e)
	   {
		Console.WriteLine("Exception" );
	   }
}
Array.Reverse(arr);
foreach(int val in arr)
{
	Console.WriteLine(val.ToString());
}



你这段code过于生猛了吧
 
reverse那里可以用recursion吗?
代码:
swap (int a, int b) {
    if (b-a == 1) {
        int temp = arr[b];
        arr[b] = arr [a];
        arr[a] = temp;
    }
    else swap(a+1, b-1);
    int temp = arr[b];
        arr[b] = arr [a];
        arr[a] = temp;
}
 
最初由 陪你去看龙卷风 发布
月下,其实没那么复杂
代码:
int j = 0;
int k = 0;
for (int i = 0; i < 15; i++)
{
	try{
		if (i%2 == 1)
		{
			arr[i]=odd[j];
			j++;
		}
		else if (i%2 == 0)
		{
			arr[i]=even[k];
			k++;
		}
	   }catch(Exception e)
	   {
		Console.WriteLine("Exception" );
	   }
}
Array.Reverse(arr);
foreach(int val in arr)
{
	Console.WriteLine(val.ToString());
}

不懂,前面没有throw,catch在catch什么?
 
最初由 陪你去看龙卷风 发布
reverse那块,你没理解对
他们老师要求是
use a loop to alternately copy from the first two arrays, odd and even, into the third one,arr.
then reverse arr, don't simply print in reverse, but actually physically reverse it without copying the data,in reverse, into another array. don't make a 4th array.
不过我觉得这样很矛盾,不能copy data, 那只能用自带的array.reverse
不过用了,却无法满足into another array这个要求

.... 你太猛了,catch exception都出来了

array.reverse 是internal function (啊这个以前不知道)
不过这样有cheating的嫌疑哦:smokin:
foreach(int val in arr)也没用过哦,
不过我觉得我的reverse code满足了老师的要求。他要求的其实只是不让你new 一个array然后reverse copy进去,再pass回来,而我其实就flip了一下。

热狗是强人。偶素菜鸟

拜一下:blowzy:
 
最初由 大漠张三 发布


不懂,前面没有throw,catch在catch什么?
如果运行出错,不直接退出而输出错误,程序继续运行
 
try {} (试运行这里的code)
catch Exception e (如果运行出错,把错误储存倒e)

输出e
 
最初由 大漠张三 发布
reverse那里可以用recursion吗?
代码:
swap (int a, int b) {
    if (b-a == 1) {
        int temp = arr[b];
        arr[b] = arr [a];
        arr[a] = temp;
    }
    else swap(a+1, b-1);
    int temp = arr[b];
        arr[b] = arr [a];
        arr[a] = temp;
}

你看看我那段代码,你这个好复杂啊,如果算下来runtime要高不止一倍了

其实你就想。。。第一个和最后一个换,第2个和倒数第二个换。。
 
最初由 月下独酌 发布
int j=0,k=0;
for (int i = 0; i<15; i++)
{
if (i%2 == 1)
{
arr=odd[j];
j++;
}
else if (i%2 == 0)
{
arr=even[k];
k++;
}
}



代码:
bool finished = true;
int j = 0
while (!finished) {
    for (int i = 0; i < 8; i++)
        arr[j] = odd[i];
    arr[j++]=even[i];
    j++;
    if (j  == 15) finished = true;
}
 
最初由 月下独酌 发布


你看看我那段代码,你这个好复杂啊,如果算下来runtime要高不止一倍了

其实你就想。。。第一个和最后一个换,第2个和倒数第二个换。。

:cool: :cool:

嗯:blowzy:
 
楼上的代码不干活,肯定的
逻辑错误
 
代码:
int j=0;
for (int i = 0;i<15;i++)
{
	arr[i] = odd[j];
	arr[++i] = even[j];
	j++;
}

i++ 是先读i, 再加1
++i 是先加1,在读i
就是说,如果i = 1
arr[i++] = {arr; i = i+1}
arr[++i] = { i = i+1; arr}
 
最初由 月下独酌 发布


.... 你太猛了,catch exception都出来了

array.reverse 是internal function (啊这个以前不知道)
不过这样有cheating的嫌疑哦:smokin:
foreach(int val in arr)也没用过哦,
不过我觉得我的reverse code满足了老师的要求。他要求的其实只是不让你new 一个array然后reverse copy进去,再pass回来,而我其实就flip了一下。

热狗是强人。偶素菜鸟

拜一下:blowzy:
估计他们老师也不懂:D
 
最初由 月下独酌 发布
楼上的代码不干活,肯定的
逻辑错误


sorry, my bad


代码:
int j = 0;
int i = 0;
while ( j < 15) {
    arr[j] = odd[i];
    j++;
    arr[j]=even[i];
    j++;
    i++;
}
 
后退
顶部