題目:把以下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;
}
}