C#編程基礎(chǔ)筆記(一)_第1頁
C#編程基礎(chǔ)筆記(一)_第2頁
C#編程基礎(chǔ)筆記(一)_第3頁
C#編程基礎(chǔ)筆記(一)_第4頁
C#編程基礎(chǔ)筆記(一)_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

C#編程基礎(chǔ)筆記

Winform

解決方案中可以包含多個項目,項目可以包含多個文件,文件中是我們寫的程序。

認(rèn)識程序:

一段程序代碼最前面幾行類似“usingsystem;"的,是引用命名空間。

定義命名空間,用"namespace”,,格式:

namespace命名空間的名稱

定義類,用"class".

在cs文件中,命名空間中可以包含類,類中可包含方法,方法中可以是程序。

在C#中,類文件是以cs為擴(kuò)展名的。

重置開發(fā)環(huán)境:“工具”一“導(dǎo)出和導(dǎo)入”,可以使開發(fā)工具恢復(fù)初始狀態(tài)。

功能面板不小心關(guān)閉了,在視圖中找。

main方法是我們程序的入口方法,當(dāng)我們執(zhí)行一個程序時,會首先找到

main方法,從main方法的第一句程序開始執(zhí)行,當(dāng)main方法執(zhí)行完成后,程序就結(jié)束了。所以,我們初學(xué)者寫程序,就先寫

在main方法中。

在VS中,右鍵單擊“方案”,選擇“在windows資源管理器中打開“可以打開保存該解決方案的目錄。

目錄中擴(kuò)展名是”.sin"的文件就是解決方案的文件。

項目文件夾中擴(kuò)展名是”.csproj”的文件就是項目文件。

要想編輯,一般就是打開解決方案文件。這樣,其中包含的多個項目就可以一次性全部打開。

第一句程序:

Console.WriteLine(^HelloWorld!");〃向屏幕輸出

Line表示輸出一個換行。后面再輸出的內(nèi)容會另起一行顯示。

第二句程序:

Console.ReadKey();

〃當(dāng)程序執(zhí)行到Console.ReadKeyO;時,程序會停到這里,等待用戶從鍵盤上鍵入一個鍵。用戶鍵入這個鍵之后,程序才會

結(jié)束運(yùn)行。

在C#中,每一個程序語句都以分號結(jié)束。

設(shè)置VS中的字體、行號:工具-選項

創(chuàng)建多個項目——右鍵點(diǎn)解決方案一添加一新的項目

啟動項目的設(shè)置:當(dāng)解決方案中有多個項目時,如果想運(yùn)行其中一個項目,就右鍵單擊它,選擇“設(shè)為啟動項“即可,這時

項目名稱會以粗體顯示。

項目的加載與卸載;右鍵單擊項目,選擇“卸載項目“即卸載了該項目。再次右鍵單擊這個項目,選擇”加載“就會重新

加載這個項目。

C#中的注釋符:

單行注釋:以〃開始,它只影響本行

多行注釋:以/*開始,以*/結(jié)束,它們之間的多行內(nèi)容都被注釋。

文檔注祥:用于對類和方法進(jìn)行注釋,在類或方法前面,連續(xù)輸入三個/。

編寫程序,要養(yǎng)成善于寫注釋的好習(xí)慣。

技巧:復(fù)制對話框中的文字——Ctrl+c

撤銷快捷鍵:Ctrl+z

下面的指令可以折疊一段代碼:Sregion和Jtendregion——用法:把被折疊的代碼放入它們中間即可。

.NET是?種多語言的平臺,開發(fā).NET可以用多達(dá)幾十種語言進(jìn)行開發(fā)。

Java是一種單語言的平臺。一種語言多種平臺

MSIL,微軟中間語言

在VS中,輸入“Console.WriteLineO時,有快捷的方法:即輸入cw后,再敲tab鍵,就會自動把這個語句補(bǔ)充完整。

變量

計算機(jī)使用內(nèi)存來存儲數(shù)據(jù)。內(nèi)存用于正在運(yùn)行的程序數(shù)據(jù)

變量代表著一塊內(nèi)存空間,我們可以通過變量名稱向內(nèi)存存取數(shù)據(jù),有了變量就不需要我們記憶復(fù)雜的內(nèi)存地址了。

聲明變量就是向內(nèi)存申請?塊內(nèi)存空間

聲明變量的語法格式:數(shù)據(jù)類型變量名

intnumber〃聲明變量number,整數(shù)類型叫int。

賦值:變量名=值

如:number=1000;

數(shù)據(jù)類型:

int整型

long長整型

double浮點(diǎn)型,用于存儲小數(shù)

char字符型:只能存儲一個字符,并且存儲的這個字符要求用單引號引起來。轉(zhuǎn)義字符也屬于char類型。

string字符串類型:就是把0個或1個或多個字符連接起來,字符串要求用雙引號連起來。

decimal類型:

decimal關(guān)鍵字表示128位數(shù)據(jù)類型。同浮點(diǎn)型相比,decimal類型具有更高的精度和更小的范圍,這使它適合于財務(wù)和貨幣

計算。

注:在VS中,將鼠標(biāo)放在數(shù)據(jù)類型的關(guān)鍵字上,按下F1鍵,即可調(diào)出關(guān)于這種數(shù)據(jù)類型的詳細(xì)信息。

在C#開發(fā)環(huán)境中,直接寫一個有小數(shù)點(diǎn)的數(shù)字,則這個數(shù)字是double類型的。

如果想將有小數(shù)點(diǎn)的數(shù)值賦給decimal類型的變量,就要在這個數(shù)值的后面加?個字母M或者小寫m,以表示此小數(shù)是decimal

類型而不是double類型。如

decimalmoney;

money=1000.25m;

變量的聲明

語法格式:數(shù)據(jù)類型變量名稱;

變量的聲明的三種方法:

⑴、聲明后再賦值:

intage;

age=18;

⑵、聲明時直接賦值:

intage=18;

⑶、可以一次聲明多個相同類型的變量,變量名之間用逗號分隔:

stringzsName,IsName,wwName;

intzsAge=18,lsAge=20,wwAge=22;

變量?定要先聲明后賦值,然后才能使用(取值、調(diào)用或?qū)戇@個變量名)

