using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 数组作业
{
class Program
{
static void Main(string[] args)
{
//int[] arr = { 3, 5, 2, 9, 1, 8, 7, 4, 6, 0 };
//int maxValue;
//int index;
//Task01(arr,out maxValue,out index);
//Console.WriteLine("最大值是:{0},索引是:{1}",maxValue,index);
//char[] chArr = { 'A', 'B', 'C' };
//Task02(chArr);
//Console.WriteLine("*************4***********");
//Task03_1(arr);
//Task03_2(arr);
//Console.WriteLine("***********5***********");
//int[,] numArr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
//int ret = Task05(numArr);
//Console.WriteLine(ret);
//Console.WriteLine("**************6**************");
//int[,] numArr2 = { { 3, 5, 1, 4 }, { 7, 2, 6, 8 }, { 0, 9, 4, 6 } };
//int[,] arr06 = Task06(numArr2);
//PrintArr2(arr06);
Console.WriteLine("***************7***********");
int[,] arr07 = Task07(5);
PrintArr2(arr07);
Console.WriteLine("第9题");
Task09();
}
/*
* 1. 数组(求最大值及下标) 定义一个整型数组,输入10个整数到数组中,并将数组中最大值及下标输出。
*/
static void Task01(int[] arr,out int maxValue,out int index)
{
//对参数进行初始化
maxValue = arr[0];
index = 0;
//不能对数组进行二次初始化
//arr = {1,2,3,4,5,6,7};
for (int i = 1; i < arr.Length; i++)
{
if (maxValue<arr[i])
{
maxValue = arr[i];
index = i;
}
}
}
//2定义一个字符数组,输入10个字符到数组中,将字符数组内容倒序输出。
static void Task02(char[] chArr)
{
for (int i = 0; i < chArr.Length; i++)
{
Console.Write(chArr[i] +" ");
}
Console.WriteLine();
}
//3交换数组首尾元素位置
static void Task03_1(int[] arr)
{
int temp = arr[0];
arr[0] = arr[arr.Length - 1];
arr[arr.Length - 1] = temp;
}
//4打印数组中的每个元素
static void Task03_2(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i] +" ");
}
Console.WriteLine();
}
//5返回值类型是取决于返回值的类型的
static int Task05(int[,] arr)
{
//记录对角线上所有数据的和
int sum = 0;
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
if (i==j)
{
sum += arr[i, j];
}
}
}
return sum;
}
//6反转矩阵
static int[,] Task06(int[,] arr)
{
//声明一个新的数组 保存反转后的结果
int[,] retArr = new int[arr.GetLength(1), arr.GetLength(0)];
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
retArr[j, i] = arr[i, j];
}
}
return retArr;
}
//打印数组的每一个元素
static void PrintArr2(int[,] arr)
{
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Console.Write(arr[i,j]+" ");
}
Console.WriteLine();
}
}
//7
static int[,] Task07(int lines)
{
int[,] arr = new int[lines, lines];
for (int i = 0; i < lines; i++)
{
for (int j = 0; j <= i; j++)
{
//第一种方式
//if (j==0 || i==j)
//{
// arr[i, j] = 1;
//}
//else
//{
// arr[i, j] = arr[i - 1, j] + arr[i - 1, j - 1];
//}
//第二种方式
arr[i,j] = j == 0 || i == j? 1: arr[i - 1, j] + arr[i - 1, j - 1];
}
}
return arr;
}
// 8bcdefgfEdcba
static bool Task08(string str)
{
for (int i = 0; i < str.Length/2; i++)
{
if (str[i] != str[str.Length-1-i])
{
//只要发现一个不相等 直接返回 不再比较
return false;
}
}
//如果整个循环结束了还没有找到不匹配的 换句话说就是全都匹配
return true;
}
//9
static void Task09()
{
//用来保存系统产生的结果
string result;
while (true)
{
result = string.Empty;
//让系统产生一个随机数
string randomNumber = CreateRandomNumber(4);
result = randomNumber;
string number = string.Empty;
int count = 0;
while (count < 9)
{
count++;
Console.WriteLine("请输入一个4位的数字");
number = Console.ReadLine();
string tempStr = string.Empty;
int len = number.Length;
if (len < 4)
{
for (int i = 0; i < 4 - len; i++)
{
number = "0" + number;
}
}
else if (len > 4)
{
for (int i = 0; i < 4; i++)
{
tempStr += number[i];
}
number = tempStr;
}
int aCount = GetACount(randomNumber, number);
int bCount = GetBCount(randomNumber, number);
string warningString = aCount + "A" + bCount + "B";
Console.WriteLine("温馨提示" + warningString);
if (warningString == "4A0B")
{
Console.WriteLine("恭喜您猜对了");
break;
}
Console.WriteLine("您还有{0}次机会", 9 - count);
}
Console.WriteLine("系统的结果是:{0}",result);
Console.WriteLine("退出请按Y/y,按其他任意键继续");
string ret = Console.ReadLine();
if (ret == "Y" || ret == "y")
{
break;
}
}
}
//10判断一个数字在某一个数组中是否存在
static bool IsContains(int number,char[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] == number)
{
return true;
}
}
return false;
}
//11把一个字符数组拼接成一个字符串
static string CharArrToString(char[] chArr)
{
string ret = "";
for (int i = 0; i< chArr.Length; i++)
{
ret += chArr[i];
}
return ret;
}
//12这个方法传递的参数范围是[0-10]
static string CreateRandomNumber(int len)
{
char[] arr = new char[len];
for (int i = 0; i < arr.Length; i++)
{
arr[i] = ' ';
}
Random random = new Random();
for (int i = 0; i < arr.Length; i++)
{
char randomNumber = (char)random.Next('0',('9'+1));
if (IsContains(randomNumber,arr))
{
i--;
continue;
}
else
{
arr[i] = randomNumber;
}
}
return CharArrToString(arr);
}
//13
static int GetACount(string targetStr,string myStr)
{
//用来记录位置和字符都相等的字符个数
int count = 0;
for (int i = 0; i < targetStr.Length; i++)
{
if (targetStr[i] == myStr[i])
{
count++;
}
}
return count;
}
/*
* 1234
* 3256
* 1A1B
*///14
static int GetBCount(string targetStr, string myStr)
{
//用来记录myStr中的字符在目标字符串中存在的个数
int count = 0;
for (int i = 0; i < targetStr.Length; i++)
{
for (int j = 0; j < targetStr.Length; j++)
{
if (targetStr[i] == myStr[j] && i!=j)
{
count++;
}
}
}
return count;
}
}
}
C#基础-047 数组的简单案例
最新推荐文章于 2023-09-23 15:03:44 发布