2019第一次軟件培訓 --- C語言

軟件第一講 — C語言

01 程序設計概述

(1)什麼是編程

編程就是讓計算機代爲解決某個文圖,對某個計算體系規定一定的運算方式,是計算體系按照該計算方式運行,並最終得到相應結果的過程

爲什麼編程

物聯網工程學院的所有專業都離不開紮實的編程能力:硬件控制、信號處理、軟件開發……所有這些的基礎都離不開編程。
隨着科技的發展與人類社會的不斷進步,計算機在人類社會中的地位將會越來越重,編程會是人類未來的基本技能之一。
編程將人從繁瑣的重複的勞動之中解放出來,解放了生產力,是現代社會的基石之一。

爲什麼用C語言

2019年3月編程語言排行榜
2019年3月編程語言排行榜
C語言是一種高級語言
用C語言開發系統可以大大縮短開發週期,明顯增強程序的可讀性,便於程序的改進、拓充與移植。
C語言可以直接調用匯編
加快程序的運行效率,在單片機編程中也有較大作用。
在這裏插入圖片描述

如何學習編程

1.聽課入門,重點是看書,看博客,看論文
2.多看大牛的代碼,編程有模板的,多敲多嘗試,實踐出真知
3.多寫高質量的代碼,積累才能質變
4.有一個目標,不論是想完成一個軟件項目還是獲得一個獎項,目標給

02 C語言程序結構

#include <stdio.h> //預處理指令
/*
主函數main()是程序入口
*/
int main()
{
int a = 1; //變量a
printf(“Hello World!\n”) ; //輸出HelloWorld
return 0;
}
在這裏插入圖片描述

註釋

在這裏插入圖片描述
#include <stdio.h> //頭文件
/ *
comment1
main: generate some simple output
/
//主函數
int main()
{
printf(/
comment2 */“Hello, world.\n”);
printf(“Goodbye!”);
return 0;/comment3/
}

頭文件

C語言標準庫中有許許多多的頭文件,這裏主要介紹常用的這三個頭文件stdio.h, string.h, math.h,以後用到其他的再做補充。

頭文件stdio.h :定義了輸入輸出函數、類型以及宏 如: scanf , printf

頭文件string.h :字符串及內存處理函數 如: strcpy, strcat, strcmp, memset, memcpy

頭文件math.h :常用的基本數學函數 如: abs, tan, sin, cos, pow, sqrt, ceil, floor

計算機存儲

8 bit(比特) = 1 Byte(字節)
1024 Byte = 1 KB
1024 KB = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB
1024 TB = 1 PB

基本數據類型

整型:
(字符型)char -128 ~ 127
short -215 ~ 215-1
int -231 ~ 231-1
long -231 ~ 231-1
long long -263 ~ 263-1
浮點型
float 6位小數
double 15位小數
在這裏插入圖片描述

03 C語言語法

scanf/printf

一個有用的程序必然有0或若干個輸入以及1或更多個輸出。
scanf(),printf()是C語言標準庫函數,申明於頭文件stdio.h。默認情況下用於從鍵盤讀取輸入及將格式化後的字符串輸出到屏幕。
scanf()以及printf() 格式化字符串包含三種對象,分別爲:
(1)字符串常量;(2)格式控制字符串;(3)轉義字符。

類型:類型是格式控制字符串的重中之重

在這裏插入圖片描述
在這裏插入圖片描述

轉義字符

在這裏插入圖片描述

常用運算符

算數運算符
賦值運算符
邏輯運算符
二進制運算符
關係運算符

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

邏輯運算符

邏輯與:&&<表達式1> && <表達式2>當且僅當 <表達式1> 和 <表達式2> 全部爲真的時候,整個邏輯表達式爲真
邏輯或:||<表達式1> || <表達式2>當且僅當 <表達式1> 和 <表達式2> 全部爲假的時候,整個邏輯表達式爲假
邏輯非:!! <表達式>當 <表達式> 爲真的時候,!<表達式> 爲假當 <表達式> 爲假的時候,!<表達式> 爲真

