C#第2章數(shù)據(jù)類型與流程控制.ppt
《C#第2章數(shù)據(jù)類型與流程控制.ppt》由會員分享,可在線閱讀,更多相關(guān)《C#第2章數(shù)據(jù)類型與流程控制.ppt(87頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第2章數(shù)據(jù)類型與流程控制,2.1數(shù)據(jù)類型2.2不同數(shù)據(jù)類型之間的轉(zhuǎn)換2.3常量與變量2.4運算符與表達式2.5控制臺應(yīng)用程序與格式化輸出2.6C#流程控制語句,2.1數(shù)據(jù)類型,C#數(shù)據(jù)類型分為兩類:值類型和引用類型。P17值類型:包括簡單類型、枚舉類型、結(jié)構(gòu)類型、可空類型。引用類型:包括類、接口、數(shù)組、委托。一般把引用類型的變量稱為對象。,值類型與引用類型,棧和堆,內(nèi)存基本上被劃分為棧和堆棧是用來存儲值類型變量的數(shù)據(jù)結(jié)構(gòu),如創(chuàng)建int變量時,該變量的值存儲在棧上,此外對函數(shù)(方法)的任何調(diào)用都添加到棧的頂端,在函數(shù)返回時刪除該調(diào)用。堆用于存儲引用類型的變量,在創(chuàng)建類的實例時在堆上分配對象,返回該對象的地址,并且將該地址存儲在位于棧上的變量中。,值類型:C#的所有值類型均隱式派生自SYSTEM.VALUETYPE:1、結(jié)構(gòu)體:Struct(直接派生于SYSTEM.VALUETYPE);2、數(shù)值類型:整型:SBYTE,SHORT,INT,LONG,BYTE,USHORT,UINT,ULONG,CHAR;浮點型:FLOAT,DOUBLE;用于財務(wù)計算的高精度DECIMAL型;3、BOOL型:BOOL(SYSTEM.BOOLEAN的別名);4、用戶定義的結(jié)構(gòu)體(派生于SYSTEM.VALUETYPE)。5、枚舉:ENUM(派生于SYSTEM.ENUM);6、可空類型(派生于SYSTEM.NULLABLE泛型結(jié)構(gòu)體,T?實際上是SYSTEM.NULLABLE的別名)。,值類型與引用類型區(qū)別,值類型:C#中的所有值類型變量在聲明時都有初始值,然而沒有明確地初始化變量,C#就禁止使用該變量。如:boolmarried;Console.WriteLine(married);則提示錯誤信息“使未賦值的變量married”C#中可以將值類型聲明為可空(nullable),意味著它可以暫時沒有值。如:bool?married=null;或者Nullablemarried=null;,值類型與引用類型區(qū)別,引用類型:1、數(shù)組(派生于System.Array)2、用戶用定義的以下類型:類:class(派生于System.Object);接口:interface(接口不存在派生于何處的問題。3、委托:delegate(派生于System.Delegate)。4、Object(System.Object的別名);5、字符串:string(System.String的別名)。,值類型與引用類型區(qū)別,值類型與引用類型區(qū)別,,,堆棧,堆,5,6,i,j,實際數(shù)據(jù),12345H,obj,圖中i和j為值類型變量,obj為引用類型變量,值類型的變量保存的是變量的值;引用類型的變量保存的是數(shù)據(jù)的引用地址。,引用類型分兩步創(chuàng)建:首先在堆棧上創(chuàng)建一個引用變量,然后在堆上創(chuàng)建對象本身,再把這個內(nèi)存的句柄(也是內(nèi)存的首地址)賦給引用變量例如:strings1,s2;s1="ABCD";s2=s1;其中,s1,s2是指向字符串的引用變量,s1的值是字符串“ABCD”存放在內(nèi)存的地址,這就是對字符串的引用,兩個引用型變量之間的賦值,使得s2、s1都是對“ABCD”的引用。如下圖所示。,值類型與引用類型區(qū)別,(1)考慮如下代碼:inti=5;intj=6;intk=i;i=7;問k的值是多少?(2)假設(shè)類A有實例Obj,Obj1,執(zhí)行如下代碼Obj.age=10;Obj1=Obj;Obj1.age=12;問此時Obj.age的值是多少?,值類型與引用類型區(qū)別,值類型和引用類型的區(qū)別,為什么要托管堆(受管制的堆)?,.NET框架包含一個托管堆,所有的.NET語言在分配引用類型對象時都要使用它。像值類型這樣的輕量級對象始終分配在棧中,但是所有的類實例和數(shù)組都被生成在一個內(nèi)存池中,這個內(nèi)存池就是托管堆。垃圾收集器的基本算法很簡單:●將所有的托管內(nèi)存標(biāo)記為垃圾●尋找正被使用的內(nèi)存塊,并將他們標(biāo)記為有效●釋放所有沒有被使用的內(nèi)存塊●整理堆以減少碎片,相關(guān)面試題目,intk=5;intj=5;if(Object.ReferenceEquals(k,j))//判定k和j是否為同一個實例Console.WriteLine("Equal");elseConsole.WriteLine("NotEqual");Objecto=newobject();Objectobj=o;if(Object.ReferenceEquals(o,obj))Console.WriteLine("Equal");elseConsole.WriteLine(“NotEqual”);,運行結(jié)果:NotEqualEqual,2.1.2整型,C#提供了八種整型(即計算機組成原理中的“定點數(shù)”):sbyte:1字節(jié)有符號byte:1字節(jié)無符號short:2字節(jié)有符號ushort:2字節(jié)無符號int:4字節(jié)有符號,最常用uint:4字節(jié)無符號long:8字節(jié)有符號ulong:8字節(jié)無符號,2.1.3浮點類型,float:4字節(jié)浮點數(shù),常用。例如:35.0fdouble:8字節(jié)浮點數(shù),常用。例如:2.7E+23decimal:16字節(jié)浮點數(shù),特殊的浮點數(shù),精度高,適用于金融、貨幣等需要高精度數(shù)值的領(lǐng)域。其類型指定符為M(或m)。例如:decimaly=9999999999999999999999999m;float和double的浮點數(shù)格式與計算機組成原理介紹的IEEE754規(guī)定的格式相同,C#中所有非整數(shù)的數(shù)值始終被視為雙精度,如果將非整數(shù)的數(shù)值賦給float類型的變量,需要在該數(shù)之后附加F或者f后綴,否則會出現(xiàn)錯誤——“不能隱式地將Double類型轉(zhuǎn)換為“float”類型;請使用“F”后綴創(chuàng)建此類型”。如floati=3.99f;同樣需要使用M后綴將非整數(shù)值賦給decimal變量如decimald=4.56M;,2.1.3浮點類型,2.1.4布爾型,用bool表示,bool類型只有兩個值true和false。例如:boolisExist=false;boolb=(i>0//錯誤,2.1.5字符型與字符串類型,char型,為單個Unicode字符,字符型常量必須用單引號引起來。例如:charch=a;如果是字符串(單個字符的組合),對應(yīng)的類型為string。string類型的常量用雙引號將字符串引起來。例如:stringstr="hello";char和string類型的常量均可以使用轉(zhuǎn)義符。C#中@加在字符串前面,字符串中的\失去轉(zhuǎn)義符的作用,直接寫字符串而不需要考慮轉(zhuǎn)義字符,如果在字符串中需用到雙引號,則可連寫兩個雙引號來表示一個雙引號。@"C:\windows\Microsoft"http://與"C:\\windows\\Microsoft"含義相同@"Hesaid""Hello""tome"http://與"Hesaid\"Hello\"tome"含義相同,2.1.5字符型與字符串類型,2.2不同數(shù)據(jù)類型之間的轉(zhuǎn)換,有兩種轉(zhuǎn)換方式:隱式轉(zhuǎn)換與顯式轉(zhuǎn)換;如果是不同值類型之間的轉(zhuǎn)換,可以使用Convert類提供的靜態(tài)方法。,2.2.1隱式轉(zhuǎn)換和顯式轉(zhuǎn)換,隱式轉(zhuǎn)換:系統(tǒng)默認的,不需要加以聲明就可以進行的轉(zhuǎn)換。從低精度、小范圍的數(shù)據(jù)類型轉(zhuǎn)換為高精度、大范圍的數(shù)據(jù)類型,可以用隱式轉(zhuǎn)換。例如:intk=1;longi=2;i=k;//隱式轉(zhuǎn)換,2.2.1隱式轉(zhuǎn)換和顯式轉(zhuǎn)換,顯式轉(zhuǎn)換:也稱為強制轉(zhuǎn)換。用戶必須明確地指定轉(zhuǎn)換的類型。例如:longk=2147483649;inti=(int)k;所有的隱式轉(zhuǎn)換也都可以采用顯式轉(zhuǎn)換的形式來表示。如:inti=10;longj=(long)i;將大范圍類型的數(shù)據(jù)轉(zhuǎn)換為小范圍類型的數(shù)據(jù)的時候,屬于顯式轉(zhuǎn)換,另外還必須特別謹慎,因為此時有丟失數(shù)據(jù)的危險。,例題,下面聲明了一些數(shù)值類型的變量:shortsvalue;intivalue;uintuvalue;longlvalue;doubledvalue;floatfvalue;在對各個變量賦過初值之后,試分析下面哪些轉(zhuǎn)換是正確的,哪些是錯誤的,并寫出解決辦法。1)svalue=uvalue;//無法將類型“uint”隱式轉(zhuǎn)換為“short”。存在一個顯式轉(zhuǎn)換(是否缺少強制轉(zhuǎn)換?)錯誤;svalue=(short)uvalue;2)lvalue=svalue;正確3)fvalue=dvalue;錯誤;fvalue=(float)dvalue;4)lvalue=dvalue;錯誤;lvalue=(long)dvalue;,2.2.2裝箱與拆箱P22,Object類型:所有其他引用類型的基類。裝箱:將值類型轉(zhuǎn)換為object類型inti=123;objecto=i;拆箱:顯式地將object類型轉(zhuǎn)換為值類型inti=123;Objectbox=i;//裝箱操作intk=(int)box;//拆箱操作裝箱和拆箱是互逆的過程,但是必須要注意,裝箱和拆箱必須滿足類型兼容的原則。,裝箱時它首先創(chuàng)建一個對象實例,然后把值類型的值復(fù)制到這個對象實例,最后由object對象引用這個對象實例。,例如:usingSystem;classDemo{publicstaticvoidMain(){intx=123;objectobj1=x;//裝箱操作x=x+100;//改變x的值,此時obj1的值并不會隨之改變Console.WriteLine("x={0}",x);//x=223Console.WriteLine("obj1={0}",obj1);//obj1=123}},2.2.2裝箱與拆箱,拆箱操作與裝箱相反,它是將一個object類型轉(zhuǎn)換成值類型。首先檢查由object引用的對象實例值類型的包裝值,然后把實例中的值拷貝到值類型的變量中。classDemo{publicstaticvoidMain(){intx=123,y;objectobj1=x;//裝箱操作x=x+100;//改變x的值,此時obj1的值并不會隨之改變y=(int)obj1;//拆箱操作,必須進行強制類型轉(zhuǎn)換Console.WriteLine("x={0}",x);//x=223Console.WriteLine("obj1={0}",obj1);//obj1=123Console.WriteLine("y={0}",y);}},2.2.2裝箱與拆箱,2.3常量和變量,C#中提供2種類型的常量:使用const關(guān)鍵字聲明(const字段只能在該字段的聲明中初始化。)const常量是在編譯時設(shè)置其值并且永遠不能更改其值的字段,在對程序進行編譯的時候,編譯器會把所有const常量全部替換為常數(shù)。constdoublePI=3.14;使用readonly關(guān)鍵字聲明readonly關(guān)鍵字在程序運行期間只能初始化“一次”的字段,可以在聲明語句中初始化該字段,也可以在構(gòu)造函數(shù)中初始化該字段。初始化以后,用readonly聲明的字段的值就不能再更改。publicreadonlystringb;publicForm1(){b=“bbb”;},2.3.1常量,二者區(qū)別:readonly常量運行時初始化,const常量編譯時初始化。const常量只能在聲明中賦值,readonly常量既可以在聲明中賦值,也可以在構(gòu)造函數(shù)中賦值。,2.3.2變量,變量用來表示一個數(shù)值、一個字符串值或者一個類的對象。變量存儲的值可能會發(fā)生更改,但變量名稱保持不變。C#定義了7類變量,分別是:靜態(tài)變量、實例變量、數(shù)組元素、值參數(shù)、引用參數(shù)、輸出參數(shù)和局部變量。classA{publicstaticintx;//靜態(tài)變量inty;//局部變量voidF(int[]v,inta,refintb,outintc){inti=1;c=a+b++;}},2.3.2變量,聲明變量舉例:inta=100;//聲明一個整型變量a,并賦初值為100也可以采用先定義、后賦值的方式,例如:inta;//聲明一個整型變量aa=100;//為整型變量a賦值為100另外,也可以把幾個變量聲明和初始化用一條語句完成,各個變量之間用逗號分隔,例如:inta=100,b,c=200,d;//聲明整型變量a、b、c、d,并將a賦值100,c賦值200,2.3.3匿名類型的變量,匿名類型的變量就是程序員不必指定“局部”變量的類型,統(tǒng)統(tǒng)用var來表示類型即可。在LINQ表達式或者foreach語句中,使用匿名類型的變量比較方便。匿名類型仍然屬于強類型,只不過判斷具體類型的工作由編譯器完成。具體內(nèi)容到LINQ一節(jié)再仔細講解?!纠縱ari=5;System.Console.WriteLine(i.GetType());,2.4運算符和表達式,1.運算符C#提供了3大類運算符:一元運算符:帶有一個操作數(shù)的運算符稱為“一元”運算符,例如,i++。二元運算符:帶有兩個操作數(shù)的運算符稱為“二元”運算符,例如,x+y。三元運算符:帶有三個操作數(shù)的運算符稱為“三元”運算符,在C#中,只存在1個三元運算符,即條件運算符“?:”。例如:intz=3;intx=(z==3)?2:3;常用運算符typeof:獲取類型的System.Type例如:System.Typetype=typeof(int);,2.4運算符和表達式,is:檢查對象是否與給定的類型兼容例如:if(oisClass1){a=(Class1)o;}as:xasT含義為返回類型為T的x。例如:Class1c=basClass12.表達式C#的表達式與C++和Java類似。,2.5控制臺應(yīng)用程序與格式化輸出,控制臺(Console類)1.控制臺輸出Console.Write();把各種類型的數(shù)據(jù)或?qū)ο筠D(zhuǎn)換成字符串寫入標(biāo)準(zhǔn)輸出流。Console.WriteLine();把各種類型的數(shù)據(jù)或?qū)ο筠D(zhuǎn)換成字符串寫入標(biāo)準(zhǔn)輸出流,與Write的區(qū)別在于,它還輸出回車符和換行符(“\r\n”);,2.5控制臺應(yīng)用程序與格式化輸出,2.控制臺輸入Console.ReadKey();P27標(biāo)準(zhǔn)輸入流讀取用戶按下的字符或功能鍵。例如:ConsoleKeyInfoc=Console.ReadKey();Console.ReadLine();從標(biāo)準(zhǔn)輸入流讀取一行字符。例如:strings=Console.ReadLine();,3.字符串的格式化輸出,字符串格式化:Console類的Write或WriteLine方法;String.Format方法中均可以規(guī)定輸出字符串的格式。格式輸出的一般形式為{N[,M][:格式碼]}其中,[]:表示其中的內(nèi)容為可選項。N:從零開始的整數(shù),表示第幾個參數(shù)。M:可選整數(shù),表示最小長度。若參數(shù)N的長度小于M,就用空格填充。如果M為負,則左對齊;如果M為正,則右對齊;如果未指定M,則默認為零。格式碼:可選的格式化代碼字符串。,字符串的格式化輸出,對于字符串來說,可以直接利用格式化輸出得到希望的格式,例如:strings=string.Format("{0,30}",);//s得到的結(jié)果為30個空格的字符串strings1=string.Format("{0,-20}","15");//s1得到的結(jié)果為左對齊長度為20的字符串,常用格式碼及舉例,4.數(shù)字的格式化輸出,常用格式舉例:strings=string.Format("{0:d6}",123);//s得到的結(jié)果為000123inti=123;doublej=123.45;strings1=string.Format("格式:d6,數(shù){0},輸出結(jié)果:{0:d6}",i);Console.WriteLine(s1);//結(jié)果為:格式d6,數(shù)123,輸出結(jié)果:000123strings2=string.Format("i:{0,-7},j:{1,7}",i,j);Console.WriteLine(s2);//結(jié)果為:i:123,j:123.45,4.數(shù)字的格式化輸出,strings3=string.Format("{0:###,###.00}",i);Console.WriteLine(s3);//結(jié)果12.00intnum=0;strings4=string.Format("{0:###}",num);Console.WriteLine(s4);//結(jié)果輸出長度為0的空字符串其他格式化符使用舉例格式:n4數(shù)12345.6789輸出結(jié)果:12,345.6789格式:p數(shù)0.126輸出結(jié)果:12.60%格式:p2數(shù)12.34輸出結(jié)果:1,234.00%格式:5:d數(shù)123輸出結(jié)果:123格式:7:f3數(shù)123.45輸出結(jié)果:123.450,5.日期和時間的格式化輸出,DateTimedt=newDateTime(2006,5,25);//yy表示年占兩位,M表示月占1位,超出1位按實際位數(shù)//d表示日占1位,超出1位按實際位數(shù)stringstr=dt.ToString("yy.M.d");Console.WriteLine(str);//結(jié)果06.5.25//yyyy表示年占4位,M表示月占1位,超出1位按實際位數(shù),其他按原字符輸出stringstr1=dt.ToString("yyyy年M月");Console.WriteLine(str1);//結(jié)果2006年5月中文操作系統(tǒng)下使用英文日期見課本P30,2.6C#流程控制語句,流程控制的形式:順序分支循環(huán)異常捕獲如果一個邏輯塊包含兩條或兩條以上的語句序列,必須使用大括號{}將語句括起來。,2.6.1條件分支語句,if語句:根據(jù)布爾表達式的值(true或者false)選擇要執(zhí)行的語句序列,使用時要注意else應(yīng)和最近的if語句匹配。三種形式:ifif…elseif…elseif…else,2.6.1條件分支語句,【例題2-2】的關(guān)鍵點:從鍵盤讀取一個字符串方法stringstr=Console.ReadLine();將字符串轉(zhuǎn)換成整型數(shù)據(jù)intx=Convert.ToInt32(str);//適合于任何類型轉(zhuǎn)換成整型數(shù)據(jù)intx=int.Parse(str);boolb=int.TryParse(str,outx);針對字符串類型intx=Int32.Parse(str);,,雅虎面試題:,一列數(shù)的規(guī)則如下:1、1、2、3、5、8、13、21、34...求第30位數(shù)是多少,用遞歸算法實現(xiàn)。實現(xiàn)關(guān)鍵代碼:publicstaticintFoo(inti){if(i0},2.6.1條件分支語句(續(xù)),switch語句也叫case語句(開關(guān)語句)switch語句與C++和Java均不完全相同。switch語句常用形式為:switch(表達式){case常量表達式1:語句序列1case常量表達式2:語句序列2……[default:語句序列]},2.6.1條件分支語句(續(xù)),常量表達式switch條件表達式的值和每個case后的常量表達式可以是string、int、char、enum或其它值類型。語句序列每個case后的語句序列可以用大括號括起來,也可以不用,但是每個case塊的最后一句一定要是break語句,或者是goto語句。switch語句的執(zhí)行順序a)如果switch語句的條件表達式的值和某一個case標(biāo)記后指定的值相等,則轉(zhuǎn)到該case標(biāo)記后的語句序列執(zhí)行;b)若switch語句的條件表達式的值和任何一個case標(biāo)記后指定的值都不相等,則跳到default標(biāo)記后的語句序列執(zhí)行;,2.6.1條件分支語句(續(xù)),c)若switch語句下面沒有default標(biāo)記,則跳到switch語句的結(jié)尾。注意:a)要求每個語句序列的最后一條語句必須是break語句,但是有一個情況例外:如果某個case塊為空,則會從這個case塊直接跳到下一個case塊上?!安淮┩冈瓌t”b)如果case后有語句,則此case的順序怎么放都無所謂,甚至可以將default子句放到最上面。因此,在一個switch中,不能有相同的兩個case標(biāo)記。,例.使用switch語句,完成對成績等級的評定,usingSystem;namespaceSwitchExample{publicclassProgram{publicstaticvoidMain(){Console.Write("請輸入成績:");//從鍵盤接收一行字符stringstr=Console.ReadLine();//轉(zhuǎn)換為整型,注意此語句可能會產(chǎn)生異常,一般需要異常處理inti=Int32.Parse(str.Trim());//或者int.Parse(…)或者Convert.ToInt32(…)if(i>100||i<0){Console.WriteLine("成績不在0-100范圍內(nèi)");},else{switch(i/10)//整除{case10:Console.Write("滿分,");gotocase9;case9:Console.WriteLine("優(yōu)秀");break;case8:case7:Console.WriteLine("良好");break;case6:Console.WriteLine("及格");break;default:Console.WriteLine("不及格");break;}}Console.ReadLine();}}},2.6.2循環(huán)語句,循環(huán)包括:for語句while語句do-while語句foreach語句,用于對集合、數(shù)組進行操作。,2.6.2循環(huán)語句(續(xù)),1.for語句一般形式:for(初始值;循環(huán)條件;循環(huán)控制){語句序列}注意:for(;;){}為無窮循環(huán),例.使用for語句控制循環(huán)體,publicstaticvoidMain(){Console.Clear();Console.BackgroundColor=ConsoleColor.Blue;Console.ForegroundColor=ConsoleColor.Red;Console.Beep();for(inti=1;i<10;i+=2){Console.SetCursorPosition(40-i/2,i);for(intj=0;j20||age<10){stringmessage=“你輸入的齡不符合要求!";ageexceptiona=newageexception(message);throwa;}}catch(Exceptionerr){Console.WriteLine(err.Message);}Console.ReadLine();,例.異常處理,usingSystem;namespaceTryCatchExample{classProgram{staticvoidF(){try{G();}catch(Exceptionerr){Console.WriteLine("方法F中捕獲到:"+err.Message);,//重新拋出當(dāng)前正在由catch塊處理的異常errthrow;}}staticvoidG(){thrownewException("方法G中拋出的異常。");}staticvoidMain(){try{F();}catch(Exceptionerr){Console.WriteLine("方法Main中捕獲到:"+err.Message);}Console.ReadLine();}}},本章涉及的面試題目,C#的數(shù)據(jù)類型有()(某IT公司)a)值類型和調(diào)用類型;b)值類型和引用類型;c)引用類型和關(guān)系類型;d)關(guān)系類型和調(diào)用類型;下列選項中,()是引用類型。(某IT公司)a)enum類型b)struct類型c)string類型d)int類型,,,本章涉及的面試題目(續(xù)),Question42.(單選)(雅虎公司)publicstaticvoidMain(string[]args){inti=2000;objecto=i;i=2001;intj=(int)o;Console.WriteLine("i={0},o={1},j={2}",i,o,j);}1.i=2001,o=2000,j=20002.i=2001,o=2001,,j=20013.i=2000,o=2001,,j=20004.i=2001,o=2000,j=2001,,做能自動生成試卷的考試系統(tǒng)時,常常需要隨機生成一組不重復(fù)的題目,在.netFramework中提供了一個專門用來產(chǎn)生隨機數(shù)的類System.Random。所謂的隨機數(shù)發(fā)生器都是通過一定的算法對事先選定的隨機種子做復(fù)雜的運算,用產(chǎn)生的結(jié)果來近似的模擬完全隨機數(shù),這種隨機數(shù)被稱作偽隨機數(shù)。,3.8隨機數(shù),偽隨機數(shù)是以相同的概率從一組有限的數(shù)字中選取的。所選數(shù)字并不具有完全的隨機性,但是從實用的角度而言,其隨機程度已足夠了。偽隨機數(shù)的選擇是從隨機種子開始的,所以為了保證每次得到的偽隨機數(shù)都足夠地“隨機”,隨機種子的選擇就顯得非常重要。如果隨機種子一樣,那么同一個隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)也會一樣。一般地,我們使用同系統(tǒng)時間有關(guān)的參數(shù)作為隨機種子,這也是.netFramework中的隨機數(shù)發(fā)生器默認采用的方法。,3.8隨機數(shù),一個是直接NewRandom(),另外一個是NewRandom(Int32),前者是根據(jù)觸發(fā)那刻的系統(tǒng)時間做為種子,來產(chǎn)生一個隨機數(shù)字,后者可以自己設(shè)定觸發(fā)的種子,一般都是用UnCheck((Int)DateTime.Now.Ticks,當(dāng)前時間的刻度數(shù)采用Int32值。)做為參數(shù)種子,因此如果計算機運行速度很快,如果觸發(fā)Randm函數(shù)間隔時間很短,就有可能造成產(chǎn)生一樣的隨機數(shù),因為偽隨機的數(shù)字,在Random的內(nèi)部產(chǎn)生機制中還是有一定規(guī)律的,并非是真正意義上的完全隨機。,3.8隨機數(shù),3.8隨機數(shù),Randomr=newRandom();指定一個int型參數(shù)作為隨機種子intiSeed=10;Randomro=newRandom(10);longtick=DateTime.Now.Ticks;Randomran=newRandom((int)(tick//返回0.0~1.0之間的隨機數(shù),Random.Next():生成一個值范圍在零與Int32.MaxValue之間的隨機數(shù)。Random.Next(Int32):生成值范圍在零與其他某個正數(shù)之間的隨機數(shù)。Random.Next(Int32,Int32):若要生成在不同范圍內(nèi)的隨機數(shù)。,3.8隨機數(shù),不指定上下限的使用如下:iResult=ro.Next();返回小于100的隨機數(shù):iResult=ro.Next(100);iResult=ro.Next(50,100);Random.NextDouble()方法產(chǎn)生一個范圍在0.0-1.0之間的隨機的雙精度浮點數(shù):,3.8隨機數(shù),3.8隨機數(shù),【例3-13】Random類的基本用法。,本章作業(yè)及實驗,本章作業(yè):P41:2、3、4、5、7本章結(jié)束后可以做實驗二,小組負責(zé)人組織討論并實現(xiàn)超級存款計算器子系統(tǒng)設(shè)計。(注意保存),- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- C# 數(shù)據(jù)類型 流程 控制
鏈接地址:http://m.jqnhouse.com/p-11494324.html