cout << “hi”
If(a = b);
C/C++語言規定大小寫字母是不同字元
像是將char打成chr,如果錯誤訊息像是( ‘ )刮起來‘ chr ‘ was not declared in this score 字樣
有左括弧,就一定有右括弧(只要是括弧就一定是成對)
無論雙引號(用於字串)或單引號(用於字元)都要成對出現
像是namespace 打成name space 原本為連在一起的就不該隨意分開
cin 物件可輸入文數字至指定的變數
cout可輸出指定任何文數字與變數內容,且不用管變數的資料型態
使用cout物件所提供的width、setf等屬性
輸出結果會是
1
10
100
1000
10000
cout.width(5)
在每個輸出前都要設定,有效期只有一次
輸出會是
100
100
只會影響到第一個的輸出位置(預設靠右)
ios>>命名空間名稱__"::">>範圍運算子__ floatfield >>表示浮點數欄位
precision(2)>>浮點數精準度(小數後取兩位)
設定靠左(left)或靠右(right),adjustfield >>自動調整欄位
輸出結果
3.14
62.83
628.32
C語言採用printf()與scanf()作為輸出入函式
printf()可輸出結果,期中括號內需放置一對大括號("")達成將欲輸出的資料當作引數傳給printf()函式
輸出結果為 aaa
通常使用換行符\n,在其他情況下則使用控制符endl。一個差別是,endl確保程序將立即顯示在屏幕上;而使用“\n”不能提供這樣的保證,這意味著在有些系統中,有時可能在您輸入信息後才會出現提示。
輸出結果
a
a
a
結果就是
a
a
b
結果是
a=3
b=5
scanf()可輸入資料,跟printf同樣方式,兩者都需用到列印格式控制輸出入資料
輸出結果>>
press any char: 1
char is 1
此程式輸入是什麼輸出就是什麼
輸出結果
enter an int: 10
enter an long int: 1.11
enter an float:
your enter.....
int a =10
long int b=1
float c=0.110000
在使用前都要包含cstring巨集
若輸入HI HO
輸出結果
a = HI
b = HI HO
字元 | 跳脫字元序列 |
---|---|
單引號 | \ ' |
雙引號 | \ " |
反斜線 | \ \ |
輸出結果
a=HI
b="HI"
下面整理C/C++語言數值資料型態,unsigned表示無號整數、即非負整數
數值資料型態 | 占用記憶體大小 | 代表的數值範圍 |
---|---|---|
short | 16 | -32768 ~ +32767 |
int | 16 | -32768 ~ +32767 |
long | 32 | -2147483648 ~ +2147483647 |
unsigned short | 16 | 0 ~ 65535 |
unsigned int | 16 | 0 ~ 65535 |
unsigned long | 32 | 0 ~ 4294967295 |
float | 32 | 大約3.4E-38 ~ 3.4E+38(負數亦同) |
double | 64 | 大約1.7E-308 ~ 1.7E+308(負數亦同) |
long double | 80 | 大約3.4E-4932 ~ 3.4E+4932(負數亦同) |
可使用signed(有號)、unsigned(無號)的short、int、long等的六種型態儲存整數
整數預設型態是16bits的int型態
數字中含有小數點或指數的稱為浮點數
以指數為例E、e表示10的次方
例如0.0023、2.3E-3、2.3e-3都是表示相同的浮點數或是2.3E+2>>230
浮點數可使用標準書寫>>24.101、1.123
科學符號>>2.3E+1、2.01e-4
可以使用float、double、long double三種型態儲存浮點數常數
C/C++使用bits的ASCII,可表示256個字元包含大小寫英文字母、數字、標點符號、其他特殊符號
char型態是8位元長
例如:"HI"、"你好"
#include<cstring>
使用1代表True、0代表False
布林型態是bool
變數的功能是用來輸入、處理、儲存外界資料
變數在使用前要事先宣告才能用
若變數未宣告的結果,編譯器便無法回應使用者在拼字上的錯誤,造成除錯的困難
hi = hi +1;
上式若事先宣告hi
int hi;
沒宣告則編譯器遇到hi時,便會出現 hi 未宣告的錯誤訊息
變數宣告的優點是可配置恰當的記憶體而提高資料的處理效率[color=#901f7561]
資料型態 變數名稱 [=初值];
宣告變數 a 為int型態
宣告變數b,c為char型態
宣告變數 e 為float型態
宣告變數 r為 char型態,初值為n
輸出結果
1
0
1
下列程式使用指標處理字串
輸出結果
abcd
qwer
ok
qwer
C++新增string型態
可宣告變數b為字串型態
輸出結果
QAQ
輸出結果
1
OH
YA
HAHAHA
下面是排錯後der程式
常數符號需要記憶體儲存位置,與變數不同的是常數在整個程式中都不會也不會改變其值
文字式(Literal):直接以15或3.14表示某一常數[color=#a01d7961]
常數符號式(Symbolic):因有些數字在程式中會不斷重複出現,為了增加程式可讀性及減少程式鍵入麻煩,此時可以用有意義的符號代替這就是常數符號宣告[color=#509f7349]
#define 常數名稱 常數值
const 型態 常數名稱=常數值;
輸出結果
28.26
2500
在一個大型程式中,一個程式是由一或數個函式組合而成 為了防止變數互相干擾,才有變數的有效範圍
任一變數的宣告,若無特殊聲明,均屬於區域變數,有效範圍僅止於該變數所在程式區塊
例如:
宣告在敘述區塊,則它的有效範圍僅止於該敘述區塊,別的敘述區塊是無法取得該區域變數的值
若宣告於函式中,則它的有效範圍僅止於該函式,其他函式均無法取得該區域變數的值
EX:
全域的a有效範圍是main()、aa()、bb()等全部函式
b、c的有效範圍則是main()、aa()中c、d有效範圍是aa(),但此c與main()中的c只是同名,他們各自占有不同記憶體,且其值不會互相干擾
其次,bb()中的a是全域a,與main共用a,在bb()內的改變會傳回main();for敘述區塊內又宣告a,則此a僅在for內有效不會改變全域的a
但若在for敘述區塊中未宣告a,而誤用a,則a會改變全域的a;if敘述區塊也宣告a,則a僅在if內有效,不改變全域a
感覺看懂嘞對ㄅ 再來看程式碼吧!
輸出結果
1.aa der c=3
2.main der c=5
3.global variable a=8
4.for der a=2
4.for der a=3
5.for der a=8
6.for der a=2
6.for der a=3
7.for der a=4
8.if der a=1
9.for der Ba=4
輸出結果
1.a=1
2.a=2
3.a=1
4.a=1
5.a=3
每個變數宣告後,即有屬於自己的型態,往後此變數均只能給相同型態變數儲存 若執行階段指定給不同型態的變數儲存,則稱此為型態轉換
將值域小的型態轉為值域大的型態,稱為自動轉換或轉型(Convert)
此種轉換系統可以自動處理並確保資料不會流失
下列敘述可將型態為long的變數a指派給型態long的變數b,且原值不會改變
short a=23;
long b;
b=a;
cout<<b;
結果是23
將值域大的轉為值域小的型態,稱為強制轉換或稱鑄型(Cast)
,語法如下
變數1 = (變數1的型態) 變數2;
int c=23;
short d;
d=(short) c;
cout<<d;
結果是23
強制轉換的風險大,可能導致資料流失或溢位
float e=3.4f;
short f;
f=(short) e;
cout<<f;
結果是3
long g=32769;
short h;
h=(short) g;
cout << h;
輸出為-32767[color=#b494]
輸出結果
10
a
97
20
3
-32767
所謂運算子(Operator),指的是可以對運算元(Operand)執行特定功能的特殊符號
運算子一般分為五大類:
指派(Assignment)運算子
算數(Arithmetic)運算子
邏輯 (Logical) 運算子
關係(Relational)運算子
位元 (Bitwise) 運算子
指派運算子的符號為(=),其作用為將運算符號右邊運算式的值指派給運算符號左邊的運算元
int sum=0,a=3,b=5;
sum=a+b;//將a+b指派給sum
上述與數學的等號是不同的,所以不要懷疑為何0=8
其次是不能將常數放在指派運算子的左邊
8=x;//不合法敘述
x=8//合法敘述
算術運算子用來執行一般數學運算
運算子 | 定義 | 優先順序 | 結合率 |
---|---|---|---|
++/– | 遞增/遞減 | 1 | 由左而右 |
+/- | 正負號,一元運算子 | 2 | 由右而左 |
* | 乘法運算 | 4 | 由左而右 |
/ | 除法運算(商的型態同被除數) | 4 | 由左而右 |
% | 求餘數(Modulus) | 4 | 由左而右 |
+/- | 加法/減法運算 | 5 | 由左而右 |
輸出結果
1=10
2=0
3=25
4=0.8
5=1
6=1
7=-4.2
8=5
需要注意C/C++語言的算術運算子只有以上那些,若需要運算沒有運算子則需要運用到數學函式
例如C++沒有次方運算子(^)與開根號
要算次方的話要使用到pow()函式
a=pow(3,2);//include<math.h>或<cmath>
要算根號的話要使用到sqrt()函式
x=sqrt(9)//include<math.h>或<cmath>
這兩個運算子又分為前置與後置
EX:
a=1;
++a;
cout<<a<<endl;//2
不論 ++a,a++都是將值加1放回a,但是兩個執行結果還是有差異的
EX:
a=1;
b=++a;//先執行a=a+1;在執行b=a; 輸出 a=2 b=2
a=1;
b=a++;先執行b=a;在執行a=a+1; 輸出 a=2 b=1
其a值均會加1,但b值會有差異,前置b值會得到+1的結果,後者能得到原a值
輸出結果
2
3
3
4
用於資料之間的大小比較的結果可得到int型別的1(True)或0(False)
EX:
if(a==b);//比較ab是否相等
運算子 | 定義 | 優先順序 | 結合率 |
---|---|---|---|
< | 小於 | 6 | 由左而右 |
> | 大於 | 6 | 由左而右 |
<= | 小於等於 | 6 | 由左而右 |
>= | 大於等於 | 6 | 由左而右 |
== | 等於 | 7 | 由左而右 |
!= | 不等於 | 7 | 由左而右 |
輸出結果
1
0
0
1
當同一個運算式要同時存在兩個以上比較運算子,每兩個比較運算子之間必須使用邏輯運算子連結
運算子 | 定義 | 優先順序 | 結合率 |
---|---|---|---|
! | 一元邏輯補數運算(NOT) | 2 | 由右而左 |
& | 完全評估的AND運算 | 8 | 由左而右 |
^ | 完全評估的XOR運算 | 8 | 由左而右 |
| | 完全評估的OR運算 | 8 | 由左而右 |
&& | 快捷的AND運算 | 9 | 由左而右 |
|| | 快捷的OR運算 | 9 | 由左而右 |
輸出結果
0
1
相反地
如果這個值已經可以決定出整個運算式的結果
快捷系統的運算子就不會對第二個關係運算子進行運算
EX:
boolean1=(3>7)&(5>2);
boolean2=(3>7)&&(5>2);//比boolean1更快完成運算
1.若有一數學式,判斷x是否滿足1<x<=6,請轉換C/C++敘述
2.若有一數學式,同時判斷4個變數是否滿足(a1/a2)=(b1/b2),請轉換C/C ++敘述
3.(a1/a2)=(b1/b2)!=(c1/c2)又如何表示
(記得要自己打過程式,題目沒有標準答案der)
結合指派與算術、關係、邏輯運算子
這是C/C++特有的運算子
sum=sum+5;
又等於
sum+=5;
運算子 | 定義 | 優先順序 | 結合率 |
---|---|---|---|
= | 指派設定內容 | 11 | 由右而左 |
+= | 相加後再設定內容 | 11 | 由右而左 |
-= | 相減後再設定內容 | 11 | 由右而左 |
* | 相乘後再設定內容 | 11 | 由右而左 |
/= | 相除後再設定內容 | 11 | 由右而左 |
&= | AND運算後再設定內容 | 11 | 由右而左 |
|= | OR運算後再設定內容 | 11 | 由右而左 |
^= | XOR運算後再設定內容 | 11 | 由右而左 |
位元(Bitwise)操作運算子是將所運算的整數,先轉為二進制,在逐位元進行運算
可分為
位移(shift)運算子與布林運算子
位移運算子是逐位元向左或是向右移
布林運算子則可以逐位元進行布林運算[color=#a347]
運算子 | 定義 | 優先順序 | 結合率 |
---|---|---|---|
~ | 對各位元進行補數運算 | 2 | 由右而左 |
<< | 考慮正負位元的向左位元 | 5 | 由左而右 |
>> | 考慮正負位元的向右位元 | 5 | 由左而右 |
& | 位元AND運算 | 2 | 由左而右 |
| | 位元OR運算 | 8 | 由左而右 |
^ | 位元XOR運算 | 8 | 由左而右 |
<<= | 向左位移之後再指派內容 | 11 | 由左而右 |
>>= | 向右位移之後再指派內容 | 11 | 由左而右 |
0 >>True
1 >>Falst
AND >>遇 0 則 0
NAND >>遇 0 則 1
OR >>遇 1 則 1
NOR >>遇 1 則 0
XOR >>相同為 0 不同為 1
NXOR >>相同為 1 不同為 0
輸出結果
1=-2
2=24
3=3
4=2
5=3
6=1
同一敘述若同時有多個運算子,此時需定義運算子的優先順序
x=a+bc;
由以上各運算子的「優先順序」可知,乘號()的優先順序是第4而加號(+)則是第5
x=(a+(b*c));//和上述結果相同
x=a>b & b>z;
x=(a>b) & (b>z);
x=x+++2; | x=(x++)+2; |
---|---|
x=x+y*2+z++; | x=((x+(y*2))+(z++)); |
z=x>2 & y>3; | z=((x>2)&(y>3)); |
當同一敘述,相鄰的運算子擁有相同優先順序的運算子,此時即需定運算子是左結合或右結合
x=z-b-c;
同是減號(-),優先順序相同,此時就要靠定義結合律,減法結合律是由左至右
x=((a-b)-c);
x=y=z=2;
(x=(y=(z=2)));
輸出結果
-5
x=2
y=2
z=2
任何一個可求得一個值的式子,稱為一個運算式(Expression) 例如5+3會回傳一個數值,所以5+3是一個運算式
這些運算式通常放在cout<<運算式,一般而言可以放在等號右邊的東西,都可以稱為運算式
所有的敘述都要以分號(;)作結束,例如
sum=sum+1;
於C/C++語言中,若前一個敘述未以分號結束,則錯誤訊息通常會出現在下一個敘述的開頭
在任何可以放上單一敘述的地方,你都可以放上敘述區塊,一個複合敘述是由兩個大括號組合而成
但大括號後不可再加分號
{
t=a;
a=b;
b=t;
}
適當的程式註解才能增加程式可讀性
/*我是註解*/
//我是註解
x=x+3; /* x值加3 */
sum=sum+y; //將y值加至sum[color=#b499]
除了適當的註解,程式設計應善用縮排與空行,才可以使程式讓人易於閱讀 因為有了縮排,程式才有了層次感,其次,空行則可使段落更加明顯
C/C++程式架構如下:
編號 | 標題 | 程式 |
---|---|---|
一 | 函式引用區(引入所需標頭檔) | #include <iostream>、#include<math.h> |
二 | 命名空間、類別、函式、全域變數宣告區 | using namespace std; int add(int a,int b); int c; |
三 | 主程式區main() | int main(){ c=add(6,2); cout<<c; return 0; } |
四 | 類別、函式實作區 | int add(int a,int b){ int c; c=a+b; return ( c ); } |
兩種寫法輸出都是10
記得要自己想過寫過呦
試寫一程式,可輸入長方形的長與寬,並計算周長與面積
長方形面積公式>>長乘寬
長方形周長公式>>2(長加寬)
輸入長方體長寬高計算表面積與體積
長方體表面積=(長x寬+寬x高+高x長)x2
長方體的體積公式=長×寬×高
試寫一程式,滿足以下條件
1.可以輸入兩個座標
2.計算兩點座標距離
3.輸出此兩點距離
試寫一程式,可輸入三角形三邊長a、b、c求面積
這裡補充一下演算法則
兩個數要交換,就如同兩杯水要交換
假設你有兩個杯子的水(分別為糖水a、鹽水b),交換其內容,方法如下
1.先找來空杯子t
2.將a杯子的水倒入t杯子
t=a;
3.將b杯子的水倒入a杯子
a=b;
4.將t杯子倒入b杯子,而完成兩杯子的交換
b=t;
其次,若未先找來空杯子t,而直接將b杯子的水往a杯子倒,再將a杯子的水往b杯子倒
a=b;
b=a;
則執行a=b時,如果這時a杯中糖水已經沒了,此時在執行b=a,會出現錯誤結果
試寫一程式,滿足以下條件
1.可以輸入兩個數字
2.交換此兩個數字
3.輸出交換的結果
試寫一程式,可以輸入三個數,並將1交給2、2交給3、3交給1並輸出三個數的結果
假設某次考試成績如下55、66、77、88、99
1.試寫一程式輸入以上資料
2.輸入以上資料
3.計算總和
4.輸出總和與平均[color=#f568]
補充一下
如果遇到大量需要輸入的資料千萬不要這樣一個一個慢慢輸入呦
想知道如何撰寫這樣的程式,會在迴圈與陣列的章節說到
兩點式,兩點可決定一直線(ax+by+c=0)
試寫一程式,可輸入兩個二為座標,並求出此直線方程式
例如:輸入(2,1)、(4、6)則直線方程式為5x-2y-8=0
1.試寫一程式,可輸入一個一元二次方程式,求解(設本例假設方程式有二解)
◎用公式法解一元二次方程式 ax^2 + bx + c = 0 的步驟如下:
(一) 找出二次項係數 a,一次項係數 b,常數項 c。
(二) 算出 b^2-4ac 的值。
(三) 若 b^2-4ac > 0,則 x =−𝑏±√𝑏^2−4𝑎𝑐/2𝑎
若 b^2-4ac = 0,則 x =−𝑏/2𝑎(重根) 。
若 b^2-4ac < 0,則 x 無解。(在國中階段無解)
範例輸出2x^2-7x+3=0,x1=3,x2=0.5
2.試寫一程式,可以輸入一個二元一次方程式,求其解(本例假設方程式洽有一解)
提示:使用克拉瑪公式
3.試寫一程式,可以輸入一個三元一次方程式,並求其解(本例假設所輸入的方程式洽有一解)
4.計算自由落體的距離與時間關係,公式為d=v0t+gt^2/2
5.請分別輸入1個0到9的整數,並將它合併為1個整數
例如:輸入1、2、3、4則輸出1234