目錄
前言
一、環境
1.1 安裝Dev-C++
1.2 首次使用配置
二、Hello baiyu
三、變數及賦值
四、資料型別
4.1 基本資料型別
五、格式化輸出
5.1 整數
5.2 字符及字串
5.3 小結
六、運算子
6.1 算術運算子
6.2 關系運算子
6.3 邏輯運算子
七、程式結構
7.1 順序結構
7.2 分支結構
7.2.1 if-else陳述句
7.2.2 只使用if陳述句
7.2.3 if-else陳述句的嵌套
7.3 回圈結構
7.3.1 while 回圈
7.3.2 do-while回圈
7.3.3 for回圈
總結
前言
今年家里有小朋友開始接觸編程,有時也會問我一些問題,索性把C語言新手入門的東西都整理一遍,本教程適合零基礎的、想要學習C語言的大小朋友們,
本文會講到的內容:
- 資料型別
- 格式化輸出
- 運算子
- 程式結構
一、環境
工欲善其事必先利其器,首先,咱們要有環境
系統:win10
IDE:Dev C++
這里提供了工具下載,沒有工具的小朋友們可以戳這里
鏈接: Dev C++ 安裝包 提取碼: q5se
1.1 安裝Dev-C++




1.2 首次使用配置
選擇中文

顏色推薦Obsidian,因為這個顏色看久了眼睛也不會特別累


二、Hello baiyu
新建一個源代碼檔案

寫入代碼內容,請直接粘貼復制,后面會決議的
#include <stdio.h>
int main()
{
//這里是白玉寫的注釋
printf("Hello, baiyu! \n");
/*這里是白玉寫的另外一種注釋
這種注釋是可以多行的
不信,你看
*/
return 0;
}

保存源代碼檔案,這里記得選擇是【C source files(*.c)】,因為咱們的C語言源檔案就是以【.c】結尾的,以【.cpp】結尾的檔案是C++源代碼檔案,

點擊【運行】

此時代碼還沒編譯,會提示你是否編譯,點擊是
因為C語言是編譯型語言,在運行之前,要編譯鏈接

運行截圖如下

至此,咱們的第一個C語言的程式就這樣完成啦
注:
編譯型語言:程式在執行之前需要一個專門的編譯程序,把程式編譯成為機器語言的檔案,運行時不需要重新翻譯,編譯型語言有C、C++、go
解釋型語言:是相對于編譯型語言而言的,源代碼不是直接翻譯成機器語言,運行時需要一個解釋器對源代碼進行逐行解釋的語言,Javascript、python
半解釋半編譯語言:代碼需要先轉換成一種中間檔案(位元組碼檔案),然后再將中間檔案拿到虛擬機中執行,有Java和C#,java是運行在JVM上,而C#是運行在.net上
三、變數及賦值
咱們在小學數學,就學過代數x,這個x是可以代表任何數的,在咱們編程語言里面,就把這個可變的數值稱之為變數,變數是有名字的,稱之為變數名,比如咱們前面提到的x,這個x就是一個變數名,
咱們在定義一個變數之前呢,要先定義一個變數名
資料型別 變數名
對于變數的賦值,咱們有兩種方式:
- 先宣告再賦值
- 宣告的同時賦值
#include <stdio.h>
int main()
{
int i_baiyu;//定義一個變數
i_baiyu = 666;//給變數進行賦值,把666賦值給i_baiyu這個變數名
//宣告定義變數的同時,把520這個值賦值給到i_baiyu_1這個變數
int i_baiyu_1 = 520;
return 0;
}

四、資料型別
C語言的資料型別大致可以分類四大類:
- 基本資料型別
- 構造型別
- 指標型別
- 空型別
本文主要面向零基礎的同學,入門就先了解一下基本的資料型別
4.1 基本資料型別
C 語言里有六種基本資料型別,分別用short、int、long、char、float、double 這六個關鍵字表示
| 資料型別 | 名稱 | 占用記憶體 | 值范圍 |
| char |
| 1 byte | -128 到 127 或 0 到 255 |
| short |
| 2 byte | -32,768 到 32,767 |
| int |
| 4 byte | -2,147,483,648 到 2,147,483,647 |
| long |
| 4 byte | -2,147,483,648 到 2,147,483,647 |
| float |
| 4 byte | 1.2E-38 到 3.4E+38v |
| double |
| 8 byte | 2.3E-308 到 1.7E+308 |
注:一個位元組(byte)=8位(bit),值范圍就是2的幾次方,比如char型是一個位元組,也就是8位,所以char型變數的取值最大就是2^8=255
#include <stdio.h>
int main()
{
char c_baiyu = 'a';//字符型別
char c_baiyu_1 = 97;//字符型別也可以用ASCII碼賦值
printf("字符型資料 c_baiyu:%c\n",c_baiyu) ;
printf("字符型資料 c_baiyu_1:%c\n",c_baiyu_1) ;
short s_baiyu = 11;
printf("短整型資料 s_baiyu:%d\n",s_baiyu) ;
int i_baiyu = 100;
printf("整型資料 i_baiyu:%d\n",i_baiyu) ;
long l_baiyu = 666;
printf("長整型資料 l_baiyu:%d\n",l_baiyu) ;
float f_baiyu = 1.0;
printf("單精度浮點型資料 f_baiyu:%f\n",f_baiyu) ;
double d_baiyu = 2.22222;
printf("雙精度浮點型資料 d_baiyu:%f\n",d_baiyu) ;
return 0;
}

