怎么計(jì)算一元十五次方程(五十個一元一次方程)
659
2025-04-02
2.1? C#的基本語法
C#代碼的外觀和操作方式與C++和Java非常相似。初看起來,其語法比較混亂,
不像書面英語和其他語言。但是,在C#編程中,使用的樣式是比較清晰的,不用花太多的力氣就可以編寫出可讀性很強(qiáng)的代碼。
與其他語言的編譯器不同,無論代碼中是否有空格或回車符或tab字符(這些字符統(tǒng)稱為空白字符),C#編譯器都不考慮這些字符。這樣格式化代碼時就有很大的自由度,但遵循某些規(guī)則將有助于使代碼易于閱讀。
C#代碼由一系列語言組成,每一個語句都用一個分號來結(jié)束。因?yàn)榭崭癖缓雎裕砸恍锌梢杂卸鄠€語句,但從可讀性的角度來看,通常在分號后面加上回車符,這樣就不能在一行上放置多個語句了。但一句代碼放在多個行上是可以的。
C#是一塊結(jié)構(gòu)的語言,所有的語句都是代碼塊的一部分。這些塊用花括號來界定(“{”和“}”),代碼塊可以包含任意多行語句,或者根本不包含語句。注意花括號字符不需要附帶分號。
所以,簡單的C#代碼如下所示:
{
;
}
其中部分并不是正真的C#代碼,而是用這個文本作為C#語句的占位符。注意在這段代碼中,第2,3行代碼是同一個語句的一部分,因?yàn)樵诘?行的末尾沒有分號。
在這個簡單的代碼中,還使用了縮進(jìn)格式,使C#代碼的可讀性更高。這不是某些人的發(fā)明,而是一個標(biāo)準(zhǔn)規(guī)則,實(shí)際上在默認(rèn)情況下VS會自動縮進(jìn)代碼。一般情況下,每個代碼都會有自己的縮進(jìn)級別,即它向右縮進(jìn)了多少。代碼塊可以互相嵌套,而被嵌套的塊要縮進(jìn)得多一些。
{
;
{
;
;
}
}
前面代碼的續(xù)寫通常也要所近得多一些,如上面第一個示例中的第3行代碼。
在C#代碼中,另一個常見的語句是注釋。注釋并不是嚴(yán)格意義上的C#代碼,但代
碼最好有注釋。注釋就是解釋,即給代碼添加描述性文本,編譯器會忽略這些內(nèi)容。在開始處理比較長的代碼段時,注釋可用于給正在進(jìn)行的工作添加提示,例如“這行代碼要求用戶輸入一個數(shù)字”,或“這段代碼由Bob編寫”。C#添加注釋的方式有兩種。可以在注釋的開頭和結(jié)尾放置標(biāo)記,也可以使用一個標(biāo)記,其含義是“這行代碼的其余部分是注釋”。在C#編譯器忽略回車符的規(guī)則中,后者是一個例外,但這是一種特殊情況。
要使用第一種方式標(biāo)記注釋,可以在注釋的開頭加上“/*”,在末尾加上“*/”。這些注釋符號可以在單獨(dú)一行上,也可以在不同的行上,注釋符號之間的所有內(nèi)容都是注釋。注釋中唯一不能輸入的是“*/”,因?yàn)樗鼤豢醋髯⑨尳Y(jié)束標(biāo)記。所以下面的語句是正確的。
/* This is a comment */
/* And so…
…is this!*/
但下面的語句會產(chǎn)生錯誤:
/*Comments often end with “*/”characters*/
注釋結(jié)束符號后的內(nèi)容(“*/”后面的字符)會被當(dāng)作C#代碼,因此產(chǎn)生錯誤。
另一個添加注釋的方法是用“//”開始一個注釋,其后可以編寫任何內(nèi)容,只要這些內(nèi)容在一行上可即可。下面的語句是正確的:
//? 雙行注釋
但下面的語句會失敗,因?yàn)榈诙写a會解釋為C#代碼:
//So is this,
But this bit isn’t.
這類注釋可用于語句的說明,因?yàn)樗麄兌挤旁谝恍猩希?/p>
前面說過有兩種方法給C#代碼添加注釋。但在C#中,還有第三類注釋,嚴(yán)格地說,這是//語法的擴(kuò)展。他們都是單行注釋,用三個“/”符號來開頭,而不是兩個。
/// 特殊的注釋
在正常情況下,編譯器會忽略他們,就像其他注釋一樣,但可以配置VS,在編譯項(xiàng)目時,提取這些注釋后面的文本,創(chuàng)建一個特殊格式的文本文件,該文件可用于創(chuàng)建文檔說明書。
特別要注意的一點(diǎn)是,C#代碼是區(qū)分大小寫的。與其他語言不同,必須使用正確的大小寫形式輸入代碼,因?yàn)楹唵蔚赜么笮懽帜复嫘懽帜笗袛囗?xiàng)目的編譯。
2.2???? 變量
首先我們應(yīng)該說明一下為什么計(jì)算機(jī)語言會需要變量,我們來看一個例子。假如你
現(xiàn)在要去買一臺電腦,假設(shè)我們知道這臺電腦的標(biāo)價是5000元,而現(xiàn)在恰逢國慶節(jié)打折,折扣率是10%,我們現(xiàn)在來計(jì)算這臺電腦的價格。一般情況下我們會這樣計(jì)算:首先我們要求出折扣了多少錢5000*10%=500元,然后我們只需要用5000-500就可以求出真實(shí)價格4500元。很顯然在這里又一個問題:我們開始算出來的500這個折扣額需要在后面使用,在日常生活中,我們可以把這個數(shù)寫在紙上或記住,然后再做后面的運(yùn)算。那么對于計(jì)算機(jī)來說需要怎么做才能完成任務(wù)呢,事實(shí)上,計(jì)算機(jī)會把這個值記在內(nèi)存里,以便進(jìn)行下面的運(yùn)算,這就用到了變量。什么是變量?變量就是程序語言中存儲數(shù)據(jù)的基本單元。
計(jì)算機(jī)操作如下:
1.?????? 首先定義變量存儲電腦價格5000。
2.?????? 執(zhí)行價格*10%求出折扣額。
3.?????? 將折扣額這個中間結(jié)果存入變量。
4.?????? 將價格與折扣額相減。
5.?????? 將真是的價格存入結(jié)果變量。
顯而易見,變量對應(yīng)一塊能存東西的內(nèi)存單元。程序語言通常使用變量來存儲數(shù)據(jù),使用變量可以引用存儲在內(nèi)存中的數(shù)據(jù),并隨時根據(jù)需要顯示數(shù)據(jù)或修改數(shù)據(jù)。另外如前所述,變量是有類型的,不同類型的變量可以存儲不同數(shù)據(jù)類型的數(shù)據(jù)。數(shù)據(jù)類型的概念我們稍后再說,下面來看一下C#中變量定義的語法:
數(shù)據(jù)類型 名?? 變量名
或
數(shù)據(jù)類型名? 變量名=初始值
比如我們可以定義整型的年齡變量:
int?age=20;
上面我們定義了一個整型的變量age,并且讓這個變量的初始值為20。當(dāng)你定義一個變量后,系統(tǒng)會根據(jù)此變量的數(shù)據(jù)類型為這個變量分配一塊存儲數(shù)據(jù)的內(nèi)存,此后可以通過變量名來引用這個變量(就好比人名可以引用某個人一樣)。
2.2.1?? 簡單類型
變量中,簡單類型實(shí)際上就是值類型,值類型的數(shù)據(jù)類型基本上可以歸納為三類:
第一類是整數(shù)型,包括int,long等,他們都可以定義整數(shù)變量。第二類是浮點(diǎn)型,它們包括float,double等,他們可以定義小數(shù)類型的變量。第三類是字符型和布爾型,包括char,bool等類型,他們可以定義字符串或者邏輯類型的變量。
整數(shù)類型的常用類型有(如下表):
名????? 稱
符號
大小(字節(jié))
范????? 圍
字節(jié)類型
sbyte
1
-128到127
無符號字節(jié)類型
byte
1
0到255
整型
int
4
-2147483648到2147483647
無符號整型
uint
4
0到4294967295
短整型
short
2
-32768到32767
無符號短整型
ushort
2
0到65535
長整型
long
8
-9223372036854775808到9223372036854775807
無符號長整型
ulong
8
0到18446744073709551615
整數(shù)型也叫整形,是最常用的數(shù)據(jù)類型。使用整數(shù)定義的變量只能存儲整型的數(shù)字,各種整型變量對應(yīng)的內(nèi)存參照表中的“大小”一欄,變量能保存的數(shù)值范圍參照表中“范圍”一欄。我們可以用整型定義人的年齡,國家的人口,日期的天數(shù)以及商品的數(shù)量等。
你可能會用疑問,不就是一個整數(shù)么,為什么整數(shù)需要這么多數(shù)據(jù)類型,而且你會發(fā)現(xiàn)每一種數(shù)據(jù)類型都有無符號和有符號兩種。實(shí)際上,不管是int還是byte,不管是有符號還是無符號,都是為了更精確的說明和體現(xiàn)變量的真正含義,比如你定義天數(shù)最好使用ushort,因?yàn)樘鞌?shù)沒有負(fù)數(shù)并且天數(shù)的范圍剛好適合ushort,一旦你這樣定義了,那么如果給天數(shù)一個負(fù)數(shù)或者給天數(shù)一個特大的數(shù),編譯器將提示你這個數(shù)字不合法。這就可以初步保證正確的使用該變量。
整數(shù)型就先介紹到這里,下面我們來看常用的浮點(diǎn)型(如下表):
名????? 稱
符號
大小(字節(jié))
范????? 圍
浮點(diǎn)型
float
4
+-
雙精度浮點(diǎn)型
double
8
高精度浮點(diǎn)型
decimal
16
浮點(diǎn)型可以表示小數(shù)或整數(shù)值,也因此浮點(diǎn)型的變量可以保存整數(shù)和小數(shù)兩種數(shù)字。雖然說浮點(diǎn)型也可以保存整數(shù)數(shù)字,但浮點(diǎn)型真正的用途是來表示有精度要求的小數(shù)。比如正弦值等。
各類浮點(diǎn)型變量的內(nèi)存大小參照上表中“大小”一欄,通常越大的浮點(diǎn)型能保存的數(shù)值精度越高。
對于浮點(diǎn)型的數(shù)字通常要使用后綴來指明其數(shù)據(jù)類型。對于decimal類型的數(shù)字要使用后綴m或M;對于float類型的數(shù)字要使用后綴f或F;對于double類型的數(shù)字要使用后綴df或D,如20.4d等。這里要注意:如果一個小數(shù)沒有使用后綴,那么此小數(shù)數(shù)值默認(rèn)情況下是double類型。如果你將一個double類型的數(shù)值給一個float變量就會發(fā)生類型不匹配的錯誤,如:
float? m=2.2;
“2.2”默認(rèn)為double型,要給浮點(diǎn)型變量賦值應(yīng)該為:
float? m=2.2f;
上面介紹了整數(shù)型和浮點(diǎn)型,最好我們來看字符型和布爾型(如下表):
名????? 稱
符號
大小(字節(jié))
范????? 圍
字符型
char
2
16位 Unicode 字符
布爾型
bool
1
true 和false
字符型變量用于保存和表示世界上已知書面語言中的一個字符。對于C#中的字符
型,熟悉C/C++語言的朋友要特別注意,在C/C++語言中char型大小為一個字節(jié),只能表示一個英文字符,而C#中字符型有兩個字節(jié),可以表示世界上任何語言的字符。在C#中表示一個字符時應(yīng)該帶有單引號,字符類型變量的定義和使用方法如下:
char enchar=’M’;
char cnchar=’ 國’;
對于布爾型,它可以用來表示邏輯判斷的“真”和“假”。翻開邏輯學(xué)相關(guān)的書籍你會找到“真”和“假”的含義,我們說,給一個命題比如“所有人是動物“,如果這個命題成立,我們就認(rèn)為此命題返回的結(jié)果為“真”,反之返回的結(jié)果為“假”。邏輯學(xué)中使用真和假來表示邏輯判斷的結(jié)果,C#語言使用ture和false兩個值來表示邏輯判斷的真和假,這是C#語法。布爾型變量定義和使用方法如下:
bool?? trbool=true;
bool?? fsbool=false;
bool??? mybool=x>y;
到現(xiàn)在為止,我們介紹完了C#中所有值類型的數(shù)據(jù)類型。最后我們來看一下值類型的一個綜合示例:
using System;
namespace myText
{
Class Text
{
static void Main(string[] args)
{
int cx=10,cy=12,cr=0;
cr=cx*cy;
Console.WriteLine(“長方形的長是:{0},寬是:{1}”,cx,cy);
Console.WriteLine(“長方形的面積是:{0}”,cr);
double sx=12,sy=10.5;
Console.WriteLine(“三角形的底是:{0},高是:{1}”,sx,sy);
Console.WriteLine(“三角形的面積是:{0}”,sx*sy/2);
char sx=’C’,sy=’N’;
Console.WriteLine(“{0}{1}表示中國”,sx,sy);
bool bh=cx>cy;
Console.WriteLine(“{0}>{1}是{2}的”,cx,cy,bh);
}
}
}
運(yùn)行結(jié)果:
長方形的長是:10,寬是:12
長方形的面積是:120
三角形的底是:12,高是:10.5
三角形的面積是:63
CN表示中國
10>12是False的
上面的程序我們使用了剛才介紹的大部分?jǐn)?shù)據(jù)類型。
2.2.2 變量的命名
變量在定義時涉及到數(shù)據(jù)類型和變量名兩個元素,數(shù)據(jù)類型是系統(tǒng)定義好的關(guān)鍵
字,而變量名是可以自己定義的。這里著重說一下變量名的命名規(guī)則,變量名的命名主要有三條規(guī)則,變量名的構(gòu)成規(guī)則必須滿足下面條件:
l????????變量名可以由字母 數(shù)字 _(下劃線)組合而成。
l????????變量名必須以字母或_(下劃線)開頭。
l????????C#語言中某些詞(如 int或 float等)稱為保留字,具有特殊意義,不能用作變量名。
要注意的是,C#語言中變量名區(qū)分大小寫,因此變量age和Age是兩個不同的變
量。實(shí)際上,C#程序中有許多需要命名的對象,例如變量名,方法名,類名等,為這些對象起一個名字來標(biāo)識這些對象,這些名字都稱作標(biāo)識符,變量名就是變量標(biāo)識符。C#語言規(guī)定同一種標(biāo)識符不能重名,在這里也就說變量名不能重名,這是變量定義時要注意的問題。至此,我們可以來演練一下變量的定義了:
string? welcom=”歡迎進(jìn)入C#世界”;
int age=20;
double money=30000;
char c=’A’;
從上面的例子我們也可以看出,變量和數(shù)據(jù)類型有著密切的關(guān)系,我們說不同的變
量代表著不同的內(nèi)存存儲空間,并且這塊存儲空間是固定大小的,這樣就決定了變量有一定的存儲范圍,如果變量的值超出這個范圍就會發(fā)生錯誤。而數(shù)據(jù)類型就決定了變量占用內(nèi)存的大小,因此數(shù)據(jù)類型對于變量來說非常重要。
2.2.3 變量的聲明和賦值
學(xué)完變量的命名規(guī)則后,變量的聲明和賦值是非常簡單的。變量在聲明的時候首先要知道所定義的變量是什么類型的,在去聲明你所定義的變量;變量的賦值——變量可以在聲明的時候賦值,也可以聲明后在下面用到該變量時對其進(jìn)行賦值。下面我們來看下變量的聲明和賦值的示例:
int???? age=20;//在聲明變量時直接給變量賦值
或
int??? age;
age =20;//先聲明變量,在對變量進(jìn)行賦值
總的來講,變量的聲明和賦值的語法是:
數(shù)據(jù)類型????? 變量名;
變量名=初始值;
或
數(shù)據(jù)類型???? 變量名=初始值;
2.3運(yùn)算符和表達(dá)式
上一節(jié)我們學(xué)習(xí)了變量,那么變量和變量之間怎么聯(lián)系起來呢?今天我們來學(xué)習(xí)運(yùn)算符和表達(dá)式。
在程序語言中,變量是字詞,通過運(yùn)算符將變量連接成表達(dá)式,表達(dá)式相當(dāng)于語言中的短句。運(yùn)算符最常見的就是加、減、乘、除,這些運(yùn)算符每一個小型的計(jì)算器都有。當(dāng)然程序語言支持的運(yùn)算符不止這些,每個程序語言提供的運(yùn)算符號稍有些不同,但大體上都一樣,在C#語言中主要有以下幾種運(yùn)算符:
★????算術(shù)運(yùn)算符
★????關(guān)系運(yùn)算符
★????邏輯運(yùn)算符
★????賦值運(yùn)算符
運(yùn)算符操作數(shù)的個數(shù),又可分為一元運(yùn)算符和二元運(yùn)算符,一元運(yùn)算符連接一個操作數(shù),二元運(yùn)算符連接兩個操作數(shù),我們常見的加、減、乘、除都是二元運(yùn)算符,他們需要連接兩個操作數(shù)。
運(yùn)算符連接操作數(shù)構(gòu)成表達(dá)式,操作數(shù)可以是變量和常數(shù)(單獨(dú)的一個數(shù)字或字符串等我們都可以稱作常數(shù))。許多小的表達(dá)式可以構(gòu)成大的表達(dá)式。如“(x+y)+(x-y)”中間的加號連接兩個小的表達(dá)式構(gòu)成一個復(fù)雜的表達(dá)式,此時這些小表達(dá)式我們也可以認(rèn)為是操作數(shù),也就是說操作數(shù)也可以是表達(dá)式。事實(shí)上C#中的表達(dá)式和小學(xué)數(shù)學(xué)中的算式有些相似。
★?? 2.3.1算術(shù)運(yùn)算符
下面我們首先來介紹算術(shù)運(yùn)算符,算術(shù)運(yùn)算符是我們最常見的運(yùn)算符,如下圖所示:
算術(shù)運(yùn)算符
作?? 用
示?? 例
+
加法操作
1+2,x+y
-
減法操作
2-1,x-y
*
乘法操作
2*3,x*y
/
除法操作
4、2,x/y
%
取余數(shù)操作
7%2=1,23%10=3
++
自增操作
x++,++x
--
自減操作
x--,--x
算術(shù)運(yùn)算符用來連接操作數(shù)執(zhí)行算術(shù)運(yùn)算。其中前四種都很熟悉了。取余運(yùn)算又叫取模運(yùn)算,是用來取得余數(shù),比如我們要取得12除以5的余數(shù)可以使用“12%5”,結(jié)果是2.關(guān)于自增“++”和自減“--”運(yùn)算符的用法需要注意,我們可以用一種替代算法來解釋他們。如果“x++”或者“++x”單獨(dú)出現(xiàn)在一個語句中那么都相當(dāng)于“x=x+1”(注意:“x++”和“++x”在一定范圍下是有區(qū)別的),相對應(yīng)的自減也類似。
關(guān)于算術(shù)操作符就介紹到這里,下面我們來看一個示例:
usingSystem;
usingSystem.Text;
namespaceText
{
class program
{
static void Main(string[] args)
{
inta=5%2;
doubleb=a+2*5/2.5;
int x=5;
inty=++x;
intz=x++;
Console.WriteLine(“a={0},b={1}”,a,b);
Console.WriteLine(“x={0},y={1},z={2}”,x,y,z);
}
}
}
運(yùn)行結(jié)果:
a=1,b=5
x=7,y=6,z=6
按F5鍵運(yùn)行后,運(yùn)行結(jié)果如上,這里重點(diǎn)要注意z和y的值。運(yùn)行結(jié)果中z和y都為6,你可以把上面的“++”符號換成“--”符號運(yùn)行,結(jié)果z和y都為4.有時我們也形象的稱自增或自減變量“參與表達(dá)式運(yùn)算”為“使用”,如果遞增運(yùn)算符在變量的前面,那么變量先自我遞增然后在“使用”,在這里的“使用”是指“x賦值給y”。如果自增運(yùn)算符在變量后面,那么變量先“使用”再自我遞增。即“++x”是“先運(yùn)算后賦值“,“x++”是“先賦值后運(yùn)算”。
2.3.2關(guān)系運(yùn)算符
事實(shí)上,關(guān)系運(yùn)算符就是我們在小學(xué)三年級學(xué)過的的那些大于 小于 等于等。C#中關(guān)系運(yùn)算符用于測試兩個數(shù)或者兩個表達(dá)式之間的關(guān)系。關(guān)系運(yùn)算符連接操作數(shù)構(gòu)成關(guān)系表達(dá)式,關(guān)系表達(dá)式的計(jì)算結(jié)果為邏輯值true和false,如果此關(guān)系式表達(dá)成立則返回true,否則返回false。C#中的關(guān)系表達(dá)式大都是我們所熟悉的,如下表所示:
關(guān)系運(yùn)算符
作?? 用
示??? 例
>
大于
3>2,x>y
<
小于
2<3,y >= 大于等于 3>=3,x>=y <= 小于等于 2<=3,y<=x == 等于 2==3,x==y != 不等于 2!=3,x!=y 關(guān)系表達(dá)式得到的結(jié)果是邏輯值“真”和“假”。我們在前面提到過,在C#中“真”和“假”使用布爾類型來表示,“真”用小寫true來表示,“假”用小寫false來表示,它們描述了表達(dá)式所表達(dá)的關(guān)系是否成立,如下所示: boolr=3>4;?? //關(guān)系不成立則r為false boolr=3>2;?? // 關(guān)系成立則r為true 關(guān)系表達(dá)式也有一些很復(fù)雜的,比如“(a+b)>(a-b)”等復(fù)合表達(dá)式,關(guān)系表達(dá)式主要用在條件判斷語句中(如if語句等,我們后面將會介紹),表示如果某個條件成立就去執(zhí)行一個操作,如: using System; using System.Text; namespace Text { class Program { static void Main(string[] args) { int a=1,b=2; if(a { Console.WriteLine(“a小于b”); } } } } 運(yùn)行結(jié)果: a小于b 2.3.3邏輯運(yùn)算符 邏輯運(yùn)算符通常連接關(guān)系表達(dá)式從而表示更復(fù)雜的關(guān)系。一般來說,邏輯運(yùn)算符通常使用在if語句中連接一個或多個條件構(gòu)成符合條件。要注意的是,邏輯運(yùn)算符連接成的表達(dá)式還是關(guān)系表達(dá)式,返回值的類型也是布爾型,下表是C#中用到的邏輯運(yùn)算符。 邏輯運(yùn)算符 作? 用 描? 述 && 邏輯“與”操作 “并且”的意思 || 邏輯“或”操作 “或者”的意思 ! 邏輯“非”操作 “不”或“非”的意思 在日常生活中經(jīng)常出現(xiàn)復(fù)雜的條件選擇,不如下面這個例子: “假如我有錢或者我長得帥,那么我可以找個漂亮的女朋友。” 這里的“我有錢”和“我長得帥”兩個條件之間的“或者”就相當(dāng)于使用了邏輯運(yùn)算符“||”,我們再舉一個C#中的例子: if(a>b?&&? a!=0)?? r=b/a; 這個式子意思是:假如a大于b并且a不為零,那么求b除以a的結(jié)果。 邏輯“非”相當(dāng)于“不”,會對原來的值取反,比如: “他不是個好人”就等效于“他!=好人”。 “他不不是個好人”就等效于“他!!好人”。 兩個“非”運(yùn)算符可以省略掉所以任何邏輯表達(dá)式不會同時出現(xiàn)兩個并列的“非”符號,那是很無聊的寫法。你可以簡單的將邏輯運(yùn)算符“&&”理解為“并且”,將 “||”理解為“或者”,“!”理解為“不”,這樣有助于你對代碼的理解。下表列舉了所有邏輯運(yùn)算符在各種各種運(yùn)算情況下的結(jié)果,仔細(xì)觀察會發(fā)現(xiàn)里面是有規(guī)律的: 運(yùn)? 算 結(jié)? 果 運(yùn)? 算 結(jié)? 果 !true false false && false false !false true true || true true true && true true true || false true true && false false false || false false 通過上面的表我們可以得出結(jié)論: ●????對于 && 操作,只有當(dāng)兩個條件都為true時結(jié)果才為true。 ●????對于 || 操作,只要任何一個條件為true則結(jié)果為true。 示例: using System; namespace Text { class Program { static void Main(string[] args) { floatprice1=27.3f; //第一種商品的價格 floatprice2=57.0f; //第二種商品的價格 int n1=2; //第一種商品的數(shù)量 int n2=3; //第二種商品的數(shù)量 floatdiscount=0.2f; //折扣 //總消費(fèi)金額 doubletotal=price1 * n1 + price2 * n2; //如果總消費(fèi)額大于200或者買的每種商品的價格都超過了100則打折 if(total>200||(price1>100&& price2>100)) { total=total*(1-discount); Console.WriteLine(“折后總消費(fèi)額為:{0}”,total); } else Console.WriteLine(“總消費(fèi)額為:{0}”,total); } } } 運(yùn)行結(jié)果為: 折后總消費(fèi)額為:180.4799 上面的例子我們首先定義了兩個價格和兩個數(shù)量變量。價格變量定義成浮點(diǎn)型時因 為價格很可能存在小數(shù),數(shù)量定義成整型是因?yàn)閿?shù)量只能時整數(shù)。然后我們使用算術(shù)表達(dá)式求出所有的購買商品的總額,并保存到total變量中,total變量采用double類型只是為了演示double的用法,實(shí)際上用float型也可以。最后我們使用if語句根據(jù)條件來執(zhí)行不同的代碼塊,假如if語句后面的括號中關(guān)系表達(dá)式返回true,則執(zhí)行折扣計(jì)算相關(guān)代碼,如果返回false則不計(jì)算折扣直接顯示消費(fèi)總額。 下面來看一個綜合性的示例,猜猜它的運(yùn)行結(jié)果? class Person { static void Main() { char cSex='男'; //性別 int iHeight=175; //身高 float fWeight=65.55f; //體重,float型需要加f bool bIsMarriage=false; //婚否,取值:true(表示已婚);false(未婚) string sName; //字符串類型 sName="張秋楓"; System.Console.WriteLine("***************************");//"":字符串 System.Console.WriteLine(cSex); System.Console.WriteLine(iHeight); System.Console.WriteLine(fWeight); System.Console.WriteLine(bIsMarriage); System.Console.WriteLine(sName); System.Console.WriteLine("********************************"); } } 2.3.4賦值運(yùn)算符 賦值運(yùn)算符是給一個變量賦一個值,聽起來像廢話,實(shí)際上這個小小的賦值作用非 常大,她會指示系統(tǒng)向變量對應(yīng)的內(nèi)存存入一個值。賦值運(yùn)算符就是我們前面見到的“x=2”表達(dá)式中間的那個等于號。這里要注意賦值符號和“等于”號的區(qū)別,賦值運(yùn)算符是一個“=”號,而兩個“==”號才是我們前面介紹的的關(guān)系運(yùn)算中表示相等關(guān)系的“等于”號。除了基本的賦值符號外,C#中還支持復(fù)合賦值運(yùn)算符號。下表中左邊一列是復(fù)合賦值運(yùn)算符,中間一列是示例,右邊一列是與左邊運(yùn)算符等效的運(yùn)算: 賦值運(yùn)算符 示? 例 描? 述 = x=2 給x賦值2 += x+=2 相當(dāng)于x=x+2 - x-=2 相當(dāng)于x=x-2 /= x/=2 相當(dāng)于x=x/2 *= x*=2 相當(dāng)于x=x*2 %= x%=2 相當(dāng)于x=%22 表中那些復(fù)合賦值運(yùn)算符實(shí)際上就是后面描述部分的一個縮寫形式,只不過那種省略的寫法執(zhí)行效率比較高,這是從C語言繼承下來的特性,所以提倡使用前面的那種省略的寫法。賦值運(yùn)算符的計(jì)算執(zhí)行是從右往左進(jìn)行,比如我們常見的“x=x+2”,實(shí)際上是先計(jì)算了“x+2”然后再把這個結(jié)果給x,所以運(yùn)算結(jié)果后x會增加2,如果出現(xiàn)連寫的賦值運(yùn)算,則計(jì)算是從右往左逐個賦值,如:“x=y=a”,則結(jié)果x y都等于a,下面是一個經(jīng)典的交換兩個數(shù)的算法: int a=1,b=2; b=(a+b)-(a=b); 一句話執(zhí)行完后a、b的值將互換,a變?yōu)?,b變?yōu)?。計(jì)算首先從右邊開始,先計(jì)算左邊括號里面的“a+b”,結(jié)果為3,然后計(jì)算右邊括號里面的值,右邊括號里面的值計(jì)算完后結(jié)果為2,同時a已經(jīng)等于了2。最后,左邊括號里面的結(jié)果3減去右邊括號里面的結(jié)果2得到結(jié)果1,這個1賦值給b,那么b就是1了,交換完畢。從上面的例子我們不難看出,系統(tǒng)運(yùn)算的每一步在內(nèi)存中都會暫存結(jié)果。上面的兩個括號的結(jié)果先計(jì)算完,然后再把這兩個結(jié)果進(jìn)行相減,最后將減的結(jié)果進(jìn)行賦值。 C#示例: using System; namespace MyText { class Text { static void Main(string[]args) { int num=4567; int thousand,hundred,ten,indiv; thousand=num/1000; num%=1000; hundred=num/100; num%=100; ten=num/10; indiv=num%10; num=indiv * 1000+te n*100+hundred * 10+thousand; Console.WriteLine(“反轉(zhuǎn)后的數(shù)是:{0}”,num); } } } 運(yùn)算結(jié)果: 反轉(zhuǎn)后的數(shù)是:7654 注意:賦值運(yùn)算右邊表達(dá)式的值必須和被賦值對象數(shù)據(jù)類型相同,如: int a=3.3f; float b=‘a(chǎn)’; 上面的第一個表達(dá)式右邊是浮點(diǎn)型數(shù)字而左邊是整型的變量,這樣是不對的。同樣第二條語句右邊是字符,左邊是浮點(diǎn)型的變量,這樣賦值也是不合理的。如果賦值運(yùn)算兩邊是引用類型,那么類型也必須兼容。一般來說,你完全可以把變量當(dāng)作是一個特定的容器,比如裝番茄醬的瓶子,對此你不能將辣椒醬裝在里面,在進(jìn)行賦值操作時要特別注意這一點(diǎn)。當(dāng)然后面我們會介紹數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)知識,有了數(shù)據(jù)類型的轉(zhuǎn)換你就可以把辣椒醬裝到番茄醬瓶子里了,你就可以把浮點(diǎn)型賦值給整型了。 2.3.5 運(yùn)算符的優(yōu)先級 現(xiàn)在,你幾乎已經(jīng)了解所有的運(yùn)算符,是你大顯身手的時候了,那么你能計(jì)算下面的式子嗎: r=(2-1)* 3 + !2 – 5% 2 * 2? && 3; 你如果沒有接觸過其他程序語言,相信你應(yīng)該傻眼兒了,這么多運(yùn)算符應(yīng)該先算哪個呢?我們在小學(xué)時就知道運(yùn)算符有優(yōu)先級,我們知道乘法和除法的優(yōu)先級高于減法運(yùn)算,而括號的優(yōu)先級最高,一個式子既有加減又有乘除還有括號,那么計(jì)算的順序是:括號里面的—>乘除-->加減,如“3*4+2/(5+2+1)”式子,結(jié)果是:“12.25”。我們知道C#中的運(yùn)算符遠(yuǎn)比數(shù)學(xué)中的運(yùn)算符多,而且這些運(yùn)算符都可以出現(xiàn)在同一個表達(dá)式中,那么我們的優(yōu)先級是怎樣的呢? C#中運(yùn)算符優(yōu)先級從高到低排列如下表所示: 運(yùn)算符號 結(jié)合性 描述 運(yùn)算符號 結(jié)合性 描述 () 從左到右 括號優(yōu)先級最高 =,!= 從左到右 等號,不等號 ++,--,! 從右到左 遞增,遞減,邏輯非運(yùn)算符 && 從左到右 邏輯 與 *,/,% 從左到右 乘,除,取模操作 || 從左到右 邏輯 或 +,- 從左到右 加 減運(yùn)算 =,+=,*=,/=,%=,-= 從左到右 賦值運(yùn)算符和復(fù)合賦值運(yùn)算符 <,<=,>,>= 從左到右 小于 小于等于 大于 大于等于 運(yùn)算符的結(jié)合性是指同時出現(xiàn)多個該運(yùn)算符時的計(jì)算方向。比如優(yōu)先級最高的括號,如果在一個表達(dá)式中出現(xiàn)多個括號,那么將從左向右依次計(jì)算這些括號里面的內(nèi)容。再比如大于小于號,如果幾個大于 小于號連接在一起,那么是從左到右進(jìn)行計(jì)算的。通常,能接兩個操作數(shù)的運(yùn)算符稱作二元運(yùn)算符,比如“+”號,接一個操作數(shù)的我們稱作一元運(yùn)算符,比如“!”和“++”等。從上面的優(yōu)先級例子可以看出,除了括號外,一元運(yùn)算符的優(yōu)先級最高。除此之外,從大的范圍來講算術(shù)運(yùn)算符的優(yōu)先級高于關(guān)系運(yùn)算符,關(guān)系運(yùn)算符的優(yōu)先級高于邏輯運(yùn)算符,優(yōu)先級最低的是賦值運(yùn)算符。 示例: using System; namespace Text { class Program { static void Main(string[] args) { int y=2002; if(y % 4 == 0 && y % 100!=0 ||y % 400== 0) Console.WriteLine(”{0}年是閏年”,y); else Console.WriteLine(”{0}年不是閏年”,y); } } } 上面是一個求閏年的算法。假如某年能被400整除那么這年是閏年,如果某年不能被100整除并且能被4整除,那么這年也是閏年,也就是說這兩個條件滿足其中的一個就是閏年。上面的if語句中優(yōu)先級最高的運(yùn)算符是“%”號,所有的“%”計(jì)算完了再計(jì)算“==”號,然后計(jì)算“&&”號,最后計(jì)算“||”號,最終結(jié)果false,所以2002年不是閏年。這里注意的是,上面的式子不夠好,雖然實(shí)現(xiàn)了功能,但看起來令人頭暈,所以我們提倡多用括號,善于用括號,上面的式子應(yīng)改為: If((y % 4 == 0 && y % 100!=0) ||(y %400 == 0)) 很顯然加了括號的式子含義明了,代碼工整,直觀易懂。這屬于代碼規(guī)范的范疇。多種運(yùn)算符同時出現(xiàn)的地方不是什么算術(shù)表達(dá)式,而是像上面那樣的條件表達(dá)式中。計(jì)算運(yùn)算符的優(yōu)先級是件頭痛的事,加上括號后會使問題變得簡單化。 另外,在上面使用運(yùn)算符號時你可能也注意到了一個問題,這個問題原不屬于運(yùn)算符的優(yōu)先級的問題,是關(guān)于長表達(dá)式跟數(shù)據(jù)類型有關(guān)的問題。問題是如果這個表達(dá)式中存在各種數(shù)據(jù)類型的數(shù)值怎么辦,如下面的式子: double r=1 + 1/2 + 2.0; 上面式子中r的值為3而不是3.5。對于混合數(shù)據(jù)類型表達(dá)式的計(jì)算,結(jié)果按照最高精度為準(zhǔn),超過精度的一概被“切”掉,比如“1/2”結(jié)果是0,本來計(jì)算的結(jié)果是0.5,但大家都是整型所以結(jié)果是整型,小數(shù)點(diǎn)后數(shù)字都被“切”掉了。如果將“1/2”變成“1/2.0”,那么結(jié)果就是0.5,因?yàn)?.0是浮點(diǎn)型,所以結(jié)果也是浮點(diǎn)型。長表達(dá)式無非就是許多小表達(dá)式組合計(jì)算的結(jié)果,比如上面那個式子,首先計(jì)算“1/2”結(jié)果是0,然后計(jì)算“1+0+2.0”,結(jié)果是double類型的3.0。 關(guān)于運(yùn)算符和表達(dá)式的內(nèi)容我們就介紹到這里,要特別注意的是:運(yùn)算符的優(yōu)先級以及混合數(shù)據(jù)類型表達(dá)式的計(jì)算問題。 實(shí)踐問題: 選擇題: 1.????? 下列變量的聲明正確的是() A.int???1name; B.int????_name; C.int???? float; 2.?? 下面 問答題: 1.????? 本章中學(xué)了幾種運(yùn)算符?他們的優(yōu)先級從高到低的順序是什么? 小結(jié): 在本章中,我們主要學(xué)習(xí)了: u??????C#的基本語法 u??????變量的簡單類型 u??????變量的命名規(guī)則 u??????運(yùn)算符和表達(dá)式 u??????運(yùn)算符的優(yōu)先級 練習(xí)項(xiàng)目: 學(xué)過變量和表達(dá)式,請大家發(fā)揮自己的想象,做一個和本章緊密相連的項(xiàng)目: 需達(dá)到效果如下: 在這個項(xiàng)目中,每種運(yùn)算符至少用一個說明你掌握了此類運(yùn)算符;運(yùn)算中要考慮運(yùn)算符的優(yōu)先級;聲明的變量類型要恰當(dāng)。 C# 面向?qū)ο缶幊?/p>
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。