嵌入式開發-lesson9-順序結構程式設計
Lesson9-順序程式設計
一、常量與變數
1、常量
在程式執行過程中,其值不能改變的量,叫做常量。
f(x) = 2x + 1
常用的常量有以下幾種型別:
1)整型常量, 100, 0, -234
2)實型常量, 123.456, 123456e-3, 123e+3
3)字元型常量
普通字元, ‘a’ ‘#’
轉義字元, ‘\n’ ‘\t’ '\b'
4)字串常量, “123” "weijie"
5)符號常量 #define ABC 3.14 ABC就是一個符號常量
2、變數
在執行過程中值可以改變的量,叫做變數。變數必須先定義後使用,例如:int a;定義一個整數型別的變數
識別符號:在高階語言中用來對變數、符號常量、函式等等起名字的有效字元,叫做識別符號。
識別符號的要求:只能包含字母、數字、下劃線,並且只能以字母和下劃線開頭
int 2a 錯
int a#b 錯
二、進位制轉換
十進位制(d):
逢10進1,十進位制的演算法123 = 1x100 + 2x10 + 3x1,十進位制中每一位都不超過10
二進位制(binary):
逢2進1,二進位制的演算法(101)B = 1x4 + 0x2 + 1x1,二進位制中每一位都不超過2
(10010011)b = 1*1+1*2+0+0+1*16+1*64
八進位制(o):
逢8進1,八進位制的演算法(765)O = 7x64 + 6x8 + 5x1,八進位制中每一位都不超過8
十六進位制(hex):
逢16進1,十六進位制的演算法(765)H = 7x256 + 6x16 + 5x1,十六進位制中每一位都不超過16
十六進位制中有超過10的數該怎麼表示?用字母a,b,c,d,e,f
位:一個位裡面只能放一個1位的二進位制數
一個位元組byte等於8位,一個字等於2個位元組
十進位制數num轉為n進位制的方法:
step1: n/(n+1) = 0....1
step2: num÷n = 商......餘數1
step3: 如果商為0,跳轉finish
step4: 商 ÷n = 商......餘數2
step3: 如果商為0,跳轉finish
step4: 商 ÷n = 商......餘數3
step3: 如果商為0,跳轉finish
step4: 商 ÷n = 商......餘數4
。。。。。。
finish:將餘數1到餘數n從右到左寫下來,這就是你的結果
n進位制轉十進位制的方法:
給一個8進位制4123,那麼對應的十進位制是:
3x8的0次方 + 2x8的1次方 + 1x8的2次方 + 4x8的3次方
二進位制的技巧
任何一個正整數都可以表示為2的N次方相加,你不信也得信。。。
10 = 8 + 2
100 = 64 + 32 + 4
1000 = 512 + 256 + 128 + 64 + 32 + 8
當然你需要熟練掌握2的10次方以內的所有結果,這是一個程式猿的要求。
789 = 512+256+16+4+1 = 1100010101
二進位制轉十六進位制:四個一組,每一組都是2的0次方到2的3次方
(1011 1100)B = (bc)H
三、基本資料型別
C語言基本資料型別:整型、浮點型
整型:基本整型、長整型、短整型、雙長整型、字元型
浮點型:單精度浮點、雙精度浮點
1、 整型
整型:integer
基本整型(int):佔4個位元組或者2個位元組(分作業系統)
短整型(short int):佔2個位元組
長整型(long):佔4個位元組
雙長整型(long long):佔8個位元組
在實際應用中有些資料只有正數,不能為負數,因此資料又可以分為有符號資料和無符號資料,所以c語言把整型變數又仔細劃分為
unsigned int
[signed] int
unsigned short [int]
[signed] short [int]
unsigned long [int]
[signed] long [int]
unsigned long long [int]
[signed] long long [int]
1111 1111 = 255(無符號)
二進位制的最高位是符號位,0代表+, 1代表-
1111 1111 = -127
定義一個整型變數:
int a; //定義變數
a = 100;//給變數賦值
也可以在定義變數的時候順便給變數賦值,這叫變數的初始化
int a=100;
int a,b;
int a=10, b=100;
2、 字元型
字元型(char):佔1個位元組
字元型也可以分為有符號和無符號:
[signed] char
unsigned char
定義一個整型變數:
char a; //定義變數
a = ‘#';//給變數賦值
char a='$';
字元其實也是以整數的形式存在,因為計算機只認識0和1。你可以檢視ASCII碼錶,裡面對每一個字元都進行的編碼。需要記住‘a’== 97
‘A’==65 ‘0’== 48(不是整數0)
注意:並不是所有的字元都能被c語言識別。
3、 浮點型
浮點型:
單精度浮點(float):佔4個位元組
雙精度浮點(double):佔8個位元組
其實浮點型就是我們說的小數,只不過float和double的精確度不一樣
float a=1.0;
4、 列印變數
列印常量
printf("hello\n");
列印變數
int a;
a = 10;
printf("num is %d", a); //num is 10
%d代表int %f代表float型別資料 %lf代表double型別資料
%ld代表long型別, %c列印char型別資料
如何列印多個變數:
int a,b,c;
a = 10;
b = 11;
c = 12;
printf("three num is %d %d %d\n", a,b,c);
四、運算子與表示式
1、四則運算
+ 加法
- 減法
* 乘法,因為沒有×
/ 除法,因為沒有÷
% 取餘數(取模) 10%6 = 4
2、自增自減
int i = 10;
++i 使用之前i的值加1 ,而且會改變i的值
i++ 使用之後i的值加1
--i 使用之前i的值減1
i-- 使用之後i的值減1
3、表示式
用c語法寫的式子就是c算術表示式,例如a+b*2-3+8/2,c算術表示式的計算方法和數學是一樣的
4、混合運算
在實際運算的過程中,難免有不同型別的資料同時參加運算,鑑於此種情況,C語言有以下規則
1)+-*/中有一個是float另一個是double,那麼系統會將float轉為double,因此結果是double
2)int和float或者double運算時,先將int轉為float或者double
3)字元資料與整型計算時,先將字元轉為對應的ASCII碼,然後計算;字元與float或者double運算時,將字元的ASCII碼轉為float或者double
5、強制轉換
c語言可以把一個數強制轉換成其他型別,例如:
(int)a 把a強轉為int型別
(float)b 把b強制轉換為float型別
注意:當一個小數轉為整數的時候,只保留整數部分(不是四捨五入)
6、其他運算子
1)賦值運算 =,將"="右邊的數值給等號左邊
2)複合運算 += ,a+=3 ---> a=a+3
3)比較運算 > >=
4)條件運算 a = b>c?1:2
五、c語句
一個c程式就是由不同的c語言句子組成的,c語句可以分為5類
1、控制語句,控制程式的執行過程
1)if()...else... 條件判斷
2)for()... 迴圈
3)while()... 迴圈
4)do...while()... 迴圈
5)continue... 結束本次迴圈
6)break... 中止迴圈或者switch
7)switch 分支
8)return 返回
2、函式呼叫語句,由一個函式呼叫加一個分號組成
printf(“hello”);
3、賦值語句,由一個複製表示式和分號組成
a = 6;
4、空語句,由一個分號構成
;
5、複合語句,可以用{ }把許多語句括起來,構成複合語句
{
int a=10,b=20;
int c=a+b;
printf("%d\", c);
}
六、資料輸出
c語言有很多輸入輸出的語句,所謂輸入就是從外部獲取資訊到cpu,輸出就是將cpu的資訊給外部
1、printf
c語言最常用的輸出語句是printf,這個一個格式輸出的語句,使用者必須指定資料的格式,printf(格式控制, 輸出列表),例如
printf("sum = %d + %d", a, b);
%d就是指定資料的格式為int, a和b就是輸出列表, 有兩個%d,因此要有兩個資料
2、格式控制
1)%d
用來輸出一個有符號的十進位制整數,若是長整型用%ld,long long則使用%lld
2)%c
用來輸出一個字元,如果對應的輸出列表是一個整型,那麼會轉為字元型。例如
int a = 65;
printf(“%c”, a); 螢幕會輸出一個字母A,因為A得ASCII碼是65
同樣的,如果使用%d的時候,對應的輸出列表是一個char,那麼會將char轉為整數,例如:
char a = ‘A’;
printf(“%d”, a); 螢幕會輸出一個字母A,因為A得ASCII碼是65
3)%f
輸出float型別,如果是double型別的,可以用%lf,預設6位小數。
使用%m.nf,指定輸出的float格式m代表整數部分的位數,如果不夠則左端補空格,如果整數部分超出指定範圍,那麼按實際操作,不可以影響它的大小;n指定小數部分的位數,如果不夠右邊補0,如果超出,四捨五入。
float num=11.234;
printf("%f", num); 11.234000
printf("%1.5f", num); 11.23400
printf("%3.1f", num); _11.2
4)其他格式
%e 以指數形式輸出實數,例如:
int num=1234;
printf("%e", num); 1.234000e+003
int num=0.00123;
printf("%e", num); 1.23000e-003
%x 以十六進位制輸出整數
%o 以八進位制輸出整數
%u 輸出無符號整數
%a 輸出地址
七、資料輸入
c語言的輸入也有很多種方法,常見的是scanf函式。scanf函式的使用方法基本和printf差不多,我們來找找不一樣的地方
scanf("a=%d,b=%d,c=%d", &a,&b,&c); 後面的列表多了個&
當然你需要在鍵盤上輸入:a=1,b=1,c=3 或者其他的
scanf要注意:
1)格式控制的後面不是一個變數,而是變數的地址
2)如果使用%c,那麼空格和轉義字元都被認為是有效的字元
scanf("%c%c%c", &a,&b,&c)
輸入abc三個字母,中間不能有空格
3)如果是輸入數值,那麼空格、tab、回車、等非法字元都被認為是資料結束,例如:
scanf("%d%d%d", &a,&b,&c)
輸入10 12 13,或者10,12,13都可以
字元的輸入與輸出:
對於字元的輸入和輸出,可以使用其他函式putchar、getchar
1)輸出字元
char a='m';
putchar(a);
2) 字元出入
char a;
a=getchar();
putchar(a);相關文章
- 1.3順序結構程式設計程式設計
- 順序結構
- 第二週 資料計算實現與順序結構程式設計程式(一)程式設計
- 順序程式設計習題程式設計
- 順序結構與選擇結構
- python的順序程式設計Python程式設計
- 最簡單的C程式設計--順序程式設計C程式程式設計
- 順序與選擇結構
- 嵌入式軟體開發的特點、設計流程、嵌入式軟體的結構
- Day17-順序結構
- 串的順序儲存結構
- Day11-順序結構
- 04C++順序結構(3)C++
- 資料結構篇_程式設計思想板塊_第一章順序表和連結串列資料結構程式設計
- web前端培訓教程中程式的順序結構及選擇結構Web前端
- 嵌入式軟體開發之程式架構設計-任務排程架構
- 程式模組化設計結構化開發優勢
- 佇列的順序儲存結構佇列
- 1.入門與順序結構
- Java流程控制02:順序結構Java
- PHPWind8.7中程式碼結構與程式執行順序PHP
- 程式設計體系結構(07):JavaEE之Web開發程式設計JavaWeb
- 彙編學習小記(二)-順序程式設計程式設計
- 線性表之順序儲存結構
- 資料結構 順序棧(c語言)資料結構C語言
- 資料結構 - 線性表 - 順序表資料結構
- [AI開發]零程式碼分析影片結構化類應用結構設計AI
- 程式結構&&程式設計程式設計
- 【敏捷開發】結對程式設計敏捷程式設計
- 具體實現程式碼@資料結構探險——順序表資料結構
- 讀《我和Labview》5條件結構和順序結構View
- 11 線性表的順序儲存結構
- 考研資料結構-線性表-順序表資料結構
- 【資料結構】實現順序表(c++)資料結構C++
- 第5周 5.1 順序與選擇結構
- C#資料結構-二叉樹-順序儲存結構C#資料結構二叉樹
- win10怎麼設定優先順序 win10如何設定程式程式優先順序Win10
- 程式設計暑期培訓順利結束程式設計