爲了加快程序運行速度,編譯器會對條件判斷的表達式進行一定的優化
邏輯與:&&
<表達式1> && <表達式2>當 <表達式1> 爲假的時候,不執行<表達式2>
邏輯或:||
<表達式1> || <表達式2>當 <表達式1> 爲真的時候,不執行<表達式2>

條件分支-if

if語句。if有兩種用法
if(條件表達式){ 條件成立時需要執行的內容;}
if(條件表達式){ 條件成立時需要執行的內容;}
else{ 條件不成立時需要執行的內容;}

if嵌套

if(條件表達式1)
{
條件1成立時需要執行的內容;
}
else if(條件表達式2)
{
條件2成立時需要執行的內容;
}else if(條件表達式3)
{
條件3成立時需要執行的內容;
}…
else { 條件都不成立執行的內容;}

條件分支-switch

switch(表達式){
case 常量1:
<語句塊1>
break;
case 常量2:
<語句塊2>
break;
default:
<語句塊3>
}

switch語句非常有用,但在使用時必須謹慎。程序會自動跳轉到與表達式的值相同的常量的Case處並繼續執行接下來的代碼,若不寫break會導致程序繼續執行接下來Case中的語句。default部分爲找不到相對應的相等常量時跳轉的位置。

條件比較的注意點

浮點型的精度有限,不適合用==運算符做精確比較。以下代碼可以說明問題:float i = 1;float j = i / 10.0; if (j * 10.0 == i) printf(“Equal.\n”); else printf(“Unequal.\n”);
Switch也因爲這種原因,不用於進行浮點型的比較。

while / for / do…while 循環控制語句

while

while (條件){ <執行的語句們>}
使用while循環的注意事項:(1)表達式不可以爲空,表達式爲空不合法;(2)表達式可以用非0代表邏輯值真(true),用0代表邏輯值假(false);(3)循環體中必須有改變條件表達式狀態的語句,否則將成爲死循環

例如 while(1){…} 是一個無限循環語句 while(0){…} 是一個不會進行循環的語句

例:求n!
int factorial(int n)
{
int result = 1;
while (n > 0)
{
result = result * n;
n = n - 1;
}
return result;
}

for

for (初始化;循環條件;條件變化操作){ <執行的語句們>}
For循環可以看作一種while循環的變體。(1)若循環初始值省略並且在for循環之前已經初始化過了,則不影響循環體的執行(2)若循環條件或循環參數或循環初始值、循環條件、循環參數三者都省略,則循環體會一直執行下去,變成一個死循環(3)For循環裏面是分號不是逗號


例:求n!
int factorial(int n)
{
int result = 1;
int i;
for(i = 1; i <= n; ++i)
result = result * i;
return result;
}

循環-for初始化、循環條件、條件變化表達式的忽略

for (初始化;循環條件;條件變化操作){ <執行的語句們> }
注意:每一項後面的分號不可忽略。
省略初始化部分:for(;i<=100;i++){…}; 不對循環的變量進行初始化操作
省略循環條件部分:for循環在不經過break等語句的情況下會一直運行
省略條件變化表達式:若循環內無相關改變循環條件表達式的操作,循環可能會一直運行。

循環-控制語句

break 語句功能:跳出當前所在循環,用在循環語句和開關語句中,通常總是與if 語句聯合使用,即滿足一定條件時跳出循環。當break用於switch-case 中時,可使程序跳出switch-case而執行switch-case 後面的語句;當break用於do-while、for、while循環語句中時,可使程序終止循環而執行循環後面的語句,

continue 語句功能:結束本次循環,繼續下次循環;
for(i=0;i<=100;i++){ if(i==1) contiune; //執行i=2的情況}printf(“%d”,i);輸出結果爲100(循環進行了101次)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章