版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 1.4國土面積(拔尖作業(yè))2024-2025學(xué)年四年級上冊數(shù)學(xué) 北師大版(含解析)
- 《消防設(shè)施操作員》2024年海南省中級技能-維保方向上半年-真題卷B卷
- 《論語》導(dǎo)讀(復(fù)旦版)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 海南省??谑协偵絽^(qū)2024-2025學(xué)年五年級上學(xué)期第一次月考英語試卷
- 三角形圓角矩形與上升箭頭
- 四川省宜賓市敘州區(qū)龍文學(xué)校2023-2024學(xué)年八年級上學(xué)期開學(xué)數(shù)學(xué)試卷
- 2023-2024學(xué)年甘肅省河西五市普通高中高三下學(xué)期高考模擬考試數(shù)學(xué)試題(理工類)試卷
- 母嬰用品展位裝修合同
- 機(jī)器人研發(fā)實(shí)驗(yàn)室裝修合同
- 影視制作居間服務(wù)補(bǔ)充協(xié)議
- 《網(wǎng)頁設(shè)計與制作》課程說課
- 江蘇省徐州市銅山區(qū)2023-2024學(xué)年七年級上學(xué)期期中語文試題
- 魯迅《風(fēng)波》課件
- “雨露計劃”貧困家庭子女接受職業(yè)教育補(bǔ)助資金申請表
- 保持教學(xué)生命力讀后感
- Lesson18LiMing'sBirthday課件冀教版英語八年級上冊
- 學(xué)校較大食品安全事故(Ⅲ級)應(yīng)急演練腳本
- 達(dá)芬奇系統(tǒng)在胸外科手術(shù)課件
- LED顯示屏驗(yàn)收單行業(yè)資料家電行業(yè)
- 調(diào)度規(guī)程及安全管理
- GB/T 5310-2023高壓鍋爐用無縫鋼管
評論
0/150
提交評論