C#部分基础知识整理(数组)
数组是具有相同数据类型的一组数据的结合。数组中的每一个变量称为数组元素,数组能够容纳元素的数量称为数组的长度。
常见数组:整型数组,小数数组,字符数组,字符串数组
1.一维数组
int[] arr;(整形数组) string[] arr;(字符串数组)
初始化一维数组
int[] arr = new int[3]{1,2};在C#中是不可行的,而在C++中可行。
程序示例:
namespace DemoPractice5
{
class Program
{
static void Main(string[] args)
{
//12个月每个月有几天
int[] arr = new int[12] { 31,28,31,30,31,30,31,31,30,31,30,31};
for (int i = 0; i < 12;i++ )
{
Console.WriteLine((i+1)+"月有"+arr[i]+"天");
}
Console.ReadLine();
}
}
}
2.二维数组
语法:比如:int[,] arr;或者string[] [] arr;
二维数组设置大小:第一种情况 int[,] a = new int[2,4];指的是二维数组两行四列,其中第一行第一列的位置是(0,0)
第二种情况 int[][] a = new int[2][]; a[0] = new int[2]; a[1] = new int[3];
这属于不规则数组
初始化二维数组:
二维数组的使用:
namespace DemoPractice5
{
class Program
{
static void Main(string[] args)
{
int[,] arr = { {1,2,3}, {4,5,6}, {7,8,9}};
Console.WriteLine("----------原始数组----------");
for (int i = 0; i < 3;i++ )
{
for (int j = 0; j < 3; j++)
{
Console.Write(arr[i,j]+" ");
}
Console.WriteLine();
}
int temp;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < i; j++)
{
temp =arr[i,j];
arr[i,j]=arr[j,i];
arr[j,i] = temp;
}
}
Console.WriteLine("----------调换之后的数组----------");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Console.Write(arr[i, j] + " ");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
3.数组的基本操作
(1)一维数组的输入与输出
程序示例:
输入输出100以内的整数
namespace DemoPractice5
{
class Program
{
static void Main(string[] args)
{
//一维数组的输入
int[] arr = new int[100];
for (int i = 0; i < 100; i++)
{
arr[i] = i + 1;
}
//一维数组的输出
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
//用while语句来实现一维数组的输出
int index = 0;
while (index < arr.Length)
{
Console.WriteLine(arr[index]);
index++;
}
Console.ReadLine();
}
}
}
(2)二维数组的输入与输出
程序示例:
输入学生序号及语数外成绩,输出各科成绩及平均成绩和总成绩
namespace DemoPractice5
{
class Program
{
static void Main(string[] args)
{
Console.Write("请输入本班同学的学生总数:");
int count = Convert.ToInt32(Console.ReadLine());
int[,]achievement=new int[count,4];
for (int i = 0; i < count; i++)
{
Console.Write("请输入第{0}个学生的编号:",i+1);
achievement[i, 0] = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入语文成绩:");
achievement[i, 1] = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入数学成绩:");
achievement[i, 2] = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入英语成绩:");
achievement[i, 3] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("学生成绩如下:");
Console.WriteLine("------------------------------------------");
Console.WriteLine("学生编号\t语文成绩\t数学成绩\t英语成绩\t平均成绩\t总成绩");
for (int i = 0; i < achievement.GetLength(0); i++)
{
double sum = 0, ave = 0;
for (int j = 0; j < achievement.GetLength(1);j++ )
{
Console.Write(achievement[i, j] + "\t\t");
if (j > 0)
{
sum += achievement[i, j];
}
}
ave=sum/3;
Console.Write(string.Format("{0:F2}",ave)+"\t\t"+sum+"\n");
}
Console.ReadLine();
}
}
}
(4)使用foreach语句遍历数组
namespace DemoPractice5
{
class Program
{
static void Main(string[] args)
{
string[] strNames={"进货管理","商品管理","库存管理","系统设置","常用工具"};
foreach (string str in strNames)//(【类型】 【迭代变量名】 in 【集合】)
{
Console.WriteLine(str);
}
Console.ReadLine();
}
}
}
(4)对数组进行排序
namespace DemoPractice5
{
class Program
{
static void Main(string[] args)
{
int[] arr = { 35,86,67,5,34};
Array.Sort(arr);//对数组arr进行从小到大排序
Array.Reverse(arr);//对数组arr反转
foreach (int i in arr)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
}
}
4.数组排序算法
冒泡排序算法
namespace DemoPractice5
{
class Program
{
static void Main(string[] args)
{
//冒泡排序法
int[] arr = { 63,4,24,1,3,15};
Console.WriteLine("初始数组:");
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i] + " ");
}
int temp;
for (int i = 0; i < arr.Length - 1; i++)//外循环,进行几轮排序
{
for (int j = i + 1; j < arr.Length; j++)//内循环,内部排序
{
if (arr[i] > arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
Console.Write("排序后的数组:");
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i] + " ");
}
Console.ReadLine();
}
}
}
选择排序算法
//选择排序法
int[] arr = { 63,4,24,1,3,15};
Console.WriteLine("初始数组:");
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i] + " ");
}
int min;
for (int i = 0; i < arr.Length - 1; i++)
{
min = i;
for (int j = i + 1; j < arr.Length; j++)
{
if (arr[j] < arr[min])
{
min = j;
}
}
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
Console.Write("排序后的数组:");
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i] + " ");
}
Console.ReadLine();
}
}
}