C#基础-030 数组练习题

时间:2023-02-22 22:48:50
  /*1.数组(求最大值及下标)定义一个整型数组,输入10个整数到数组中,并将数组中最大值及下标输出。
例如:
输入: 3 5 2 9 1 8 7 4 6 0
输出: 9 3
*/

//int[] arr = { 3,5,2,9,1,8,7,4,6,0};
//int index = 0;
//int maxValue = arr[0];
//for (int i = 1; i < arr.Length; i++)
//{
// if (maxValue<arr[i])
// {
// maxValue = arr[i];
// index = i;
// }
//}
//Console.WriteLine("最大值为{0},它的下标是{1}",maxValue,index);

/*2.字符数组(正序输出)定义一个字符数组,输入10个字符到数组中,将字符数组内容逐个输出。
比如:
输入:A B C D E F G H I J
输出:A B C D E F G H I J
*/

//char[] arr = { 'A','B','C','D','E','F','G','H','I','J'};
//for (int i = 0; i < arr.Length; i++)
//{
// Console.Write(arr[i] + " ");
//}
//Console.WriteLine();

/* 3.(逆序输出)定义一个字符数组,输入10个字符到数组中,将字符数组内容倒序输出。
比如:
输入:a b c d e f g h i j
输出:j i h g f e d c b a
*/

//char[] arr = {'a','b','c','d','e','f','g','h','i','j'};
//for (int i = 0; i < arr.Length; i++)
//{
// Console.Write(arr[arr.Length-i-1]+" ");
//}
//Console.WriteLine();

/* 4.数组(元素交换)定义一个整型数组,输入10个字符到数组中,然后将头尾元素两两互换,将交换后的数组值输出。
比如:
输入:1 2 3 4 5 6 7 8 9 0
输出:0 9 8 7 6 5 4 3 2 1
// */

//int[] arr = {1,2,3,4,5,6,7,8,9,0 };
//for (int i = 0; i < arr.Length; i++)
//{
// Console.Write(arr[arr.Length-i-1]+" ");
//}
//Console.WriteLine();

/* 5. 二维数组(求对角线之和)输入9个整数,构成3*3的矩阵,打印主对角线之和。
比如:
输入:1 2 3
4 5 6
7 8 9
输出:15
解释:主对角线之和指的是第k行第k列的所有元素之和。
1+5+9 = 15
*/

//int[,] arr = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
//int sum = 0;
//for (int i = 0; i < arr.GetLength(0); i++)
//{
// for (int j = 0; j < arr.GetLength(1); j++)
// {
// //Console.Write(arr[i,j]+" ");
// if (i==j)
// {
// sum += arr[i, j];
// }
// }
// // Console.WriteLine();
//}
//Console.WriteLine(sum);

/*6.数组(矩阵反转)定义一个二维数组a[3][4],输入整数到数组中,然后将a数组矩阵反转后存入到b[4][3]数组中,并将b输出。
比如:
输入:
3 5 1 4
7 2 6 8
0 9 4 6
输出:
3 7 0
5 2 9
1 6 4
4 8 6
*/

//int[,] a = new int[3, 4] { { 3, 5, 1, 4 }, { 7, 2, 6, 8 }, { 0, 9, 4, 6 } };
//int[,] b = new int[a.GetLength(1), a.GetLength(0)];
//for (int i = 0; i < a.GetLength(0); i++)
//{
// for (int j = 0; j < a.GetLength(1); j++)
// {
// b[j,i] = a[i, j];
// }
//}
//for (int i = 0; i < b.GetLength(0); i++)
//{
// for (int j = 0; j <b.GetLength(1); j++)
// {
// Console.Write(b[i,j]+" ");
// }
// Console.WriteLine();
//}

/*7. 数组(杨辉三角) 输入n,打印n行的杨辉三角。
比如:
输入:5
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
观察以上就会发现一个规律, 每行当前这个数的值为上一行中的值再加上这个数前面的值
例如第5行中: 4=1+3 6=3+3 4=3+1 1=1+0*/

Console.WriteLine("请输入需要打印的杨辉三角的行数");
int num = int.Parse(Console.ReadLine());
int[,] arr = new int[num, num];
for (int i = 0; i < num; i++)
{
for (int j = 0; j < num - i; j++)
{
Console.Write(" ");
}
for (int j = 0; j <= i; j++)
{
//第一种方法
//if (j == 0 || j == i)
//{
// arr[i, j] = 1;
//}
//else
//{
// arr[i, j] = arr[i - 1, j] + arr[i - 1, j - 1];
//}
//方法二:三目运算
arr[i, j] = j == 0 || j == i ? 1: arr[i - 1, j] + arr[i - 1, j - 1];
Console.Write(arr[i, j].ToString() + " ");
}
Console.WriteLine();
}
Console.ReadKey();