C#基础2——②类型转换(Parse, tryParse),数组求最大值&最小值,数组排序(冒泡排序,正常排序),数组的联系及扩展,字符串数组练习,数组的反转练习

一、类型转换

string s = Console.ReadLine();
int numbers = Convert.ToInt32("4");

第二行代码要用int 类型的变量来接收,也可以说,这个方法的返回值是int类型的

若想要把用户输入的字符串(string)转换成double类型的

double douNum = double.Parse("45.5");//返回值是double类型的

把用户输入的字符串(string)转换成int类型的int.tryParse

int intNum =0;
bool result = int.tryParse(Console.ReadLine(),out intNum);

第二行代码在尝试将 用户输入的字符串 转换成 int类型 的数据
若result 结果为 true,则说明转换成功
若result 结果为false,则说明转换失败
这行代码不会出现异常

实例——一次语文测试后,老苏让班长统计每一个学生的成绩并计算全班(全班共5人)的平均成绩,然后把所有成绩显示出来

Console.WriteLine("请输入班级人数");
int number = 0;
int sum =0;
if (int.TryParse(Console.ReadLine(), out number))
{
	int[] scores = new int[number];//声明一个数组用来存放成绩,一个人一个人的输如

	for(int i=0; i<scores.Length; i++)
	{
		Console.WriteLine("请输入第{0}个人的成绩", i+1);
		scores[i] = int.Parse(Console.ReadLine());
		//把用户输入的成绩转换为int类型并存到数组中

		sum += scores[i];//求和
	}
	Console.WriteLine("总成绩为{0},平均成绩为{1}",sum, sum/scores.Length);
}
else
{
	Console.WriteLine("输入有误,");
}
Console.ReadKey();


二、数组相关知识

1、求最大值

一般就最大值用临时变量,每一个值都和临时变量作比较
除此以外,当所比较的值中有负数时,temp的初始值不能为0

int[] numbers = new int[] {-1,-98,-56};
int temp = int.MinValue;//当所比较的值中有负数时,temp的初始值不能为0

for(int i = 0; i < numbers.Length; i++) //numbers 的  length  指的就是数组的长度
{
	if(numbers[i] > temp)//每一个值都和临时变量作比较
	{
		temp = numbers[i];//若大于临时变量,则将该值赋给temp
	}
}
Console.WriteLine("最大值为{0}", temp);
Console.ReadKey();

2、求最大值和最小值

int[] nums = new int[] {2,43,2,65,-23,76,87,32,-90};

int min = int.MaxValue;//最小值
int max = int.MinValue;//最大值

for (int i = 0; i < nums.Length; i++)
{
	if(nums[i]>max)
	{
		max = nums[i];//求最大值
	}

	if(nums[i]<min)
	{
		min = nums[i];//求最小值
	}
}

Console.WriteLine("最大值为{0}",max);
Console.WriteLine("最小值为{0}",min);

Console.ReadKey();

3、数组的排序

①冒泡排序

int[] nums = new int[] {98,54,54,322,43,23};

int temp = 0;

for(int j = 0;j < nums.Length - 1; j++)
{
	for(int i = 0; i < nums.Length - 1 - j; i++)
	{
		if(nums[i]>nums[i + 1])
		{
			temp = nums[i];
			nums[i] = nums[i + 1];
			
			nums[i + 1] = temp;
		}
	}	
}

for(int i = 0; i < nums.Length; i++)
{
	Console.Write(nums[i] + "\t");//将数组再遍历一遍,把数都显示出来就可以了
}
Console.ReadKey();

②正常排序

int[] nums = new int[] {2,43,3,1,76};

Array.Sort(nums);//Array 是类,Sort方法,进行排序
// Array.Reverse(nums);//这个方法是  反转,将前一步的结果进行反转

 //从小到大排序
for(int i = 0; i < nums.Length - 1; i++)
{
	Console.Write(nums[i] + "\t");
}
Console.ReadKey();

Array.Sort(nums);//Array 是类,Sort方法,将nums数组中的数进行排序

Array.Reverse(nums); 这个方法是 反转,将前一步的结果进行反转

③倒着输出——(快捷键-----forr)

int[] nums = new int[] {2,43,3,1,76};
//倒着输出
for(int i = nums.Length - 1; i >= 0; i--)
{
	Console.Write(nums[i] + "\t"); 
}
Console.ReadKey();

