想写段关于排序的程序,要求实现对任意输入的不可知个数的整数数组进行排序,我写的程序如下:
using System;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n=0;
int[] num=new int[0];
Console.WriteLine("请依次输入要比较的数字并回车,直接输入00为结束输入");
while (Console.ReadLine() != "0")//接收数字输入
{
Array.Resize<int>(ref num, n + 1);
num[n] = int.Parse(Console.ReadLine());
n++;
}
Console.WriteLine(n);
//比较大小
for (int i = 0; i < n; i++)
{
for (int j = i+1; j < n; j++)
{
int temp;
if (num[i] > num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//从小到大输出
Console.WriteLine("排序的结果为:\n");
for (int i = 0; i < n; i++)
{
Console.Write(" " + num[i]);
}
System.Threading.Thread.Sleep(10000);
}
}
}程序无法达到要求,请大家帮忙改下,另外,最后一句语句:System.Threading.Thread.Sleep(10000);是什么意思?
using System;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n=0;
int[] num=new int[0];
Console.WriteLine("请依次输入要比较的数字并回车,直接输入00为结束输入");
while (Console.ReadLine() != "0")//接收数字输入
{
Array.Resize<int>(ref num, n + 1);
num[n] = int.Parse(Console.ReadLine());
n++;
}
Console.WriteLine(n);
//比较大小
for (int i = 0; i < n; i++)
{
for (int j = i+1; j < n; j++)
{
int temp;
if (num[i] > num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//从小到大输出
Console.WriteLine("排序的结果为:\n");
for (int i = 0; i < n; i++)
{
Console.Write(" " + num[i]);
}
System.Threading.Thread.Sleep(10000);
}
}
}程序无法达到要求,请大家帮忙改下,另外,最后一句语句:System.Threading.Thread.Sleep(10000);是什么意思?
解决方案 »
- 请问,怎样获取下一个网页的地址
- 求助!DataGridView使用问题!
- 水晶报表中如何打印当前页
- sql分组求和
- 用WIN 2003 + VS 2008 开发的 WIN FORM 系统(.NET 2.0)发布到WINXP 下出现以下很多问题。大家帮忙!!!
- c#.net 网路流传输图片问题
- 不同NAT网络中的机器要聊天只能通过服务器转发消息吗?
- .net 有没有提供 打开并显示,多页的tif文件 的控件(在vb中是使用 kedak的imgedit .net 中是使用什么控件)
- 如何判断DataTable执行到第一条记录?
- C#中支持播放音频的格式都有什么?
- 请看看这段代码,为什么结果都是100
- 一个简单的遍历问题,新人!
using System;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n=0;
int[] num=new int[0];
Console.WriteLine("请依次输入要比较的数字并回车,直接输入00为结束输入");
while (Console.ReadLine() != "00")//接收数字输入
{
Array.Resize <int>(ref num, n + 1);
num[n] = int.Parse(Console.ReadLine());
n++;
}
//比较大小
for (int i = 0; i < n; i++)
{
for (int j = i+1; j < n; j++)
{
int temp;
if (num[i] > num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//从小到大输出
Console.WriteLine("排序的结果为:\n");
for (int i = 0; i < n; i++)
{
Console.Write(" " + num[i]);
}
System.Threading.Thread.Sleep(10000);
}
}
}
Array.Resize <int>(ref num, n + 1); 请问你这个在这里面用有什么意义?第一你用泛型没必要,第二你用ref同样也是多余
System.Threading.Thread.Sleep(10000);这个是线程停留十秒的意思,也没有什么意义,没有多线程,加这只不过为了在窗口中停留十秒,那不如用Console.ReadLine()呢如果你只是想要这样的功能ArrayList已经为你定制好了,只需要是int类型的就OK了。
而如果你这样写也无可厚非,关键点在于,第一、对接受字符的处理
第二、算法的实现(始终感觉冒泡不好,呵呵)。你的算法没有问题,输出没有问题。
如果你把我上面提到的都弄了,那么毫无疑问,你的接收字符的地方有问题了
2 for(int i=0; i<arr.Count; i++);//不可用foreach
static void Main()
{
Console.WriteLine("请依次输入要比较的数字");
string str = Console.ReadLine();
string [] strr= str.Split(new char[]{'\x20'});
//比较大小
int[] num = new int[strr.Length];
for (int i = 0; i < strr.Length; i++)
{
num[i] = Convert.ToInt32(strr[i]);
}
for (int i = 0; i < strr.Length; i++)
{
for (int j = i + 1; j < strr.Length; j++)
{
int temp;
if (num[i] > num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//从小到大输出
Console.WriteLine("排序的结果为:\n");
for (int i = 0; i < strr.Length; i++)
{
Console.Write(num[i]+" ");
}
//或者Console.ReadLine();目的只是想看到窗口而已
System.Threading.Thread.Sleep(10000);
}
static void Main()
{
Console.WriteLine("请依次输入要比较的数字");
string str = Console.ReadLine();
string [] strr= str.Split(new char[]{'\x20'});
//比较大小
int[] num = new int[strr.Length];
for (int i = 0; i < strr.Length; i++)
{
num[i] = Convert.ToInt32(strr[i]);
}
for (int i = 0; i < strr.Length; i++)
{
for (int j = i + 1; j < strr.Length; j++)
{
int temp;
if (num[i] > num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//从小到大输出
Console.WriteLine("排序的结果为:\n");
for (int i = 0; i < strr.Length; i++)
{
Console.Write(num[i]+" ");
}
//或者Console.ReadLine();目的只是想看到窗口而已
System.Threading.Thread.Sleep(10000);
}
{
Console.WriteLine("请依次输入要比较的数字");
string str = Console.ReadLine();
string [] strr= str.Split(new char[]{'\x20'});//把输入按空格进行分开
//转化为int类型的数组
int[] num = new int[strr.Length];
for (int i = 0; i < strr.Length; i++)
{
num[i] = Convert.ToInt32(strr[i]);
}
//对数组进行冒泡排序
for (int i = 0; i < strr.Length; i++)
{
for (int j = i + 1; j < strr.Length; j++)
{
int temp;
if (num[i] > num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//从小到大输出
Console.WriteLine("排序的结果为:\n");
for (int i = 0; i < strr.Length; i++)
{
Console.Write(num[i]+" ");
}
//或者Console.ReadLine();目的只是想看到窗口而已
System.Threading.Thread.Sleep(10000);
}
{
Array.Resize <int>(ref num, n + 1);
num[n] = int.Parse(Console.ReadLine());
n++;
} 这段出现2次 Console.ReadLine()录入数字
而你第一个数字并没有放入数组中 而是第二数字放入数据库中以此类推 所以你排序下来只有你输入的长度一半!
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n = 0;
string a;
int[] num = new int[0];
Console.WriteLine("请依次输入要比较的数字并回车,直接输入00为结束输入");
do//接收数字输入
{
a = Console.ReadLine();
Array.Resize<int>(ref num, n + 1);
num[n] = int.Parse(a);
n++;
}while(!a.Equals("100"));
Console.WriteLine(n);
//比较大小
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
int temp;
if (num[i] > num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
//从小到大输出
Console.WriteLine("排序的结果为:\n");
for (int i = 0; i < n; i++)
{
Console.Write(" " + num[i]);
}
System.Threading.Thread.Sleep(10000);
}
}
} 你自己想哈whlie的条件哈!!