namespace exp_1B
{
class Program
{ public int search_bin(int key,int high)
{
int[] arry = new int[10];
int low = 0, mid; high = 10;
while (low <=high)
{
mid = ( low + high )*1/2;
if (key == arry[mid])
{
Console.WriteLine("have found the number");
return mid;
}
else if (key > arry[mid])
{
low = mid + 1;
Console.WriteLine("the number is bigger");
}
else
{
high = mid - 1;
Console.WriteLine("the number is smaller");
}
}
return 0;
}
public static void Main(string[] args)
{
Program obj_1 = new Program();
int find_num; string accept_num; int length = 10;
args = new string[20];
Console.WriteLine("请输入十个按小到大排列的整数");
for (int i = 0; i < 10; i++)
{
args[i] = Console.ReadLine();
Console.WriteLine(args[i]);
// = Int32.Parse(accept_num);
}
Console.WriteLine("please input the number you want to find");
accept_num = Console.ReadLine();
find_num = Int32.Parse(accept_num);
Console.WriteLine("the return_value is :");
obj_1.search_bin(find_num, length);
Console.WriteLine("return_value");
}
}
}
在searchb_bin 方法中 为什么 mid 的值总是10呢!从而引起数组越界的问题!!
{
class Program
{ public int search_bin(int key,int high)
{
int[] arry = new int[10];
int low = 0, mid; high = 10;
while (low <=high)
{
mid = ( low + high )*1/2;
if (key == arry[mid])
{
Console.WriteLine("have found the number");
return mid;
}
else if (key > arry[mid])
{
low = mid + 1;
Console.WriteLine("the number is bigger");
}
else
{
high = mid - 1;
Console.WriteLine("the number is smaller");
}
}
return 0;
}
public static void Main(string[] args)
{
Program obj_1 = new Program();
int find_num; string accept_num; int length = 10;
args = new string[20];
Console.WriteLine("请输入十个按小到大排列的整数");
for (int i = 0; i < 10; i++)
{
args[i] = Console.ReadLine();
Console.WriteLine(args[i]);
// = Int32.Parse(accept_num);
}
Console.WriteLine("please input the number you want to find");
accept_num = Console.ReadLine();
find_num = Int32.Parse(accept_num);
Console.WriteLine("the return_value is :");
obj_1.search_bin(find_num, length);
Console.WriteLine("return_value");
}
}
}
在searchb_bin 方法中 为什么 mid 的值总是10呢!从而引起数组越界的问题!!
解决方案 »
- C#读取XML文件(多级子节点)指定内容到datagridview中
- 请问如何用C#代码或者SQL代码关闭1433端口?
- 在线图片编辑JS代码!告诉我怎么做也行!
- winform datagrid 多层绑定ArrayList的问题。在线等。最后10分,大家原谅。
- 特殊字符如何处理?
- 【重要的企业大量数据打印问题】急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ASP.NET C#自定义分页控件代码,带转到X页及设置每页X条记录功能
- 数组输入输出
- 一个和数据搜索有关的问题!希望大家帮帮忙!谢谢!
- 诚邀c#高手
- C#中用FindWindowEx获取MID子窗体返回值总是0,另外this.Handle和FindWindowEx获得的句柄有什么区别?
- 使用Assembly 加载程序集,怎样得到得到程序集的命名空间及类名
修改为 : int low = 0, mid,high = 10; 或
int low = 0;
int mid =0;
int high = 10;
1、int low = 0, mid; high = 10; 其中high应该为9;
2、for (int i = 0; i < 10; i++)
{
args[i] = Console.ReadLine();
Console.WriteLine(args[i]);
// = Int32.Parse(accept_num);
}
其中的 Console.WriteLine(args[i]); 多余了,你已经打印过了。
3、还有一些打印部分不能达到你的要求的,具体的我就没去研究,你自己再看看吧。共同学习,共同进步!