五、格式化輸出
前面咱們幾個小例子都用到了printf(),咱們只是知道了它是C語言的一個輸出函式,接下來咱們來仔細的剖析一下這個輸出函式,
咱們在參考這個輸出函式之前,咱們首先需要引入<stdio.h>這個頭檔案,這個頭檔案,這個是在C語言里面的標準庫的頭檔案
printf()函式是最常用的格式化輸出函式,其原型為:
int printf( char * format, ... );
printf()會根據引數 format 字串來轉換并格式化資料,然后將結果輸出到標準輸出設備(顯示幕),直到出現字串結束('\0')為止,后面的省略號...就是代表可變的引數
5.1 整數
- %d 輸出十進制的整數,如果輸入的是字符,會輸出對應的ASCII碼
- %o 輸出八進制的整數
- %x 輸出十六進制的小寫
- %X 輸出十六進制的大寫
- %f 輸出浮點數
5.2 字符及字串
- %c 輸出字符,如果輸出的是數字0~126,則會輸出ASCII碼表對應的符號
- %s 輸出字串里的字符,直到出現NULL 字符為止
#include<stdio.h>
int main(void)
{
int i_baiyu = 97;
char c_baiyu = 'a';
float f_baiyu = 5.0;
char str_baiyu[100]= "https://blog.csdn.net/zhh763984017";
// 整數
printf("int 整數輸出:%d\n",i_baiyu);
// 八進制數
printf("int 八進制數輸出:%o\n",i_baiyu);
// 十六進制數
printf("int 十六進制數小寫輸出: %x\n",i_baiyu);
// 十六進制大寫輸出
printf("int 十六進制數大寫輸出: %X\n",i_baiyu);
// 浮點數輸出
printf("浮點數輸出: %f\n",f_baiyu);
// 字符
printf("輸出單個字符: %c\n",c_baiyu);
// ASCII碼輸出字符
printf("ASCII碼輸出字符 : %c\n",i_baiyu);
// 輸出字符對應的ASCII碼
printf("輸出字符對應的ASCII碼: %d\n",c_baiyu) ;
// 字串
printf("輸出字串: %s\n",str_baiyu);
return 0;
}