4、数组的联系

计算一个整数数组的所有元素的和

static void Main(string[] arge)
{
	int[] numbers = new int[] {1,2,3,4};

	Program.SumArray(numbers);
	Console.ReadKey();
}	
public static void SumArray(int[]nums)
{
	int sum = 0;//求和
	for(int i = 0; i<nums.Length; i++)
	{
		sum += nums[i];
	}
	Console.WriteLine("和为{0}", sum);
}	

5、数组的联系扩展

从一个整数数组中取出最大的整数,最小整数,总和,平均值 & 改方法后的代码

static void Main(string[] args)
{
	//从一个整数数组中取出最大的整数,最小整数,总和,平均值

	//int[] nums = new int[] { -12, 90, -56, 89,0,345 };
    //int max = int.MinValue;//求最大值的变量
    //int min = int.MaxValue;//求最小值的变量

    //int sum = 0;//求和
    //for (int i = 0; i < nums.Length; i++)
    //{
    //    if (nums[i]>max)//求最大值
    //    {
    //        max = nums[i];
    //    }

    //    if (nums[i]
    //    {
    //        min = nums[i];
    //    }
    //    sum += nums[i];//求和
    //}

    //Console.WriteLine("和是{0},最大值是{1},最小值是{2},平均值是{3}",sum,max,min,sum/nums.Length);

    //Console.ReadKey();	

	Program.ArraySort();//调用类中的方法
	Console.ReadKey();
}

//改方法
public static void ArraySort()
{
	int[] nums = new int[] {-12,90,-56,89,0,345};
	int max = int.MaxValue;//求最大值的变量
	int min = int.MinValue;//求最小值的变量

	int sum =0//求和
	for(int i = 0;i < nums.Length; i++)
	{
		if(nums[i]> max)//求最大值
		{
			max = nums[i];
		}
	
		if(nums[i]<min)//求最小值
		{
			min = nums[i];
		}
		sum += nums[i]; //求和
	} 
}


6、字符串数组练习

①数组里面都是人的名字,分割成:例如:老杨|老苏|老邹
(老杨,老苏,老邹,老虎,老牛,老蒋,老王,老马)

static void Main(string[] args)
{
	string[] names = new string[] {"老杨","老苏","老邹","老虎","老牛","老蒋", "老王","老马"};
	string str = "";
	//减 1 的原因是 最后得老马 不需要 |,因此循环的时候,就不循环到 老马 了
	for(int i = 0; i < names.Length - 1; i++)
	{
		str += names[i] + "|";
	}
	//最后一个 老马后面不需要|
	Console.WriteLine(str + names[names.Length - 1]);
	Console.ReadKey();
}

改方法

static void Main(string[] args)
{
	string[] names = new string[] {"老杨","老苏","老邹","老虎","老牛","老蒋", "老王","老马"};
	//实现只要传过来一个数组,都可以进行拼接,则括号内需要写参数
	Program.AddName(names);
	Console.ReadKey();
}

public static void AddName(string[]names)
{
	string str = "";
	for(int i = 0; i < names.Length - 1; i++)
	{
		str += names[i] + "|";
	}
	Console.WriteLine(str + names[names.Length - 1]);
}

7、数组反转练习

将一个字符串数组的元素的顺序进行反转

{“我”,“是”,“好人”} {“好人”,“是”,“我”},第1个和第length-i-1个进行交换

①简单方法

string[] text = {"我", "是", "好人" };
for(int i = text.Length -1, i >= 0, i--)
{
	Console.Write(text[i] + "\t");
}
Console.ReadKey();

②稍微高级

string[] text = {"我", "是", "好人" };
Array.Reverse(text);//对数组进行反转

for(int i = 0, i < text.Length; i++)
{
	Console.Write(text[i] + "\t");
}
Console.ReadKey();

③更加高级

string[] text = {"我", "是", "好人" };
string temp = "";
for(int i = 0; i < text.Length/2; i++)
{
	temp = text[i];
	text[i] = text[text.Length - i - 1];
	text[text.Length - 1 - i] - temp;//用临时变量进行交换
}
for(int i = 0; i < text.Length; i++)
{
	Console.Write(text[i] + "\t");
}
Console.ReadKey();

你可能感兴趣的:(C#)