题目:把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到大排序并打印出来。
61.54.231.245
61.54.231.9
61.54.231.246
61.54.231.48
61.53.231.249
本题目主要用到了文件、冒泡排序和字符串处理,主要代码如下:
class Program
{//文件+冒泡排序+字符串处理
static void Main(string[] args)
{
//读取ip地址
string[] str = File.ReadAllLines("IP地址.txt", Encoding.Default);
//冒泡排序
for (int i = 0; i < str.Length; i++)
{
for (int j = 0; j < str.Length - 1 - i; j++)
{
if (ToNumber(str[j]) > ToNumber(str[j + 1]))
{
string strBu = str[j];
str[j] = str[j + 1];
str[j + 1] = strBu;
}
}
}
//输出IP地址排序后的结果
for (int i = 0; i < str.Length; i++)
{
Console.WriteLine(str[i]);
}
Console.ReadKey();
}
/*Ip地址格式为:a.b.c.d
每个数字范围在0~255之间 那么我们可以把它们看成一个四位的256进制数
然后转换成十进制=a*256^3+b*256^2+c*256^1+d*256^0
然后根据对应的十进制大小排序就OK了。。*/
private static int ToNumber(string str)
{
string[] p = str.Split('.');
int sum = 0;
for (int i = 0; i < p.Length; i++)
{
//每个IP地址累加和
sum = sum * 256 + int.Parse(p[i]);
}
return sum;
}
}