cSharp_1_概述 名詞描述 C# 是一門語言,語法與javascript、C、C++、java相近,這些語言都是比C語言的語系中發展而來。 .net framework (Framework是框架的意思)asp.net軟體的編譯和運行平臺,電腦必須安裝了這個軟體才可以運行我們編寫的C#應用程 ...
cSharp_1_概述
名詞描述
C#
是一門語言,語法與javascript、C、C++、java相近,這些語言都是比C語言的語系中發展而來。
.net framework
(Framework是框架的意思)asp.net軟體的編譯和運行平臺,電腦必須安裝了這個軟體才可以運行我們編寫的C#應用程式。不過windows7.0以後的操作系統都要自動安裝了這個軟體。
mono是由第三方團隊開發的讓C#程式代碼運行於多平臺的一個框架。相當於另一個.net framework
新建一個軟體項目
在.net中程式軟體是項目的形式的存在的,一個項目就是包含軟體中所有的代碼、圖片、樣式、等等所有資源文件的集合。
新建一個C#控制台應用程式項目
“文件”菜單 à 新建 à 項目 à 在彈出的“新建項目”視窗中依次選擇 à visual C# à 控制台應用程式 à 添加項目名稱 à 選擇項目的存儲位置 à 選擇建立新的解決方案à 還是要添加到當前已經打開的解決方案中
完成“控制台應用程式”的創建之後。就可以在“解決方案”面板中看到當前項目的所有文件了。
Mian主函數
其中,program.cs文件中的main主函數就是程式的入口函數,包括其中的代碼,會被自動執行,而寫在mian主函數之外的代碼則沒不會被執行,除非在main中對其進行調用。
Main註意 M 大寫
修飾為static
返回值為void或int
參數為字元串數組(C#中可選)
應用程式開始執行的地方
擴展名.cs
C#程式代碼文件的擴展名就是.cs
編譯執行源代碼
F5:啟動調試
Ctrl+F5:開始執行(不調試)
控制台輸入輸出語句
輸出語句
控制台的相關操作都通過Console這個類完成,包括輸入與輸出操作
常用輸出方法介紹
Console.Write(…)不換行輸出
Console.WriteLine(…)換行輸出,在輸出內容的末尾加一個換行符
常用參數使用語法
Console.WriteLine("您傳入的第一個參數為:"+ss); Console.WriteLine("您傳入的第二個參數為:{0}", args[1]);
占位符
Console.WriteLine中的占位符寫法{0}、{1},其概念就好像是在字元串中留一個填空題中的空,由後面的參數來填。
控制台輸入
程式一般有零到多個輸入,有些輸入是執行時由用戶輸入的
使用Console.ReadXXX()系列的方法可以完成接收用戶輸入的操作
常用方法
Console.Read():一次返回一個字元(ASCII碼)
Console.ReadLine():返回用戶在控制台輸入的一行字元串,按回車結束。
註釋
單行註釋 //
多行註釋 /* */
通過快捷鍵來註釋
選中需要註釋的代碼 à Ctrl+k Ctrl+c
通過快捷鍵來取消註釋
選中需要取消註釋的代碼 à Ctrl+k Ctrl+u
練習:
1、在vs中創建一個控制台應用程式,用戶手動輸入男方姓名,輸入女方姓名,輸出信息“恭喜XX先生和XX女士,百年好和、白頭偕老”。
2、在vs中創建一個控制台應用程式,模擬一個atm取款的功能,假設帳戶原本有一千元,讓用戶輸入一個數字,原帳戶金額減去取款金額,將還剩多少錢顯示出來。( C#中的字元串轉整數 int.Parse(字元串)、聲明整數類型是 int i = 1 ; )
C#中的數據類型
C#是一門強類型的編程語言,而javascript是一門弱類型的編程語言。
強類型語言是指該語言中的變數必須嚴格遵循類型的限制。就是說一個變數被聲明之後,永遠只能存儲指定類型的數據。
C#中的整數類型
類型標識符 |
描述 |
可表示的數值範圍 |
sbyte |
8位有符號整數 |
-128 ~ +127 |
Byte位元組 (bit位代表一個二進數) |
8位無符號整數 |
0 ~ 255 |
Short短整型 |
16位有符號整數 |
-32768 ~ +32767 |
ushort |
16位無符號整數 |
0 ~ 65535 |
int 整型 |
32位有符號整數 |
-2147483648 ~ +2147483647 |
uint |
32位無符號整數 |
0 ~ 4294967295 |
long |
64位有符號整數 |
-9223372036854775805 ~ +9223372036854775807 |
ulong |
64位無符號整數 |
0 ~ 264-1 |
Char有時可以被當做整型來看待。
C#中變數的定義
C#中聲明一個變數必須要同時聲明這個變數的類型。
數據類型 變數名=變數值
比如:int i =10;
浮點類型
用於存儲實數,浮點的數據類型包含兩種:
單精度浮點型(float)
float類型是32位
取值範圍:在+ 1.5×10-45 ~ 3.4×1038之間,精度為7位數。
雙精度浮點型(double)
double類型是64位寬。
取值範圍:為+5.0×10-324 ~ 1.7×10308之間,精度為15~16位數
註意:float和double不適合用於進行高精度且頻繁的運算,否則在處理小數的位數限制的最後一位時會自動的四捨五入,造成精度的損失。
小數類型(decimal)
占16個位元組(128位),主要為了滿足高精度的金融、科學運算等領域。
小數類型數據的取值範圍和精度如下:
取值範圍在+ 1.0×10-28 ~ 7.9×1028之間,精度為29位數。
數值類型的表示方法
在C#中如果只寫一個整數數字而不帶代表的類型標識,那麼這個整數數字會被自動自定為int類型。如果寫一個帶有小數的實數數字而不帶代表的類型標識,那麼這個實數數字會被自動自定為double類型。
可以用如下代碼來證明:
Console.WriteLine((12).GetType().ToString()); Console.WriteLine((12.01).GetType().ToString());
通過類型標識符來定義數值的類型
123f 代表float類型數值123.0
518u 代表uint類型的數值518
36897123ul 代表ulong類型的數值36897123
22.1m 代表decimal類型的數值22.1
12.68 代表double類型的數值12.68
36 代表int類型的數值36
字元類型
在電腦中,一切數據最終都會被轉換為二進位,字元也不例外,但是二進位只能用來存儲數字,因此Char類型中存儲的是一個字元在unicode碼表中的位置編號。
字元類型的定義:
char 變數名 = ‘單個字元’ ;
註意:
1、 char類型的值必須用單引號括起來。
2、 單引號內的有效字元必須且只能是一個。
3、 值不能是單引號或反斜杠。
C#中的轉義字元
Bool布爾類型
布爾類型只有兩個值true和false
bool c = 5>6; c = true ; Console.WriteLine(c);
GetType()方法
用於獲取一個變數或數值的類型,示例:
float i = 100f; Console.WriteLine(i.GetType().ToString());
Int16代表short
Int32代表int
Int64代表long
Singel代表flaot
引用類型
String字元串類型
用於保存字元和文本數據。String類型的值是包含在一對雙引號之間的。
在c#中string 的本質是一個char類型的數組。
String可以直接被當成char類型的數組來用。
string i = "This is 665"; Console.WriteLine(i[1]);
Char類型的數組同樣可以被轉換為字元串
char[] cArr = {'H','e','l','l','o' }; string cStr = new string(cArr); Console.WriteLine(cStr);
逐字字元串@
逐字字元串@用以避免書寫轉義字元串,將字元串中的特殊符號當成字元來對待。
string cStr = @"this is \n 665"; Console.WriteLine(cStr);
其寫法就是在字元串前面加上一個@符號。
Object類型
在C#中所有的對象、變數、類型,我們都可以稱之為是object的子類。
對於任何一個變數、對象、類型,我們都可以將其存儲在object類型的變數之中。
object obj = "this is \n 665"; obj = 123; obj = true; Console.WriteLine(obj);
練習:
編寫程式實現下圖效果:
使用合適的數據類型定義相關變數(255以下用byte、小數是float、身份證qq號可以用string)
輸出輸入的結果
C#中的類型轉換
數據類型在一定條件下是可以相互轉換的。
C#允許使用兩種轉換的方式:隱式轉換和顯式轉換。
隱式轉換
隱式轉換是自動完成的、不需要用戶手動聲明就可以完成的轉換過程。
這種轉換一般是“向上轉換”,即由占存儲空間小的數據類型向占存儲空間大的數據類型轉換。
示例:
byte bNum = 255; short sNum = bNum; int iNum = sNum; long lNum = iNum; float fNum = lNum; double dNum = fNum; string strNum = ""+dNum; //用字元串與數值相加的時候,數值類型會自動的被隱式轉換為string Console.WriteLine(strNum);
C#中變數的聲明
變數只是一個容器,用於存儲具體的數值,並且這個容器里的數值是可以變的。
聲明變數的過程
數據類型 變數名;
比如:int iNum;
變數名 = 表達式;
比如:iNum = 5;
當然多數情況下我們將兩步合為一步:
int iNum = 5;
同時定義多個同類型的變數
比如:
int a, b, c;
同時定義並賦值多個同類型的變數
比如:
int a=1, b=2, c=3;
顯式類型轉換
就是指必須由用戶手動聲明的轉換過程。
強制類型轉換
格式: (類型名稱)表達式
將表達式的值的類型轉換為類型名稱所標識的類型。
示例:int i = (int)’a’;
註意:在強制類型轉換的過程中有可能對原本的數值造損失。
decimal dd = 12.3456m; int iNum = (int)dd; Console.WriteLine(iNum);
數據類型之間的轉換
toString()
toString()將其他類型的數據轉換為字元串。
幾乎所有能夠用文字描述的數據都可以轉換為字元串。
轉換格式:
變數或值.toString();
示例:
true.ToString() intNum.ToString()
XXX.Parse(字元串)
將字元串轉換為其他類型。XXX代表類型名稱,比如double,int,bool等
格式:
XXX.Parse(字元串)
示例:
string strNum = "123"; short sNum = short.Parse(strNum); int iNum = int.Parse((123).ToString()); float fNum = float.Parse(strNum); double ddNum = double.Parse(strNum); decimal dcNum = decimal.Parse(strNum); long lNum = long.Parse(strNum);
XXX.TryParse(字元串)
將字元串轉換為其他類型的數體,在轉換的過程中需要一個已賦值的臨時變數,如果轉換成功則臨時變數中存放的就是轉換之後的值,否則臨時變數中保持原值不變。XXX代表類型名稱,比如double,int,bool等
格式:
XXX.TryParse(字元串,out 臨時變數)
示例:
string strNum = "123"; decimal bTemp = 0; decimal.TryParse(strNum, out bTemp); Console.WriteLine(bTemp);
System.Convert類型轉換工具
它為數據類型轉換提供了一多種方法,可以將一個基本數據類型轉換為另一種基本數據類型。
Convert的類型轉換方法有包含:
ToBoolean、ToByte、ToChar、ToDateTime、ToDecimal、ToDouble、ToInt16、ToUint32、ToUint64等等。
示例:
char c = 'B'; int intNum = Convert.ToInt32(c); Console.WriteLine(intNum); char a = Convert.ToChar(intNum); Console.WriteLine(a); string strNum = intNum + "5"; short sNum = Convert.ToInt16(strNum); Console.WriteLine(sNum); float fNum = Convert.ToSingle(sNum); Console.WriteLine(fNum);
as類型轉換
通常as 用於引用類型之間的轉換,示例:
object obj = "今天星期五"; string sTime = obj as string; Console.WriteLine(sTime);
is關鍵字:判斷變數或數值的類型
示例:
int sTime = 12345; if (sTime is int) Console.WriteLine("這是int"); else Console.WriteLine("不知道是什麼");
練習:
1、 定義一個float類型的變數,並存入值123.31。(註意float類型數值的表示方法)
2、 定義一個char類型的變數cc,並存入字元c,將cc進行沒類型轉換並存入int類型變數i中,將i轉換為字元串,並與字元串”51”連接並將結果存入string類型變數ss中,將ss轉換為double類型並顯示。
3、 將字元串”3.14”與char類型數值”7”都轉換為double類型並相加。
4、 將字元串”15784456” 用convert轉換為ushort類型,併在控制臺中顯示出其類型。
5、 從字元串”35624”,取出第三個數字,並顯示出來。
運算符與表達式
C#中的變數
變數的命名規則:
1)、由字母、數字或下劃線"_"組成。(中文也可以被看作是字母)
2)、必須由字母或下劃線"_"開頭,不能以數字開頭
3)、不能是c#中的關鍵字 如:int、string、bool、Main、class等
4)、區分大小寫 如:小寫的a 和 大寫的A 是兩個變數
命名技巧:
1、駝峰命名法:當一個變數或函數、方法、類名由多個單詞構成時,將每個單詞的首字母大寫,這我們就可以快速的區分單詞之間的間隔。
2、在變數名的前面,我們可以用3個字母來表示變數的類型,比如:int、flt(float)、str(string)、dcm(decimal)、dat(dateTime)
3、介面一般以大寫字母I 開頭,bool類型一般以is開頭。
位運算符
將十進位數字轉換為二進位之後,再通過與、或、非等邏輯運算,對每個位上的二進位數字進行比較。
按位與&
示例:
int i = 11 & 7;
相當於:
1011
& 0111
------------
0011
其結果為二進位的11,也就是十進位3 。
按位或|
示例:
int i = 11 | 7;
相當於:
1011
I 0111
------------
1111
其結果為二進位的1111,也就是十進位15 。
位相等^
示例:
int i = 11 ^ 7;
相當於:
1011
^ 0111
------------
1100
其結果為二進位的1100,也就是十進位12 。
按位取反~
只操作一個數字,將該數字中為1的位變成0,為0的位變成 1
移位運算符
就是對二進位數,進行乘以10或除以10的操作。相當於給數字乘以十進位的2 。
int i = 11 <<1;
結果為22
三元運算符
由一個邏輯表達式來控制,邏輯表達式為true時返回第一個值,為false時返回第二個值。
格式: 邏輯表達式 ? 第一個值 : 第二個值 ;
示例:
string strResult = (11 <1)?"成立":"不成立";
運算符的優先順序
1、括弧:()、[]
2、一元運算符:!、+(正)、-(負)、++、--
3、乘除:*、/、%
4、加減:+(加)、-(減)
5、位移運算符:<<、>>
6、關係運算符:<、>、<=、>=、 ==、!=
7、位運算符:& | ^
8、邏輯運算符:&&、|| (先運算邏輯與,再運算邏輯或)
9、三元運算符:?:
10、賦值運算:=、+=、-=、*=、/=、%=、 (&=、|=、^=、~=)
關於除法的說明
運算結果的類型和參與運算的類型中最高的類型一致,影響最大的是除法,整數除以整數結果還是整數,例如10/3的結果是3,而不是3.333 。所以必須要先將兩個數字轉換為浮點或decimal類型,再相除。
表達式的概念
就是用運算符或者方法將變數連接起來進行運算,終得到一個確定的結果的運算式。
條件判斷語句
if
switch單值判斷
示例:
string strInput=Console.ReadLine(); switch (strInput) { case "a": Console.WriteLine("a級"); break; case "b": Console.WriteLine("b級"); break; default: //當上面所有的條件都不滿足時執行這裡 Console.WriteLine("XXXXXX"); break;
註意事項:
1 |
控製表達式的數據類型可以是sbyte、byte、short、uint、long、 ulong、char、string或枚舉類型(後兩種類型我們隨後會講到) |
2 |
每個case標簽中的常量表達式必須屬於或能隱式轉換為控製表達式的類型 |
3 |
如果有兩個或者兩個以上case標簽中的常量表達式值相同,編譯時將會報錯 |
4 |
switch語句中最多只能有一個default標簽 |
5 |
要求每個標簽項後使用break語句或跳轉語句goto(稍後將會講到) |
練習:
一、 請編寫一個程式實現:輸入一個長方形的長和寬,輸出其長方形的面積
二、 輸入一個華氏溫度,要求輸出攝氏溫度;公式為:C=5/9(F-32);C表示攝氏溫度,F表示華氏溫度
三、 編寫程式求圓的周長和麵積,要求根據輸入的圓的半徑計算出圓的周長和麵積(c:周長,s:面積,r:半徑,π=3.14)
公式:c=2πr; s=πr2
四、 編寫程式求長方體的體積和錶面積,要求根據輸入的長方體長、寬、高計算出長方體的體積和錶面積(L:長,W:寬,H:高,V:體積,S:錶面積)
公式:v=l*w*h; s=2(l*w+w*h+h*l);
五、 判斷輸入的年份是否為閏年,只需要滿足下麵條件之一即為閏年
a) 能被4整除,且不能被100整除
b) 能被400整除
1.編寫小程式實現任意輸入兩個數,判斷其大小並輸出較大數!
2.編寫小程式實現任意輸入兩個兩位以上的整數,找出最後一位並且判斷大小,輸出判斷結果!
3.編寫小程式實現任意輸入兩個整數,第一個數要求是兩位以上的整數,找出第一個數末尾那位數,用它除以第二個數,輸出運算結果!
4.輸出3的前面一個數字和後面一個數字!實際上就是將char類型的字元3轉換為int類型,加一或減一之後再轉回char類型。
5.編寫小程式實現任意輸入兩個數,判斷其大小;將大的一個數和10取模,將取摸的結果輸出!
6.編寫小程式實現任意輸入兩個數,判斷其是否相等,如果相等,就輸出“相等”,否則輸出“不相等”!
7.編寫小程式實現輸入一個五位數,分別取出個位上的數、十位上的數、百位上的數、千位上的數、萬位上的數,分別輸出這五個數!
8.(思考題)任意輸入一個三位整數,並且分別取出個位上的數,十位上的數,百位上的數;如果這三個數都不等於4並且取出的三位數之和等於8,則輸出“恭喜你,中了八毛錢!”,如果不等8,則找出這三個數種最大的一個數,輸出那個最大數和“下次繼續努力吧!”這句活!
1.編寫小程式實現任意輸入兩個數,求兩個數的加、減、乘、除,並且分別輸出結果。
2.編寫小程式實現任意輸入一個整數,輸出該數字的最後一位。
3.編寫小程式實現任意輸入五個人的年齡,並求出平均年齡,並且輸出。
4.編寫小程式實現一種商品(數量,單價任意輸入),輸出總價.
5.在第四題的基礎上實現三種商品的總價計算,輸出應付多少錢。
1、使用三元操作符求三數的最大值。
2、使用三元操作符求三數的最小值。
3、輸入一個四位數,分別求出個位,十位,百位,千位。
一、 輸入一個五位以內的數字,輸出該數字是幾位數
二、 輸入三條邊,判斷給定的三條邊是否能組成三角形,如果能,再判斷是等邊三角形、等腰三角形還是普通三角形
三、 輸入5個數字,判斷這5個數字是否存在重覆的數字,如果存在則輸出yes,否則輸出no
四、 編寫一個小程式判斷輸入的正整數是否既是5又是7的整倍數.若是,則輸出yes,否則輸出no。
五、 編寫一個小程式,有一函數如下
輸入X 的值,輸出對應Y 的值.
六、(思考題)編寫一個小程式實現:輸入一個整數,判斷它能否被3,5,7整除,並輸出以下信息之一:
- 能同時被3,5,7整除;
- 能被其中兩個數整除(要指出那兩個數);
- 能被其中一個數整除(指出那一個);
- 不能被3,5,7任一個整除。
1、輸入一個時間(整數),時間在6~10點之間輸出“上午好”,在11~13點之間輸出 “中午好”,在14~18之間輸出“下午好”,其他情況輸出“休息時間”。
2、使用IF語句,判斷四數的最大值 。
3、從鍵盤輸入兩個數,然後輸入一個運算符號,使用if語句和switch語句判斷輸入的運算符號是"+、-、*、/、%"中的哪一個,然後對輸入的兩個數進行相應的計算。
4、判斷任意年份是不是閏年。(條件:能被4整除卻不能被100整除或者能被400整除的年份是閏年)
第一題:
有一個函數:
y = x (x<1)
y = 2x-1 (1<=x<10)
y = 3x-1 (x>=10)
寫一程式,輸入x,輸出y值。
第二題:
有3個整數a、b、c,由鍵盤輸入,輸出其中最小的數。
要求:用if語句編寫程式。
第三題:
企業發放的獎金根據利潤提成。利潤I小於或等於10萬元的,獎金可提成10%;利潤高於10萬元,低於20萬元(100000<I<=200000)時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%,200000<I<=400000時,低於20萬的部分仍按上述辦法提成(下同),高於20萬元的部分按5%提成;400000<I<=600000時,高於40萬的部分按3%提成;600000<I<=1000000時,高於60萬的部分按1.5%提成;I>1000000時,超過100萬元的部分按1%提成。從鍵盤輸入當月利潤I,求應發獎金總數。
要求:用if或switch語句編寫程式
第四題:
實現一個簡單的四則運算計算器。
要求:參與運算的兩個數值和運算的類型均從控制台輸入,順序為:第一個操作數、第二個操作數、運算類型;用switch語句編寫程式。
迴圈與數組
關於VS的一些操作說明
運行
F5 : 調試 à 啟動調用
Ctrl + F5: 調試 à 開始執行(不調試)
調試
斷點
我們啟動調試的時候,程式的執行過程就會處於VS的控制和監督之下的,此時我們就可以用多種方式來觀察的程式的運行狀態。
所謂斷點,就是讓程式在執行到某行代碼的時候暫停,讓我們可以看到程式的狀態。
F11逐語句執行
讓程式一條一條的執行。
監視
在程式進入調試狀態之後,會顯示局部變數和監視視窗,在這些視窗中我們可以跟蹤程式中出現的變數和對象的變化。
比如在監視視窗中,我們可以指定眾多變數中需要監視的那個變數,並且可以對這個變數進行運算,或調用其屬性與方法。
熟練的使用調試工具,能夠極大的提高我們在編程時解決Bug的能力。
VS中的項目的管理
一個項目的構成
查看一個項目所包含的所有文件:
通過右擊項目名稱 à 在windows資源管理器中打開文件夾 à 就可以看到這個項目的文件了
其中:
文件:解決方案名稱.sln與 解決方案名稱.suo 就是我們的解決方案文件,我們可以把它理解為是項目中所有項目和文件的一個目錄清單。通過雙擊打開這個文件,我們就可以在VS中打開整個解決方案及軟體項目。
解決方案中可以包含多個軟體項目