寫程序時注意錯誤和警告提示,要把警告當(dāng)錯誤對待,以防止程序出錯或浪費(fèi)內(nèi)存空間。

賦值運(yùn)算符和賦值表達(dá)式

a=a+l;這里的=號是賦值運(yùn)算符,不是數(shù)學(xué)意義上的相等。

變量可以重復(fù)賦值,但是,一旦給一個變量賦了新值,那么變量中的老值就不存在了。

變量的命名規(guī)則:

⑴、必須以“字母”、_或@符號開頭;字母二字加雙引號意思是,可以是以字母開頭也可以是中文或其它國家語言符號

開頭。不能以數(shù)字開頭。

⑵、后面可以跟任意“字母”、數(shù)字、下劃線;

注意:

①、變量名不要丐C#系統(tǒng)中的關(guān)鍵字重復(fù);

②、在C#中,大小寫是敏感的;即區(qū)分大小寫,也就是大小寫被認(rèn)為是不同的變量。

③、同一個變量名不允許重復(fù)定義(說法不嚴(yán)謹(jǐn))。在相同范圍內(nèi)不能重復(fù)定義。

定義變量時,變量名要有意義。

C#變量命名編碼規(guī)范一Camel命名法:首個單詞的首字母小寫,其余單詞的首字母大寫。

Pascal命名規(guī)范:每一個單詞第一個字母都大寫。

如果使用到英文單詞的縮寫,全部用大寫!

在方法中定義變量,要使用Camel命名法。

點(diǎn)位符的使用{0}{1}{2}

交換兩個變量的值,如下:

inta=10;

intb=5;

inttemp;

temp=a;

a=b;

b=temp;

再學(xué)習(xí)一句話:Console.ReadLineO;

用于接收用戶的輸入,要定義一個字符串變量用來接收存儲用戶輸入的值。

當(dāng)程序執(zhí)行到這句話時,就會暫停,然后等待用戶從鍵盤上輸入內(nèi)容,敲回車程序?qū)⒗^續(xù)執(zhí)行。如果想得到用戶輸入的內(nèi)

容,就需要在語句Console.Re“dLine();前面定義一個string類型的變量,用來接收用戶輸入的內(nèi)容。語句寫法:

stringinput;〃這個變量必須是字符串型

input=Console.ReadLineO;

Console.WriteLine(“剛才輸入的內(nèi)容是:{0}”,input);

Console.ReadKey();

凡是用戶輸入的內(nèi)容都將被當(dāng)作字符串來處理,所以用來接收用戶輸入的內(nèi)容的變量,不能定義成int型,而只能定義成字

符串型即stringo

如果希望把用戶輸入的內(nèi)容用作數(shù)字來參與運(yùn)算,則可以使用類型轉(zhuǎn)換,先把它轉(zhuǎn)換成int型。

stringinput;

input=Console.ReadLineO;

可以連起來直接寫成一句:stringinput=Console.RcadLine();

練習(xí)1:

Console.WriteLine(“請輸入你喜歡吃的水果:”);

stringinput=Console.ReadLineO;