5.3 小結
| 格式 | 含義 |
| %d | 整數的引數會被轉成有符號的十進制數字 |
| %u | 整數的引數會被轉成無符號的十進制數字 |
| %o | 整數的引數會被轉成無符號的八進制數字 |
| %x | 整數的引數會被轉成無符號的十六進制數字,并以小寫abcdef 表示 |
| %X | 整數的引數會被轉成無符號的十六進制數字,并以大寫ABCDEF 表示浮點型數 |
| %f | double 型的引數會被轉成十進制數字,并取到小數點以下六位,四舍五入 |
| %e | double 型的引數以指數形式列印,有一個數字會在小數點前,六位數字在小數點后,而在指數部分會以小寫的e 來表示 |
| %E | 與%e 作用相同,唯一區別是指數部分將以大寫的E 來表示 |
| %g | double 型的引數會自動選擇以%f 或%e 的格式來列印,其標準是根據列印的數值及所設定的有效位數來決定, |
| %G | 與%g 作用相同,唯一區別在以指數形態列印時會選擇%E 格式, |
| %c | 整型數的引數會被轉成unsigned char 型列印出 |
| %s | 指向字串的引數會被逐字輸出,直到出現NULL 字符為止 |
| %p | 如果是引數是"void *"型指標則使用十六進制格式顯示 |
六、運算子
C語言的運算子有以下幾種:
- 算術運算子
- 關系運算子
- 邏輯運算子
- 位運算子
- 賦值運算子
在這里我就先介紹一下算術運算子、關系運算子和邏輯運算子
6.1 算術運算子
算術運算子,就是跟咱們小學時候學習的四則運算一樣的,有加減乘除,只不過在C語言里面的除法,有分兩種,一種是整除【/】,一種是取余【%】
接下來咱們舉個例子,也結合下面的表格,可以更清楚的了解,C語言的算術運算子,例如有兩個數,A=10,B=21,C是A和B運算的結果
| 運算子 | 描述 | 實體 |
| + | 把兩個運算元相加 | C = A + B,C = 31 |
| - | 從第一個運算元中減去第二個運算元 | C = A - B,C = -11 |
| * | 把兩個運算元相乘 | C = A * B 將得到 210 |
| / | 分子除以分母 | C = B / A 將得到 2 |
| % | 取模運算子,整除后的余數 | C = B % A 將得到 1 |
| ++ | 自增運算子,整數值增加 1 | A++ 將得到 11 |
| -- | 自減運算子,整數值減少 1 | A-- 將得到 9 |
6.2 關系運算子
| 運算子 | 描述 | 實體 |
| == | 檢查兩個運算元的值是否相等,如果相等則條件為真, | (A == B) 為假, |
| != | 檢查兩個運算元的值是否相等,如果不相等則條件為真, | (A != B) 為真, |
| > | 檢查左運算元的值是否大于右運算元的值,如果是則條件為真, | (A > B) 為假, |
| < | 檢查左運算元的值是否小于右運算元的值,如果是則條件為真, | (A < B) 為真, |
| >= | 檢查左運算元的值是否大于或等于右運算元的值,如果是則條件為真, | (A >= B) 為假, |
| <= | 檢查左運算元的值是否小于或等于右運算元的值,如果是則條件為真, | (A <= B) 為真, |
6.3 邏輯運算子
| 運算子 | 描述 | 實體 |
| && | 稱為邏輯與運算子,如果兩個運算元都非零,則條件為真, | (A && B) 為假, |
| || | 稱為邏輯或運算子,如果兩個運算元中有任意一個非零,則條件為真, | (A || B) 為真, |
| ! | 稱為邏輯非運算子,用來逆轉運算元的邏輯狀態,如果條件為真則邏輯非運算子將使其為假, | !(A && B) 為真, |
七、程式結構
程式在執行的程序中有三種方式,順序結構,條件結構,回圈結構,無論大小的程式,都是會由這幾種結構的組成的,
7.1 順序結構
順序結構,就是字面意思,按照順序,從上往下執行,舉個例子,就是你看電視這個動作,
- 打開電視,
- 調到想看的節目
- 開始看電視
這三個動作是按順序來進行的,這個就是順序結構,咱們在前面舉的所有的程式的例子,都是順序結構的,按順序執行完畢,然后結束,

#include<stdio.h>
int main()
{
char step1[] = "1.打開電視\n";
char step2[] = "2.調到想看的臺\n";
char step3[] = "3.開始看電視\n";
printf("baiyu 在這里演示一下順序結構:\n");
printf("開始:\n");
printf("%s",step1);
printf("%s",step2);
printf("%s",step3);
printf("結束\n");
return 0;
}
執行效果如下:

7.2 分支結構
分支結構,也叫選擇結構,就是程式在執行的程序中,會出現分支,給你進行選擇,C語言在分支結構里面有專用的語法,就是咱們接下來即將要講的if-else陳述句
7.2.1 if-else陳述句
if跟else,是C語言的兩個關鍵字,if-else的結構用法如下:
if(判斷條件){
陳述句塊1
}else{
陳述句塊2
}
if關鍵字后面跟的是一個條件判斷,如果條件成立,執行if關鍵字緊跟著的陳述句塊、不成立的話,就執行else跟著的陳述句塊,條件結構如圖所示:

7.2.2 只使用if陳述句
這里的if-else陳述句的并不一定要成對出現,有時候,我們只需要在滿足某些條件的時候,才執行陳述句,而不滿足條件的時候,不需要執行陳述句,如下圖所示:

7.2.3 if-else陳述句的嵌套
if(判斷條件1){
陳述句塊1
if(判斷條件2){
陳述句塊2
}else{
陳述句塊3
}
}else{
陳述句塊4
if(判斷條件3){
陳述句塊5
}else{
陳述句塊6
}
}
接著咱們之前的看電視的例子,細化一下,
- 你打開了電視,
- 如果你想看新聞,你就調到新聞臺,如果你想看影片片,你就調到動漫頻道,如果你想看其他的,你就調到其他的臺,
- 然后開始看電視
咋一看,你會覺得這個是順序結構的,但是,實際上的流程如下圖所示,里面包含了分支結構,

