c#語(yǔ)言中的快捷鍵
image
注意:
1、二進(jìn)制無(wú)法精確表示1/10,就像十進(jìn)制無(wú)法精確表示1/3术羔。對(duì)于精度較高的場(chǎng)合會(huì)導(dǎo)致代碼的缺陷,可以使用decimal代替乙漓。
調(diào)試:查看各個(gè)變量的取值级历,找到程序的錯(cuò)誤
1、在可能出錯(cuò)的行處加斷點(diǎn)
2叭披、按F5 啟動(dòng)調(diào)試
3寥殖、按F11 逐語(yǔ)句執(zhí)行
4、shift+F5 停止調(diào)試
標(biāo)準(zhǔn)化輸出格式
Console.WriteLine("金額為:{0:c}",10);
Console.WriteLine("{0:d2}",5);//05
Console.WriteLine("{0:f1}",1.26);//1.3 根據(jù)精度四舍五入
Console.WriteLine("{0:p}", 0.1);// 10.00%
Console.WriteLine("{0:p1}", 0.1);// 10.0%
Console.WriteLine("{0:p0}", 0.1);// 10%
//空字符
char c1='\0';
//隱式轉(zhuǎn)換:小范圍到大范圍的自動(dòng)轉(zhuǎn)換 比如 byte---->int
byte b1 = 10;
int i1 = b1;
//顯示轉(zhuǎn)換:大范圍到小范圍的需要強(qiáng)制類型轉(zhuǎn)換涩蜘。 比如int---->byte
int i2 = 10;
byte b2 = (byte)i2;
byte b=1嚼贡;
b+=3;
b=(byte)(b+3);//相加就認(rèn)為是int類型了
遞歸
//遞歸 必須要有出口
//優(yōu)勢(shì):將復(fù)雜問(wèn)題簡(jiǎn)單化
//階層的計(jì)算
private static int getFactorial(int num) {
if (num == 1) return 1;
return num * getFactorial(num - 1);
}
//計(jì)算參數(shù)為8的結(jié)果
//1-2+3-4+5-6.....
private static int funNum(int num) {
if (num == 1) return 1;
if (num % 2 == 0)
return funNum(num - 1)-num;//類似于:7-8
else
return funNum(num - 1)+num;//類似于:2+3
}
數(shù)組
數(shù)組的定義:
數(shù)據(jù)類型[] 數(shù)組名;--------> int[] a;
初始化數(shù)組:
數(shù)組名 = new 數(shù)據(jù)類型[元素總數(shù)]; --------------> a=new int[3];
//返回結(jié)果為一個(gè)數(shù)組
private static float[] scoreArray() {
//數(shù)組
Console.WriteLine("請(qǐng)輸入學(xué)生總?cè)藬?shù):");
int count = int.Parse(Console.ReadLine());
//申明一個(gè)數(shù)組同诫,并且為數(shù)組分配空間
float[] score = new float[count];
for (int i = 0; i < score.Length;)
{
Console.WriteLine("請(qǐng)輸入第{0}個(gè)學(xué)生成績(jī):", i + 1);
float sc = float.Parse(Console.ReadLine());
if (sc >= 0 && sc <= 100)
score[i++] = sc; //成績(jī)?nèi)M(jìn)來(lái)粤策,才加1
else
Console.WriteLine("成績(jī)有誤");
}
return score;
}
//利用剛寫的方法,該方法返回的是一個(gè)數(shù)組類型
float[] array = scoreArray();
findMax(array);
//定義查找數(shù)組元素最大值的方法float[]
private static float findMax(float[] array) {
float max = array[0];
for (int i=0;i<array.Length-1;i++) {
if (array[i+1]>max)
max = array[i+1];
}
Console.WriteLine(max);
return max;
}
//數(shù)組的其他寫法 初始化+賦值
string[] arr = new string[2] { "a", "b" };
//判斷年是否為閏年
private static bool isLeapYear(int year) {
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
//算某年某月某日是當(dāng)年的第幾天
//比如2017-3-5是2017年的第幾天
private static void getAllDays(int year,int month,int day) {
//將一年中每月的天數(shù)都存到數(shù)組中去
int[] daysOfMonth = new int[] { 31,28,31,30,31,30,31,31,30,31,30,31};
//判斷是否為閏年 如果是閏年误窖,那么2月的天數(shù)為29天
if (isLeapYear(year)) daysOfMonth[1] = 29;
int num = 0;
//month-1:表示過(guò)完了month-1月才能將天數(shù)加上
//因?yàn)楫?dāng)month=1時(shí)叮盘,則為一年的開(kāi)始月
for (int i=0;i<month-1;i++) {
num += daysOfMonth[i];
}
num += day;
Console.WriteLine(year+"年"+month+"月"+day+"日是第{0}天",num);
}
foreach
/* foreach(元素類型 變量名 in 數(shù)組名稱)
{
變量名 即數(shù)組每個(gè)元素
}*/
int[] array0 = new int[] { 1, 2, 3, 4, 5 };
foreach (var item in array0) {
Console.WriteLine(item);// 1,2,3,4,5 將數(shù)組的元素遍歷了一次
}
var
//推斷類型:根據(jù)所賦數(shù)據(jù),推斷類型
//適用性:數(shù)據(jù)類型名稱較長(zhǎng)
var v1 = 1; //int
var v2 = "1";//string
var v3 = '1';//char
var v4 = true;//bool
var v5 = 1.0;//double(沒(méi)后綴默認(rèn)為double)
數(shù)組特點(diǎn)
//父類引用指向子類對(duì)象 向上轉(zhuǎn)型
Array arr1 = new int[2];
Array arr2= new double[2];
Array arr3= new string[2];
image
int[] array0 = new int[] { 1, 2, 3, 4, 5 };
int[] brr =(int[]) array0.Clone();//將array0這個(gè)數(shù)組克隆給數(shù)組brr
//判斷數(shù)組中是否有指定元素
bool result= Array.IndexOf(array0, 2)>=0;//存在指定元素則返回1霹俺,否則返回 -1
Array.IndexOf(array0, 2);//表示獲取指定元素2在數(shù)組array0中的下標(biāo)
Array.IndexOf(array0, 2)>=0;//表示判斷指定元素2是否存在于數(shù)組array0中
判斷一個(gè)元素是否在一個(gè)數(shù)組中存在時(shí)使用 Array.IndexOf()這個(gè)方法
買彩票小游戲(數(shù)組的練習(xí))
static void Main(string[] args){
//玩一局彩票游戲
int[] myTicket = buyTicket();//自己先買一支彩票
int[] randomTicket = createRandomTicket();//隨機(jī)生成一期中獎(jiǎng)的號(hào)碼
//查看自己購(gòu)買的彩票號(hào)碼
Console.WriteLine("我買的彩票為:");
foreach (var myNum in myTicket)
Console.Write(myNum + "\t");
Console.WriteLine();
//查看中獎(jiǎng)的彩票號(hào)碼
Console.WriteLine("中獎(jiǎng)的彩票為:");
foreach (var ranNum in randomTicket)
Console.Write(ranNum + "\t");
Console.WriteLine();
//比對(duì)中獎(jiǎng)的等級(jí)
Console.WriteLine("中獎(jiǎng)的等級(jí)為:{0}", ticketEquals(myTicket, randomTicket));
}
method1:
/// <summary>
/// 購(gòu)買彩票
/// </summary>
/// <returns>所有球的號(hào)碼的數(shù)組ticket</returns>
private static int[] buyTicket() {
int[] ticket = new int[7];
//6個(gè)紅球
for (int i = 0; i < 6; )
{
Console.WriteLine("請(qǐng)輸入第{0}個(gè)紅球號(hào)碼:",i+1);
int redNumber = int.Parse(Console.ReadLine());
//在將輸入的紅色球號(hào)碼存入到數(shù)組之前需要滿足以下條件:
//1.輸入的紅球號(hào)碼不能重復(fù)
//2.輸入的紅球號(hào)碼在1-33之間
if (redNumber <1 || redNumber > 33) Console.WriteLine("購(gòu)買的號(hào)碼超過(guò)范圍");
else if (Array.IndexOf(ticket, redNumber)>=0) Console.WriteLine("號(hào)碼已經(jīng)存在");
else ticket[i++] = redNumber;//以上條件都滿足則該號(hào)碼才能存入到數(shù)組ticket中
}
//第7個(gè)藍(lán)球
while (true) {
Console.WriteLine("請(qǐng)輸入藍(lán)球號(hào)碼:");
int blueNumber = int.Parse(Console.ReadLine());
if (blueNumber < 1 || blueNumber > 16) Console.WriteLine("購(gòu)買的號(hào)碼超過(guò)范圍");
else {
ticket[ticket.Length - 1] = blueNumber;//先將紅球裝入數(shù)組中柔吼,最后放藍(lán)球
break;//將最后一個(gè)數(shù)據(jù)填入數(shù)組之后,即結(jié)束則跳出整個(gè)while循環(huán)
}
}
Array.Sort(ticket,0,6);//將數(shù)組前6位進(jìn)行排序
return ticket;
}
method2:
//創(chuàng)建一個(gè)隨機(jī)的彩票數(shù)組
//先寫一個(gè)靜態(tài)的隨機(jī)方法丙唧,方便調(diào)用
static Random random = new Random();
private static int[] createRandomTicket() {
int[] ticket = new int[7];
//隨機(jī)生成6個(gè)紅球
for (int i = 0; i < 6;)
{
int redNumber=random.Next(1, 34);//隨機(jī)產(chǎn)生1-33之間的一個(gè)數(shù) 并 給紅球
//存在不相同的色號(hào) 則將該色號(hào)存入數(shù)組內(nèi)
if (Array.IndexOf(ticket, redNumber) < 0)
ticket[i++] = redNumber;
}
//隨機(jī)生成一個(gè)藍(lán)球
ticket[ticket.Length - 1] = random.Next(1, 17);
//紅球號(hào)碼排序 從ticket的第1個(gè)數(shù)據(jù)開(kāi)始愈魏,將前6個(gè)數(shù)據(jù)進(jìn)行排序
Array.Sort(ticket, 0, 6);
return ticket;
}
method3:
//兩個(gè)數(shù)組相互比較
private static int ticketEquals(int[] thisTicket,int[] randomTicket) {
//計(jì)算紅球和藍(lán)球的中獎(jiǎng)數(shù)量
//藍(lán)球的中獎(jiǎng)數(shù)量
int blueCount = thisTicket[thisTicket.Length - 1] == randomTicket[randomTicket.Length - 1] ? 1 : 0;
//紅球的中獎(jiǎng)數(shù)量 判斷我的第的號(hào)碼在不在隨機(jī)的中獎(jiǎng)號(hào)碼中
int redCount = 0;
for (int i = 0; i < thisTicket.Length-1; i++)
{
//將thisTicket數(shù)組中的元素從0開(kāi)始與randomTicket數(shù)組中的元素進(jìn)行6次搜素對(duì)比
if (Array.IndexOf(randomTicket, thisTicket[i], 0, 6) >= 0)
redCount++;
}
//查看中獎(jiǎng)情況
int level;//設(shè)置中獎(jiǎng)等級(jí)
if (blueCount + redCount == 7)
level = 1;
else if (redCount == 6)
level = 2;
else if (blueCount + redCount == 6)
level = 3;
else if (redCount + blueCount == 5)
level = 4;
else if (redCount + blueCount == 4)
level = 5;
else if (blueCount == 1)
level = 6;
else
level = 0;
return level;//返回中獎(jiǎng)等級(jí)
}
彩票小游戲運(yùn)行結(jié)果
image