Console.WriteLine("這么巧呀,我也喜歡吃{0}”,input);

練習(xí)2:

Console.WriteLine("請問你叫什么名字?”);

stringname=Console.ReadLineO;

Console.WriteLine("你好!{0}。"name);

轉(zhuǎn)義字符

當(dāng)我們需要在字符串中輸入一些特殊字符時,比如半角引號、換行、退格,就需要使用轉(zhuǎn)義字符。

轉(zhuǎn)義字符是一個字符,由一個'加一個字母來組成具有特殊意義的?個字符。

如:Console.WriteLine("C#中的字符要用引號引引起來”);

Console.ReadLineO;

常用的轉(zhuǎn)義字符:

\n:表示換行

\b:表示退格backspace

\t:tab鍵,由多個空格組成的?個字符,具有行與行之間的對齊功能

Console.WriteLine(^I\t2\t3\t4\t5>,);

Console.WriteLine("Il\t223\tl236\t25\t698”);

\\:表示輸出一個'

\”:

在字符串前加一個@符號有兩種意義:

①字符串中如果有則不再理解為轉(zhuǎn)義符。即表示不轉(zhuǎn)義。

②使字符串可以換行。

如:Console.WriteLine(@wD:\myDocuments\C#\sq1\'*);〃'照常輸出

Console.WriteLine(@"D:\myDocum

ents\C#\sql\");〃字符串被換行,運(yùn)行時仍然正常。

如果字符串前面加了@符號,在字符串上用兩個雙引號代表一個雙引號。

算術(shù)運(yùn)算符及算術(shù)表達(dá)式

算術(shù)運(yùn)算符:+-*/%(取余數(shù),取模),都是是二元運(yùn)算符。

算術(shù)表達(dá)式;由算術(shù)運(yùn)算符連接起來的式子,如:1+1、a*b-c(變量acb在前面已聲明并賦值)

參與運(yùn)算的兩個操作數(shù)的數(shù)據(jù)類型必須相同,并且經(jīng)過運(yùn)算后的結(jié)果也與操作數(shù)的類型相同。

優(yōu)先級:先乘除后加減,有括號先算括號里的,相同級別的從左至右運(yùn)算。

小括號可以無限嵌套使用,但一定要成對出現(xiàn)。

練習(xí):

兩數(shù)相除,求結(jié)果和余數(shù):

inta=10,b=3;

intmod=a%b;

doublequo=a/b;〃兩個int類型數(shù)值運(yùn)算的結(jié)果必然也是int類型,因此結(jié)果是3而不是3.333

Console.WriteLine(mod);因此這樣會丟失精度,即舍去了小數(shù)部分?jǐn)?shù)值

Console.WriteLine(quo);

Console.ReadKey();

求兩個數(shù)的和:

intnuml=10;

intnum2=20;

intsum=num1+num2;

Console.WriteLine(“10和20的和是:");//語句1

Console.WriteLine(sum);〃語句2

Console.ReadKey();

注意:語句1和語句2可以合起來寫成一句:

Console.WriteLine("10和20的和是:{0}”,sum);

求半徑為5的圓的面積:

doubler=5;

doublePI=3.14;

doubles=r*r*PI;〃如果把半徑定義為int類型也行,則系統(tǒng)會先自動轉(zhuǎn)換成double型再運(yùn)算。

Console.WriteLine(這個圓的面積是:{0}”,s);

Console.ReadKey();

計算總共應(yīng)付多少錢及打折后應(yīng)付的錢數(shù):

doubletixu=35;

doubleduzi=120;

doublemoney=tixu*3+kuzi*2;〃實(shí)現(xiàn)自動類型轉(zhuǎn)換

doubledismoney=money*0.88

Console.WriteLine("總共應(yīng)付{0}元錢,打折后應(yīng)付:{1}元“,money,dismuney);

Console.ReadLineO;

類型自動轉(zhuǎn)換(隱式轉(zhuǎn)換)

參與運(yùn)算(算術(shù)運(yùn)算和賦值運(yùn)算)的手操作數(shù)和結(jié)果類型必須一致,當(dāng)不一致時,滿足下面條件時,系統(tǒng)自動完成類型轉(zhuǎn)

換:

①參與運(yùn)算的兩個數(shù)據(jù)類型必須相兼容,如:int和double兼容。這兩者都是數(shù)值型,兼容。

②必須一邊的數(shù)據(jù)類型表示范圍小,另一邊的表示范圍大,并且把小的轉(zhuǎn)向大的不丟失精度。目標(biāo)類型大于源類型,如:

double>int

凡是會丟失精度的都不會自動轉(zhuǎn)換。

在表達(dá)式中,如果有?個操作數(shù)是double類型,則整個表達(dá)式的運(yùn)算結(jié)果為double型,如前面購物打折的計算。

再如:inta=10,b=3;doublequo=(l.0*a)/b;,在a/b前面加上個double型數(shù)1.0。

注意這里為了便于閱讀和理解,加上了小括號。這是一種好習(xí)慣。

這個語句也可以寫成:doublequo=((double)a)/b;

注意:賦值運(yùn)算符或算術(shù)運(yùn)算符在進(jìn)行運(yùn)算時,要參與運(yùn)算的操作數(shù)的類型必須相同,并且其運(yùn)算結(jié)果也與操作數(shù)的類型相

同。doublequo=a/b;右邊的運(yùn)算結(jié)果仍是int型,

系統(tǒng)在默認(rèn)情況卜,存在以下預(yù)定義隱式轉(zhuǎn)換的情況:

①、從int到long、float,double、decimal的預(yù)定義隱式轉(zhuǎn)換。

②、從sbyte、byte、short,ushort,char到int的預(yù)定義隱式轉(zhuǎn)換。

在自動轉(zhuǎn)換中,是不會丟失精度的。如果會丟失精度,則此轉(zhuǎn)換不會自動進(jìn)行。

經(jīng)常見到的就是,參與運(yùn)算的兩個操作數(shù),一個是int,一個是double,那么,int類型會自動轉(zhuǎn)換成double類型。

強(qiáng)制類型轉(zhuǎn)換

涉及丟失精度的類型轉(zhuǎn)換,系統(tǒng)不會自動完成,需要人工書寫代碼來完成。

語法:(數(shù)據(jù)類型名)待轉(zhuǎn)換的值

如:intb=(int)3.14;

強(qiáng)制類型轉(zhuǎn)換時,數(shù)據(jù)類型一定要相兼容。比如都是數(shù)值型。

注意,下面的兩種轉(zhuǎn)換是錯誤的,因?yàn)閺?qiáng)制類型轉(zhuǎn)換要求待轉(zhuǎn)換的類型和目標(biāo)類型必須都為數(shù)字。

stringage=(int)Console.ReadLine();

inta=(int)"33";

Console.ReadLine();接收的數(shù)據(jù)是字符串類型,因此它不能轉(zhuǎn)換為int類型。

類型轉(zhuǎn)型

將字符串類型轉(zhuǎn)換成數(shù)值類型----Convert.Tolnt32()

語法格式:int變量=Convert.Tolnt32(待轉(zhuǎn)換的字符串);

上面語法意義:把待轉(zhuǎn)字符串轉(zhuǎn)換成int類型后賦給變量。

Convert不再僅是內(nèi)存級別的轉(zhuǎn)換,而是考慮數(shù)據(jù)意義的轉(zhuǎn)換。Convert是一個加工、改造的過程。

另,Convert.ToString-每種類型都還有ToString。方法。一切類型都可以轉(zhuǎn)換成string類型。

如果想把int類型的變量a轉(zhuǎn)換成字符串類型有兩種形式:

①、Convert.ToString(a);

②、a.ToStringO;

例:

Console.WriteLine(“請輸入你的年齡:”);

strings=Console.ReadLine0;〃把用戶輸入的內(nèi)容賦值給字符串變量s。

intage=Convert.Tolnt32(s);〃把字符串s轉(zhuǎn)換成int32類型再賦給int型變量age。

intyear=2011-age;

Console.WriteLine("你是{0}年出生的?!?year);

字符串類型無法參與數(shù)據(jù)計算,

例:下面計算的結(jié)果不是兩個數(shù)的和,而是兩個字符串的連接:

Console.WriteLine(“請輸入語文成績:”);

stringChinese=Console.ReadLineO;

Console.WriteLine(“請輸入數(shù)學(xué)成績:”);

stringmath=Console.ReadLineO;

Console.WriteLine(“你的總成績?yōu)?{0}w,Chinese+math);

Console.ReadKey();

下面計算的是兩個數(shù)值的和:

Console.WriteLine(“請輸入語文成績:”);

stringChinese=Console.ReadLineO;

Console.WriteLine(“請輸入數(shù)學(xué)成績:”);

stringmath=Console.ReadLineO;

intchineseScore=Convert.Tolnt32(chinese);

intmathScore=Convert.Tolnt32(math);

Console.WriteLine("你的總成績?yōu)椋簕0}“,ChineseScorc+mathScore);

Console.ReadKey();

簡寫法:

Console.WriteLine(“請輸入語文成績:”);

intChinese=Convert.ToTnt32(Console.ReadLine());

Console.WriteLine(“請輸入數(shù)學(xué)成績:”);

intmath=Convert.Tolnt32(Console.ReadLine());

Console.WriteLine(“你的總成績?yōu)?{0}w,Chinese+math);

Console.ReadKey();

“+”號的意義:

①、作為運(yùn)算符進(jìn)行數(shù)值運(yùn)算;

②、連接字符串。

如果“十”號兩邊是數(shù)值型,則是運(yùn)算意義,如果兩邊至少有一邊是字符串,則是連接意義。

Console.WriteLine(“張三的年齡為:”+age);

〃上面語句括號中,加號可以連接兩個字符串,加號兩邊只要有一塊是字符串類型,加號起到的就是連接作用,系統(tǒng)會自

動把其它類型轉(zhuǎn)換成字符串類型,在這里,一切數(shù)據(jù)類型都可以自動轉(zhuǎn)換為字符串類型。

“y-catch的使用(簡單用法)

try-catch用于捕獲程序運(yùn)行時的錯誤。

語法格式:

try

有可能出現(xiàn)錯誤的代碼寫在這里;

}

catch

出錯后的處理;如果try中的代碼出現(xiàn)異常,則進(jìn)入catch中

如果try中的代碼沒有出錯,則程序正常運(yùn)行完try中的內(nèi)容后,不會執(zhí)行catch中的內(nèi)容。如果try中的代碼一旦出錯,程序

立即跳入catch中去執(zhí)行代碼,那么try中出錯的代碼后面的代碼就不再執(zhí)行了。

例如:

try

(

Console.WriteLine("請輸入語文成績:");

intchinese=Convert.Tolnt32(Console.ReadLine());〃此處彳1*可能會出現(xiàn)用戶輸入錯誤

Console.WritcLine(“請輸入數(shù)學(xué)成績:”);

intmath=Convert.Tolnt32(Console.ReadLine());〃此處有可能會出現(xiàn)用戶輸入錯誤

Console.WriteLine(“你的總成績?yōu)?{0}w,Chinese+math);

}

catch

(

Console.WriteLine(“你剛剛輸入的數(shù)據(jù)導(dǎo)致程序出錯,請重新運(yùn)行本程序!”);

)

Console.ReadKey();

練習(xí):

寫程序之前要先設(shè)計算法,保證自己先知道怎么算

1、讓學(xué)生輸入其姓名和語文、數(shù)學(xué)、英語的成績,編程求總分和平均分,并在屏幕上顯示:XX,你的總分?jǐn)?shù)為XX分,

平均分為XX分。

Console.WriteLine(“請輸入你的姓名:");

stringname=Console.ReadLine();

Console.WriteLine(“請輸入你的語文成績:”);

doubleChinese=Convert.Tolnt32(Console.ReadLine());

Console.W'riteLine(“請輸入你的數(shù)學(xué)成績:”);

doublemath=Convert.Tolnt32(Console.ReadLineO);

Console.WriteLine(“請輸入你的英語成績:");

doubleenglish=Convert.ToTnt32(Console.ReadLine());

doubletotalScore=chinese+math+english;〃此步驟可以宜接寫到下面的輸出語句中

doubleaverage=totalScore/3;〃此步驟可以直接寫到下面的輸出語句中

Console.WriteLine(a{0},你的總分?jǐn)?shù)為{1}分,平均分為{2}分",name,totalScore,average);

Console.ReadKey();

2、編程實(shí)現(xiàn)計算用戶輸入的天數(shù)(如46天)是幾周零幾天。

Console.WriteLine(“請輸入要計算的天數(shù):”);

intdays=Convert.Tolnt32(Console.ReadLine());

intweeks;

weeks二days/7;

intmod=day%7;

Console.WriteLine("{0}天中有{1}周零{2}天",day,week,mod);

Console.ReadKey();

3、編程實(shí)現(xiàn):計算用戶輸入的天數(shù)是幾月幾周零幾天。假設(shè)一個月按30天。

方法一:

Console.WriteLine(“請輸入要計算的天數(shù):”);

intdays=Convert.Tolnt32(Console.ReadLineO);

intmonth=days/30;〃整除得出days中有幾個月

intweek=(days-month*30)/7;〃得出剩下的天數(shù)中有幾周

intday=days-month*30-week*7;〃得出去掉月數(shù)和周數(shù)剩下的天數(shù)

Console.WriteLine("{0}天中共有{1}月{2}周零{中天",days,month,week,day);

Console.ReadKey();

方法二:

Console.WriteLine(“請輸入要計算的天數(shù):”);

intdays=Convert.Tolnt32(Console.ReadLineO);

Console.WriteLine("{0}天中共有{1}月{2}周零{3}天",days,days/30,days%30/7,days%30%7);

Console.ReadKey();

4、編程實(shí)現(xiàn):計算107653秒是幾天幾小時幾分鐘幾秒。

intseconds=107653;

intdays=seconds/(3600*24);//計算seconds中有多少天

intmod=seconds%(3600*24);〃除去上面的天數(shù)還剩多少秒

inthours=mod/3600;〃計算剩余秒數(shù)中有多少小時

mod=mod%3600;〃取余計算上面剩下的秒數(shù)中再除去小時后還剩下多少秒

intminute=mod/60;〃計算剩余的秒數(shù)中有幾個60秒,就是有多少分鐘

intsec=mod%60;〃取余計算除去分鐘數(shù)最后還剩下多少秒

Console.WriteLine("{0}秒中共有{1}天⑵小時零⑶分{4}秒“,seconds,days,hours,minute,sec);

Console.ReadKey();

注意:語句mod=mod%3600;中變量mod的用法,理解mod參與運(yùn)算后把結(jié)果再次賦給mod。

如果希望讓用戶輸入一個秒數(shù),則只需要在前面程序的基礎(chǔ)上做如下改動:

把第一個語句修改成:

Console.WriteLine(“請輸入要計算的秒數(shù):");

intseconds=Convert.Tolnt32(Console.ReadLineO);

算術(shù)運(yùn)算符

++:自加一,有前加和后加

格式:age++;,等價于age=age+l;建議使用前者age++,因?yàn)樗膱?zhí)行效率高得多。

以上是后加,前加格式如:++age;o單獨(dú)使用時;兩者運(yùn)算的結(jié)果是一樣的。然而如果將它們放在表達(dá)式中時,則運(yùn)算

的效果將會不一樣。

intage=18;

intsum=age++-10;〃后加,age以原始值參與減10的運(yùn)算后,再以原始值自加1。

Console.WriteLine(^age=fO}w,age);//輸出age的值為:19

Console.WriteLine(asum={0}w,sum);//輸出結(jié)果sum值為:8

Console.ReadKey();

如果上面語句寫成前加:intsum=++age-10;,貝I」,age先進(jìn)行自加1,然后再參與表達(dá)式的運(yùn)算。

最終結(jié)果都是自身加了?,但在表達(dá)式中時,age++是取其原始值參與運(yùn)算,而++age則是先自身加1后再參與運(yùn)算,就是

說,在表達(dá)式中,age++取age原值,++age取age加1后的新值。

因此在上面程序段中,若改成前加(intsum=++age-10;),貝ijage=19,sum=9。

總之,不管是++age還是age++,經(jīng)過運(yùn)算后,age的值都進(jìn)行了加1運(yùn)算。

:自減一,有前減和后減

格式:age一;,等價于age二ageT;。其原理和++相同。

在c#中,一般情況下,一元運(yùn)算符的優(yōu)先級大于二元運(yùn)算符。一元運(yùn)算符++和一比二元的+和-優(yōu)先級高

①、intresult=10+number++;〃可以理解成:

intresult=10+number;

number=number+l;

②、intresult=10+++number;〃可以理解成:

number=number+1;

intresult=10+number;

③、intresult=10+number一;〃可以理解成:

intresult=10+number;

number=number-1;

④、intresult=10+—number;〃可以理解成:

number=number-1;

intresu11=10+number;

五個復(fù)合運(yùn)算符:

①+二:

格式:age+=3;等價于age=age+3;

②一二:

格式:age-=3;等價于age=age-3;

③*=

格式:age*=3;等價于age=age*3;

④/-:

格式:age/=3;等價于age=age/3;

⑤%=:

格式:age%=3;等價于age=age%3;

關(guān)系運(yùn)算符(用于比較運(yùn)算)

在C#中,有六個關(guān)系運(yùn)算符,用于比較兩個事物之間的關(guān)系。

>和<大于和小于

==和!=等于和不等于

>=和<=大于等于和小于等于

關(guān)系表達(dá)式:由關(guān)系運(yùn)算符連接起來的表達(dá)式。

關(guān)系運(yùn)算符運(yùn)算的結(jié)果是布爾類型。

bool類型(布爾)

用于表示一個條件是否成立

布爾類型變量的定義格式:boolisRight;

關(guān)系表達(dá)式的運(yùn)算結(jié)果是bool類型,布爾(bool)類型只有兩個值:true(真)false(假)o

如果關(guān)系表達(dá)式的運(yùn)算結(jié)果成立,則這個表達(dá)式的值為true,否則為false。

例:

intzsAge=20;

intlsAge=18;

boolisRight=zsAge<IsAge;〃關(guān)系表達(dá)式不成立

Console.WriteLine(isRight);〃輸出的結(jié)果為:false

Console.ReadKey();

再如:

intelephant=1500;

intmouse=l;

boolisRight=elephant>mouse;〃關(guān)系成立

Console.WriteLine(isRight);〃輸出結(jié)果為:true

Console.ReadKey();

注意:只有相同類型的兩個變量才能比較,兩個string類型之間無法進(jìn)行大于或小于的比較,只能進(jìn)行等于不等于的比較。

邏輯運(yùn)算符:&&I!

①&&【邏輯與】

格式:表達(dá)式一&&表達(dá)式二

當(dāng)兩個表達(dá)式全為true時,其結(jié)果才為true,否則結(jié)果均為false。如下表

邏輯與連接的兩個表達(dá)式,要能夠求解成bool類型,一般情況下都是關(guān)系表達(dá)式。整個邏輯與運(yùn)算的結(jié)果也是bool類型。

表達(dá)式一表達(dá)式二邏輯與運(yùn)算結(jié)果

TrueTrueTrue

TrueFalseFalse

FalseTrueFalse

FalseFalseFalse

例:

intage=20;

intwight=120;

boolresult=(age>=18)&&(wight>=100);〃兩個表達(dá)式都為True

Console.WriteLine(result);〃運(yùn)算結(jié)果為True

Console.ReadKey();

程序會先進(jìn)行關(guān)系運(yùn)算再進(jìn)行邏輯運(yùn)算,所以上面語句中可以不用加括號。

關(guān)系運(yùn)算符的優(yōu)先級大于邏輯與和邏輯或運(yùn)算符。

②11【邏輯或】

格式:表達(dá)式一II表達(dá)式二

當(dāng)兩個表達(dá)式中至少有一個為true時,其結(jié)果就為true。

邏輯或連接的兩個表達(dá)式,要能夠求解成bool類型,一般情況下都是關(guān)系表達(dá)式。整個邏輯或運(yùn)算的結(jié)果也是bool類型。

表達(dá)式一表達(dá)式二邏輯與運(yùn)算結(jié)果

TrueTrueTrue

TrueFalseTrue

FalseTrueTrue

FalseFalseFalse

例:如果火車站規(guī)定,?個人的身高>=120cm或者體重>=50kg,就必須買票。

Console.WriteLine(“請輸入你的身高(cm):”);

inthight=Convert.Tolnt32(Console.RcadLine());

Console.WriteLine("請輸入你的體重(kg):”);

intwight=Convert.Tolnt32(Console.RcadLine0);

boolresult=hight>=120|wight>=50;〃程序會先進(jìn)行關(guān)系運(yùn)算再進(jìn)行邏輯運(yùn)算。

Console.WriteLine(result);

Console.ReadKey();

關(guān)系運(yùn)算符的優(yōu)先級大于邏輯與和邏輯或運(yùn)算符。

③!【邏輯非】

格式:!(布爾類型的表達(dá)式)〃這是一個一元運(yùn)算符,

作用:使布爾類型表達(dá)式的結(jié)果取反。如果表達(dá)式的結(jié)果為true,則取反后結(jié)果為false;反之,如果表達(dá)式的結(jié)果為

false,則取反后結(jié)果為true。

表達(dá)式!表達(dá)式

TrueFalse

FalseTrue

一元運(yùn)算符優(yōu)先級大于一.元運(yùn)算符。

練習(xí):

1、讓用戶輸入張三的語文和數(shù)學(xué)成績,然后根據(jù)條件判斷,返回布爾型結(jié)果。

Console.WriteLine(“請輸入張三的語文成績:”);

intChinese=Convert.ToTnt32(Console.ReadLine());

Console.WriteLine(“請輸入張三的數(shù)學(xué)成績:”);

intmath=Convert.Tolnt32(Console.ReadLine());

boolfirst=Chinese>90&&math>90;

boolsecond=Chinese>90I|math>90;

Console.WriteLine("\w張三的語文和數(shù)學(xué)都大于90分\”的結(jié)果為:{0}w,first);

Console.WriteLine(u\w語文和數(shù)學(xué)至少一門大于90分'”的結(jié)果為:{0}”,second);

Console.ReadKey();

2、讓用戶輸入一個年份,判斷:如果是潤年則輸出true,如果不是則輸出false。

潤年的判定需要符合下面兩個條件之一:①.年份能夠被400整除;②.年份能夠被4整除但不能被100整除。

Console.WriteLine(“請輸入一個年份:”);

intyear=Convert.Tolnt32(Console.ReadLine());

boolresult=(year%400~0)||((year%4~0)&&(year%100!=0));

Console.WriteLine(result);

Console.ReadKey();

上面判斷的語句中,三個表達(dá)式如果不加括號,則從運(yùn)算符的優(yōu)先級來說,也不會出錯。但是,為了程序的直觀可讀性,最

好加上括號。而且在不清楚運(yùn)算符優(yōu)先級的情況下,使用括號也可以有效地避免出錯。

邏輯與的短路現(xiàn)象:

inta=10;

intb=5;

boolresult=++a>50&&++b>l;

Console.WriteLine(ua={0)b={1}M,a,b);〃結(jié)果:a=llb=5

Console.ReadKey();

〃由于左邊的表達(dá)式++a>50的判斷結(jié)果為False,則由此即可判斷出result的結(jié)果為False,所以右邊的表達(dá)式“++b>I”就

不會執(zhí)行判斷,當(dāng)然變量b的值也不會自增1。這就是邏輯與的短路現(xiàn)象。

邏輯或的短路現(xiàn)象:

inta=10;

intb=5;

boolresult=++a>5|;++b>l;

Console.WriteLine("a={0}b={l}w,a,b);〃結(jié)果:a=llb=5

Console.ReadKey();

//由于左邊的表達(dá)式++a>5的判斷結(jié)果為True,則由此即可判斷出result的結(jié)果為True,所以右邊的表達(dá)式“++b>l”就不會

執(zhí)行判斷,當(dāng)然變量b的值也不會自增1。這就是邏輯或的短路現(xiàn)象。

程序結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

分支結(jié)構(gòu)----if、if-else、if-elseif>switch-case

if結(jié)構(gòu)

基本語法:

if(條件)〃條件可以是關(guān)系表達(dá)式或邏輯表達(dá)式

{語句1;)〃用一對大括號來組成語句塊

執(zhí)行過程:首先判斷條件的結(jié)果,如果條件為true,則執(zhí)行后面的語句1,如果條件為false,則跳過語句1,執(zhí)行后面

的語句。

注意:

①、if后面括號中的條件,要能計算成個bool類型的值;

②、默認(rèn)情況下,if語句只能帶一個語句,即帶和if語句有關(guān)系的語句(只有語句D。

③、在if語句中,如果想讓if帶多個語句,則可以用{}把這多個語句括起來組成語句塊。

if(條件)

(

語句1;

語句2;

語句n;

)

執(zhí)行過程:如果條件為false,則跳過if后的語句塊中的所有語句。

要求:我們在寫程序時,哪怕if語句只帶一個語句,也要把它寫在大括號中。

例如:

inta=3;

if(a>l)

Console.WriteLine("成立");〃if默認(rèn)只帶這一句話

Console.WriteLine(“程序結(jié)束”);〃此句話和if沒有關(guān)系

Console.ReadKey();

練習(xí):

1、讓用戶輸入年齡,如果輸入的年齡大于18歲,則給用戶顯示“你已成年”。

Console.WriteLine(“請輸入你的年齡:”);

intage=Convert.Tolnt32(Console.ReadLineO);

if(age>=18)

(

Console.WriteLine("你已成年”);〃條件成立時運(yùn)行這個語句

)

Console.WriteLine(“你是未成年人。”);〃條件不成立時運(yùn)行這個語句

Console.ReadKey();

2、編程實(shí)現(xiàn):如果張三的考試成績大于90分,那么獎勵他100元。

Console.WriteLine(“請輸入考試成績:”);

intres=Convert.Tolnt32(Console.ReadLineO);

if(res>=90)

(

Console.WriteLine(“成績達(dá)到90分及以上,獎勵100元!”);

}

Console.WriteLine(“你的成績不到90分,沒有獎勵給你。;

Console.ReadKey();

3、如果線三的語文成績大于90并且音樂成績大于80,或者語文成績等于100并且音樂成績大于70,則獎勵100元。使用if語

句編程如下:

Console.WriteLine("請輸入語文成績:");

intsernam=Convert.Tolnt32(Console.ReadLineO);

Console.WriteLine("請輸入音樂成績:”);

intmusic=Convert.ToTnt32(Console.ReadLine0);

if((sernam>=90&&music>=80)||(Chinese==100&&music>=70))

(

Console.WriteLine("獎勵100元!”);

)

Console.WriteLine(“你不符合獎勵條件,沒有獎勵給你。;

Console.ReadKey0;

4、讓用戶輸入用戶名和密碼,如果用戶名為admin,密碼為mypass,則提示登錄成功。

Console.WriteLine(“請輸入用戶名:”);

stringid=Console.ReadLine();

Console.WriteLine(“請輸入密碼:");

stringkey=Console.ReadLineO;

if(id="admin"&&key=二"mypass")

Console.WriteLine("登錄成功!");

Console.WriteLine("用戶名和密碼無效");

Console.ReadKey();

if-else

語法:

if(條件)〃如果條件成立,則執(zhí)行語句塊1

(

語句塊1

)

else〃否則,執(zhí)行語句塊2

(

語句塊2

)

執(zhí)行過程:如果條件為true,則執(zhí)行if帶的語句塊1,且跳過else帶的語句塊2:如果條件為false,則跳過if帶的語句塊1,

執(zhí)行else帶的語句塊2。

例:

如果張三的考試成績大于等于90分,那么獎勵100元錢,否則,就寫學(xué)習(xí)總結(jié)。

Console.WriteLine(“請輸入考試成績:”);

intres=Convert.Tolnt32(Console.ReadLineO);

if(res>=90)

{

Console.WriteLine("獎勵100元!");

)

if(res<90)

(

Console.WriteLine(“快點(diǎn)寫學(xué)習(xí)總結(jié)!");

)

Console.ReadKey();

if-else寫法:

Console.WriteLine(“請輸入考試成績:”);

intres=Convert.Tolnt32(Console.ReadLineO);

if(res>=90)

(

Console.WriteLine("獎勵100元!“);

}

else

Console.WriteLine("快點(diǎn)寫學(xué)習(xí)總結(jié)!”);

Console.ReadKey();

練習(xí):

1、蓋茨買了一筐雞蛋,如果壞蛋少于5個,他就吃掠,否則就去退貨。

Console.WriteLine("請輸入蓋茨買的雞蛋中壞蛋的數(shù)量:”);

intege=Convert.Tolnt32(Console.ReadLine());

if(ege<5)

(

Console.WriteLine("吃掉雞蛋”);

)

else

(

Console.WriteLine("退貨”);

)

Console.ReadKey();

2、要求用戶輸入兩個數(shù)a、b,如果a能被b整除或者a+b大于100,則輸出a,否則輸出b0

Console.WriteLine(“請輸入一個數(shù):");

intnumA=Convert.Tolnt32(Console.ReadLine());

Console.WriteLine("請再輸入一個數(shù):");

intser=Convert.Tolnt32(Console.ReadLine());

if(a%b==0||(a+b)>100)

(

Console.WriteLine(a);

)

else

(

Console.WriteLine(b);

}

Console.ReadKey();

3、對學(xué)員的結(jié)業(yè)考試成績評測:如果成績>=90則顯示A;90>成績>=80顯示B;80>成績>=70顯示C;70>成績>=60顯示D;成

績<60顯示Eo

①、if寫法:

Console.WriteLine(“請輸入結(jié)業(yè)考試成績:”);

intscore=Convert.Tolnt32(Console.ReadLineO);

if(score>=90)

Console.WriteLine(UAV);

if(score>=80&&score<90)〃括號中的表達(dá)式不可以寫成:(90>score>=80)

(

Console.WriteLine(;

)

if(score>=70&&score<80)

(

Console.WriteLine(UCW);

)

if(score>=60&&score<70)

(

Console.WriteLine(;

)

if(score<60)

(

Console.WriteLine(aEw);

)

Console.ReadKey();

②、if-else寫法:

Console.WriteLine(“請輸入結(jié)業(yè)考試成績:”);

intscore二Convert.Tolnt32(Console.ReadLine());

if(score>=90)

(

Console.WriteLine(;

)

else

(

if(score>=80)

(

Console.WriteLine(aBw);

)

else

(

if(score>=70)

Console.WriteLine();

}

else

if(score>=60)

Console.WriteLine();

)

else

(

Console.WriteLine(;

)

)

)

)

Console.ReadKey();

本程序的if-eIse-if寫法

③、if-else-if寫法:

Console.WriteLine(“請輸入結(jié)業(yè)考試成績:”);

intscore=Convert.Tolnt32(Console.ReadLine0);

if(score>=90)

(

Console.WriteLine(aAw);

)

elseif(score>=80)

(

Console.WriteLine(;

)

elseif(score>=70)

(

Console.WriteLine("C”);

)

elseif(score>=60)

(

Console.WriteLine(aDw);

)

else

(

Console.WriteLine(aEw);

}

Console.ReadKey();

if-else-if

語法:

if(條件1)

()

elseif(條件2)

(}

elseif(條件n)

(}

else

()

在if-else-if語句中,只有當(dāng)上個條件不成立時,才會進(jìn)入卜?個if語句并進(jìn)行if語句后面的條件判斷。?旦有--個if后

面的條件為true,則執(zhí)行此if所帶的語句(塊),語句(塊)執(zhí)行完成后,程序跳出if-else-if結(jié)構(gòu)。如果所有的if條件都不成

立,則如果最后有else,則執(zhí)行else所帶的語句,否則什么都不執(zhí)行

注:else永遠(yuǎn)只和離它最近的if配對使用組成if-else結(jié)構(gòu)

在VS中,設(shè)置一個斷點(diǎn),便于分析調(diào)試程序的運(yùn)行過程及原理。

在VS中,自動排版快捷鍵:Ctrl+KF

練習(xí):

1、提示用戶輸入密碼,如果密碼是“888888”則提示正確,否則要求再輸入一次,再判斷如果密碼是“888888”則提示正

確,否則提示錯誤,程序結(jié)束。

Console.WriteLine(“請輸入密碼:");

stringkey=Console.ReadLineO;

if(key=="888888”)

(

Console.WriteLine(“密碼正確!");

)

else

(

Console.WriteLine("密碼錯誤,請再輸入一次:”);

stringkey2=Console.ReadLineO;

if(key2==”888888")

(

Console.WriteLine(“密碼正確!”);

)

else

(

Console.WriteLine("密碼錯誤!程序結(jié)束");

)

)

Console.ReadKey();

2、提示用戶輸入用戶名和密碼,如果用戶名是“admin”并且密

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論