咱們上面的流程圖看電視的程式實作如下:
#include<stdio.h>
int main() {
char step1[] = "1.打開電視\n";
char step2[] = "2.調到想看的臺\n";
char step3[] = "3.開始看電視\n";
int select;
printf("開始:\n");
printf("baiyu 在這里演示一下分支結構:\n");
printf("%s",step1);
printf("你是否要看新聞?0-否,1-是\n");
scanf("%d",&select);//scanf()是輸入函式
printf("你的選擇是:%d\n",select);
if(select==1)
{
printf("開始看新聞\n");
}
else
{
printf("你是否要看動漫?0-否,1-是\n");
scanf("%d",&select);
printf("你的選擇是:%d\n",select);
if(select==1)
{
printf("開始看動漫\n");
} else
{
printf("開始看其他\n");
}
}
printf("%s",step3);
printf("結束\n");
return 0;
}
程式執行的效果如下:



7.3 回圈結構
接著看電視的例子,今天我一共看了15集《名偵探柯南》,每看完一集,我就用printf陳述句列印一條出來,“我看完x集柯南了”,
#include <stdio.h>
int main(){
printf("baiyu看完1集柯南了\n");
printf("baiyu看完2集柯南了\n");
printf("baiyu看完3集柯南了\n");
printf("baiyu看完4集柯南了\n");
printf("baiyu看完5集柯南了\n");
printf("baiyu看完6集柯南了\n");
printf("baiyu看完7集柯南了\n");
printf("baiyu看完8集柯南了\n");
printf("baiyu看完9集柯南了\n");
printf("baiyu看完10集柯南了\n");
printf("baiyu看完11集柯南了\n");
printf("baiyu看完12集柯南了\n");
printf("baiyu看完13集柯南了\n");
printf("baiyu看完14集柯南了\n");
printf("baiyu看完15集柯南了\n");
return 0;
}

你會不會發現這樣子列印的陳述句,其實除了幾集那個數字是變的,其他的內容的都是一樣的,那我們能否將這些重復的動作給簡化呢?答案是肯定的,就是咱們即將說到的回圈結構,
回圈——比喻事物周而復始地運動或變化,
在C語言里面的回圈結構是指在程式中需要反復執行某個功能而設定的一種程式結構,
在C語言里,回圈結構有三種:
- while
- do...while
- for
7.3.1 while 回圈
while (運算式){
回圈陳述句塊
}
while回圈的執行流程如下:先判斷運算式滿不滿足為true,如果滿足的話,執行回圈陳述句塊,再判斷運算式是否滿足,如果滿足的話,繼續執行回圈陳述句塊,直到運算式不成立,即為false,

#include<stdio.h>
int main(){
int num = 1;
printf("while回圈結構列印示例\n");
while(num<=15)
{
printf("baiyu看完%d集柯南了\n",num);
num++;
}
return 0;
}

7.3.2 do-while回圈
do{
回圈陳述句塊
}while(運算式);
do-while回圈其實跟while回圈結構是一樣的,滿足運算式時,執行回圈體,
唯一的區別就是,do-while回圈,會在判斷運算式是否成立之前,先執行一次回圈陳述句塊,
換句話說,do-while 回圈會確保回圈體陳述句至少執行一次

在do-while回圈結構中,while(運算式);在這里的分號是一定要有的,不然程式會報錯,
#include<stdio.h>
int main(){
int num = 1;
printf("do-while回圈列印示例\n");
do{
printf("baiyu看完%d集柯南了\n",num);
num++;
}while(num<=15);
return 0;
}

7.3.3 for回圈
for ([運算式1];[運算式2];[運算式3]){
回圈陳述句塊
}
for回圈的執行順序如下:
- 執行運算式1,對回圈變數做初始化;
- 判斷運算式2,若其值為真(非0),則執行for回圈體中執行代碼塊,然后向下執行;若其值為假(0),則結束回圈;
- 執行運算式3;
- 執行for回圈中執行代碼塊后執行第二步;
- 回圈結束,程式繼續向下執行,

#include<stdio.h>
int main(){
int num;
printf("for回圈列印示例\n");
for(num=1;num<=15;num++)
{
printf("baiyu看完%d集柯南了\n",num);
}
return 0;
}

從上面的例子也可以看出,回圈結構中,while回圈、do-while回圈、for回圈都可以實作同樣的功能,咱們在實際的編程程序中,可以根據實際需要跟自己的喜好選中不同的回圈結構,
總結
至此,你已經對于C語言的基礎入門知識有了一定的了解了,也掌握了基本的編譯敲代碼技巧,
接下來,我會根據C語言不同的知識點,將整理好的更詳細的教學的文章發出來給大家,
如果你覺得本文有幫助的話,不妨給個一鍵三連,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287489.html
標籤:其他
上一篇:對庫函式函式的一些總結
