當前位置:網站首頁>C語言基礎知識梳理(一)

C語言基礎知識梳理(一)

2022-07-23 10:44:56愛學習的小船

目錄

一、C語言概述

1.1 C語言發展史

1.2 C語言的特點

1.3 第一個C語言程序

1.4 System函數的使用

1.5 C語言的編譯過程

1.6 斷點和單步調試

二、數據類型

2.1 數據類型概述

2.1.1 關鍵字32個

2.1.2 數據類型

2.1.3 常量

2.1.4 變量

2.2 整型

2.2.1 整型變量的定義和輸出

2.2.2 整型輸入

2.2.3 整型的大小和取值範圍 short、int、long、 long long

2.3 sizeof 關鍵字

2.4 字符型:char

2.4.1 字符串變量的定義和輸出

2.4.2 字符串變量的輸入

2.4.3 轉義字符

2.5 實型(浮點型):float、double

2.6 進制

2.7 類型限定符

2.8 字符串格式化輸出和輸入

2.8.1 字符串常量

2.8.2 printf函數 和 putchar函數

2.8.3 scanf函數和getchar函數

三、運算符與錶達式

3.1 運算符優先級

3.2 類型轉換

四、程序流程結構

4.1 選擇結構

4.1.1 if語句

4.1.2 三目運算符 ?:

4.1.3 switch語句

4.2 循環語句

4.2.1 while 和 do...while

代碼實例:水仙花數

4.2.2 for語句

代碼實例:隨機數

4.3 跳轉語句

4.3.1 break、continue

4.3.2 goto語句


一、C語言概述

1.1 C語言發展史

        C語言源自於B、BCPL兩種語言

C語言之父:丹尼斯·麥卡利斯泰爾·裏奇(英語:Dennis MacAlistair Ritchie,1941年9月9日-2011年10月12日)

BCPL語言之父:馬丁·理察德(Martin Richards,1940年7月21日-)英國

B語言之父:肯尼斯·藍·湯普遜(英語:Kenneth Lane Thompson,1943年2月4日-)

1.2 C語言的特點

1)優點:
        代碼量小、執行速度快、功能强大、編程自由

2)缺點:

        寫代碼實現周期長、可移植性較差、過於自由,經驗不足容易出錯、對平臺庫依賴較多

1.3 第一個C語言程序

#include <stdio.h>
//用include 導入文件,
//stdio.h   std是一個標准庫,io輸入輸出庫 h錶示頭文件,用printf的時候需要這個庫
//<>錶示導入系統文件  ""錶示導入自定義文件


// main() 函數為主函數,是程序中的唯一入口,int 錶示返回值類型,()括號裏可以填如需要的參數
int main()
{
        // 行注釋
        /*
          塊注釋
        */
        printf("Hello world!\n");    //\n是一個轉義字符,錶示換行
        return 0;
}

1.4 System函數的使用

        功能:在已經運行的程序中執行另外一個外部程序

        參數:外部可執行程序的名字

        返回值: 成功0, 失敗為其他任意數字

#include <stdlib.h>

int main(void)
{
        //cmd命令 calc:計算器  notepad 記事本 mspaint 畫圖板……
        system("calc"); //打開計算器
        
        //可以打開一個外部的應用程序  如果帶路徑,需要使用\\或者/
        system("D:\\Desktop\\QQ.exe"); 
        return 0;
}

1.5 C語言的編譯過程

C程序編譯步驟

1)預處理:宏定義展開、頭文件展開、條件編譯等,同時將代碼中的注釋删除,這裏不會檢查語法 

2)編譯:檢查語法,將預處理後文件編譯生成匯編文件 

3)匯編:將匯編文件生成目標文件(二進制文件)

4)鏈接:C語言寫的程序是需要依賴各種庫的,所以編譯之後還需要把庫鏈接到最終的可執行程序中去

預處理:gcc-Ehello.c-ohello.i
編譯:gcc-Shello.i-ohello.s
匯編:gcc-chello.s-ohello.o
鏈接:gcchello.o-ohello
選項含義
-E只進行預處理
-S只進行預處理和編譯
-c只進行預處理、編譯、匯編
-o file指定生成的輸出文件名為file

一步編譯:gcc -o hello.exe hello1.c hello2.c

常見代碼問題:

  1. 編輯時异常
  2. 編譯時异常
  3. 運行時异常

1.6 斷點和單步調試

        斷點:在選中的行前 點擊或按F9

        調試程序:在“調試”中選擇“開始調試”或按F5

        逐語句執行:F11

        逐過程執行:F10

        跳出過程:shift+F11

        停止調試:shift+F5

二、數據類型

2.1 數據類型概述

2.1.1 關鍵字32個

數據類型關鍵字(12個)

  • char, short, int, long, float, double
  • unsigned(無符號數), signed(有符號數)
  • struct(結構體), union(聯合體), enum(枚舉)
  • void(空類型)

控制語句關鍵字(12個)

  • if, else, switch, case, default
  • for, do, while, break, continue, goto, return

2.1.2 數據類型

        

 注意:

        1. 在C語言中沒有字符串類型,使用字符數組char[]錶示字符串

        2. 在不同系統上,部分數據類型字節長度不一樣,舉例:int可以占兩個字節或4個字節

數據類型的範圍:

 C語言變量的生命周期和作用域

變量類型生存周期作用域
局部變量auto:自動變量,離開定義函數立即消失只作用於函數內部
register:寄存器變量,離開定義函數立即消失
static:靜態變量,離開定義函數仍然存在
全局變量在程序運行期間一直存在static:靜態變量,僅用於本文件內部調用
extern:外部存儲變量,用於聲明本文件將要用到的其他文件的變量

2.1.3 常量

定義常量的方式:

  1. const  數據類型 常量名 = 值;   (eg: const int PAI = 3.14;)
  2. #define 常量名 值    (eg: #define PAI = 3.14)

在C語言中,第一種方式是不安全的,C++中是安全的,推薦用第二種方式

枚舉常量:

	int main()
	{
	        enum Sex
	        {
	                //枚舉常量 性別
	        MALE,
	        FEMALE,
	        SELECT
	        };
	        
	        enum Sex s = FEMALE; //利用枚舉常量給變量賦值
	        printf("%d\n", MALE);
	        
	        return ;
	}
  • 不能對枚舉常量賦值,只能將他們的值賦給其他的變量
  • 不能再定義與枚舉常量名字相同的變量
  • 不能用 &  取他們的地址

2.1.4 變量

變量的定義方式

  • 數據類型  變量名 =  值或錶達式;(eg:  int num = 3*5;)

再定義變量時,可以再數據類型前邊加修飾auto,也可以不加

標識符命名規則:

  1. 不能使用系統關鍵字
  2. 允許使用字母、數字、下劃線_
  3. 不允許數字開頭,只能是字母或下劃線開頭
  4. 區分大小寫

2.2 整型

2.2.1 整型變量的定義和輸出

打印格式含義
%d輸出一個有符號的十進制int類型
%o輸出8進制的int類型
%x輸出16進制的int類型,字母以小寫輸出
%X輸出16進制的int類型,字母以大寫輸出
%u輸出一個10進制的無符號數

有符號數和無符號數:

#include <stdio.h>

int main(void)
{
        //無符號  unsigned 有符號 signed(可以省略)
        signed int a = -10;
        unsigned int b = 10;//只能是正數,如果是負數,輸出會是別的亂的數
        
        printf("%d\n", a);
        printf("%u\n", b);
        return 0;
        
}

2.2.2 整型輸入

scanf 可以從標准輸入流stdin 讀取輸入

scanf("%d", &a);

scanf 安全問題的兩種解决方式:

  1. #define _CRT_SECURE_NO_WARNINGS //這個宏定義最好放到c文件的第一行
  2. #pragma warning(disable:4993)  //或者使用這個,這個不用必須第一行

注意:在讀取字符串時,只要遇到一個空格,scanf() 就會停止讀取

#define _CRT_SECURE_NO_WARNINGS //用scanf時,忽略警告,這個宏定義最好放到c文件的第一行
#pragma warning(disable:4993)  //或者使用這個,這個不用必須第一行
#include <stdio.h>

int main(void)
{
        int a;
        //通過鍵盤輸入賦值
        //&運算符,錶示地址運算符
        scanf("%d", &a);
        
        printf("%d\n", a);
        return 0;
}

2.2.3 整型的大小和取值範圍 short、int、long、 long long

數據類型占用空間
short(短整型)2字節
int(整型)4字節
long(長整型)windows為4字節,Linux為4字節(32比特),8字節(64比特)
long long(長長整型)8字節

注意:

  • 數據類型不同,開具大小也不同
  • 整型數據在內存中占的字節數與所選擇的操作系統有關。雖然C語言標准中沒有明確規定整型數據的長度,但long類型證書的長度不能短於int類型,short類型數據的長度不能長於int類型
  • 當一個小的數據類型賦值給一個大的數據類型,不會出錯,因為編譯器會自動轉換,但當一個大的數據類型賦值給一個小的數據類型,會丟失高比特
  • short <= int <= long <= long long
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

int main()
{
        int a = 10;        //整型變量
        short b = 20;//短整型變量
        long c = 30;//長整型變量
        long long d =40;//長長整型變量
        
        printf("%d\n", a);
        printf("%hd\n", b); //%hd 短整型數據占比特符
        printf("%ld\n", b); //%hd 長整型數據占比特符
        printf("%lld\n", b); //%hd 長長整型數據占比特符
        
        
        /*  整形大小的計算 sizeof
            sizeof 計算數據類型再內存中占的字節(BYTE)大小
            1B=8bit
            三種格式:sizeof(數據類型)  sizeof(變量名)  sizeof 變量名
        */
        unsigned int len = sizeof(int); //第一種格式
        printf("整型:%d\n", len); //4 整型占的大小是4個字節
        
        //第二種格式:
        printf("整型:%d\n", sizeof(a)); //4B = 32bit
        printf("短整型:%d\n", sizeof(b)); //2
        printf("長整型:%d\n", sizeof(c)); //4
        printf("長長整型:%d\n", sizeof(d)); //8
        
        return EXIT_SUCCESS;
}

2.3 sizeof 關鍵字

sizeof(data type)可以計算數據類型的大小

  • sizeof不是函數,不需要任何頭文件,它的功能是計算一個數據類型的大小,單比特是字節
  • sizeof的返回值是size_t
  • size_t類型在32比特操作系統下是 undesigned int 是一個無符號數

具體代碼示例見 2.5

2.4 字符型:char

2.4.1 字符串變量的定義和輸出

char ch = 'a';

        %c 占比特符來代錶 char類型

2.4.2 字符串變量的輸入

       scanf("%c", &ch1);

#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<string>
int main()
{
        //2.4.1 字符型變量
        char ch = 'a';
        
        //打印字符型變量
        printf("%c\n", ch); //a
        //打印字母a對應十進制數(ASCⅡ碼對應十進制代碼)
        printf("%d\n", ch); //97
        //打印字符型大小
        printf("字符型大小:%d\n", sizeof(ch)); //1
        
        printf("%c\n", ch - 32) //A
        printf("%c\n", 201) //?
        
        //2.4.2 字符串的輸入
        char ch1;
        scanf("%c", &ch1);
        print("%c\n", ch1 - 32);
        
        return EXIT_SUCCESS;
}

2.4.3 轉義字符

轉義字符含義ASCⅡ碼值(十進制)
\a警報007
\b退格(BS),將當前比特置移到前一列008
\f換頁(FF),將當前比特置移到下頁開頭012
\n換行(LF),將當前比特置移到下一行開頭010
\r回車(CR),將當前比特置移到本行開頭013
\t水平制錶(HT),(跳到下一個TAB比特置)009
\v垂直制錶(VT)011
\\代錶一個反斜線字符“\”092
\'代錶一個單引號字符092
\"代錶一個雙引號字符034
\?代錶一個問號063
\0數字0000
\ddd8進制轉義字符,d範圍0-73比特8進制
\xhh16進制轉義字符,h範圍0-9,a-f, A-F3比特十六進制

注意:紅色字體錶注的為不可打印字符

eg:   printf("\"你好\""); //"你好"     \"輸出 雙引號

        printf("20%%"); //30%  倆百分號輸出一個百分號

2.5 實型(浮點型):float、double

雙精度浮點型(double)比 單精度浮點型(float)更精確

占比特符 %f 錶示輸出一個浮點型, 默認保留6比特小數,C語言四舍五入

int main(void)
{
        //傳統方法賦值
        long a = 20L; //L可以省略
        float b = 3.14f; //或3.14F
        double c = 3.14; //不以f結尾的 是double類型
        printf("%.2f\n", b); //3.14 保留兩比特小數
        printf("lf", c); //3.140000
        
        //科學法賦值
        a1 = 3.2e3f; //3.2*10^3=3200, e可以寫成E
        b1 = 3.2e-3f; //3.2*10^-3 = 0.0032
        c = 3200;
	   //占比特符 %f 錶示輸出一個浮點型, 默認保留6比特小數,C語言四舍五入
        printf("%f\n", a1); //3200.000000
        printf("%e\n",c); //%e占比特符錶示用科學計數法錶示
        
        a2 = 3,1415926f;
        printf("%f\n", a2); //結果為3.141593
        
        //sizeof字節大小
        //浮點型數據,存儲在內存中的格式分別為符號比特、指數比特、小數比特
        printf("%d\n", sizeof(float)); //4
        printf("%d\n", sizeof(double)); //8
        return EXIT_SUCCESS;
}

%p 占比特符 錶示一個指針,以十六進制顯示數據對應的內存地址

int main(void)
{
        int a = 10;
        float b = 3.14;
        
        //%p 占比特符 錶示一個指針,以十六進制顯示數據對應的內存地址
        printf("%p\n", &a);  //0097FD54
        printf("%p\n", &b);  //0097FD58
        
        getchar();
        return 0;
}

2.6 進制

bit和Byte

術語含義
bit (比特)一個二進制數代錶一比特,一個比特只能錶示0或1兩種狀態,數據傳輸以“比特"(bit)為單比特
Byte (字節)一個字節為8個二進制,是計算機的最小存儲單元

C語言如何錶示相應的進制數

十進制以正常數字1-9開頭,如123
八進制以數字0開頭,如0123
十六進制以0x開頭,如0x123
二進制C語言不能直接書寫二進制數

 進制的轉換輸出:

int main(void)
{
        //進制
        //二進制0-1 八進制0-7  十六進制0-9 a-f
        
        int a = 10;
        printf("%d\n", a); //10 
        printf("%x\n", a); //十六進制 A
        printf("%o\n", a); //八進制 12
        
        int b = 0123; //定義八進制數據 以0開頭
        int c = 0x123; //定義十六進制數據,以0x開頭
        
        //在計算機定義數據時,不可以直接定義二進制
        printf("%d\n", b); //二進制 83
        printf("%x\n", b); //十六進制 53
        printf("%o\n", b); //八進制 123
        
        printf("%d\n", c); //二進制 291
        printf("%x\n", c); //十六進制 123
        printf("%o\n", c); //八進制 443
}

2.7 類型限定符

限定符含義
extern

聲明一個變量,extern聲明的變量沒有建立存儲空間。

extern int a;  //變量在定義的時候創建存儲空間

const

定義一個常量,常量的值不能修改。

const int a = 10; 

volatile防止編譯器優化代碼
register定義寄存器變量,提高效率。register是建議型的指令,而不是命令型的指令,如果CPU有空閑寄存器,那麼register就生效,如果沒有空閑寄存器,那麼register無效。·

2.8 字符串格式化輸出和輸入

2.8.1 字符串常量

        字符串是內存中一段連續的char空間,以'\0'(數字0)結尾

        字符串常量是由雙引號括起來的字符序列,如“china”、"C program"、"$12.5"等都是合法的字符串常量。

        每個字符串的結尾,編譯器都會自動添加一個結束標志比特'\0'。

關於字符串的更多介紹可以參考5.5字符串

int main()
{
        char a = 'a';
        char * b = "a";
        char * c = "a\0";
        char * d = "hello\0 world";
        char * b[11] = "hello world\0";
        
        // 占比特符%s 錶示輸出一個字符串,遇到\0停止,沒\0的話,後邊會亂碼
        printf("%s\n", d); // hello
        return EXIT_SUCCESS;
}

2.8.2 printf函數和 putchar函數

printf是輸出一個字符串putchar輸出一個char

printf格式字符:

打印格式數據類型含義
%dint接受整數值並將它錶示為有符號的十進制數
%hdshort int短整數
%huunsigned int無符號短整數
%ounsigned int無符號8進制整數
%uunsigned int無符號10進制整數
%x, %Xunsigned int無符號16進制整數,x對應小寫,X對應大寫
%ffloat單精度浮點數
%lfdouble雙精度浮點數
%e,%Edouble科學計數法錶示的數,e/E錶示 輸出的e 是大寫或小寫
%cchar字符型,可以把輸入的數字按照ASCⅡ碼轉為相應字符
%schar *字符串,輸出字符串中的字符直至字符串中的空字符(以‘\0’結尾)
%pvoid *以16進制形式輸出指針
%%%兩個百分號 輸出一個百分號

printf附加格式:

字符含義
l (字母l)附加在d,u,x,o前,錶示長整數
-左對齊
m (代錶一個整數)數據最小寬度為m
0 (數字0)將輸出的前面補上0直到占滿指定列寬為止,不可以搭配使用-
m.n(代錶一個整數)m指域寬,即對應的輸出項在輸出設備上所占的字符數。n指精度,用於說明輸出的實型數的小數比特數,對數值型的來說,未指定n時,隱含的精度為n=6比特
int main()
{
        //printf輸出字符串
        int a = 10;
        int b = 123456;
        
        printf("===%5d===",a); //===   10===  默認右對齊,數據占5比特
        printf("===%-5d===",a);//===10   ===  左對齊,數據占5比特
        printf("===%05d===",a); //===00010=== 右對齊,數據占5比特,前空比特補0
        printf("===%05d===",b);//===123456===
          
        float c = 3.14;
        printf("===%7.2f===",a); //===   3.14=== 右對齊,數據占7比特,保留兩比特小數,小數點占一比特
        


        //putchar輸出一個char
        char ch = 'a';
        
        //printf("%c\n", ch);
        //putchar輸出字符  可以是變量 字符 數字 轉義字符
        putchar(ch);
        return 0;
        putchar('B');
        putchar(97);
        putchar('\n');
        return 0;

}

2.8.3 scanf函數和getchar函數

getchar是從標准輸入設備讀取一個char

scanf通過%轉義的方式可以得到用戶通過標准輸入設備輸入的數據

int main()
{
        char ch1;
        char ch2;
        char ch3;
        int a;
        int b;
        
        //getchar()接受鍵盤獲取字符
        printf("請輸入ch1的字符:");
        ch1 = getchar(); //獲取字符
        printf("ch1=%c\n",ch1);
        
        getchar(); // 寫上這行代碼,可以用於暫時停留界面
        
        //scanf作用
        scanf("%d%d", &a, &b);
        scanf("%d,%d", &a, &b); //中間可以加分隔符,但是不能是\n
        scanf("%3d%d", &a, &b); //3錶示接受3個數據(這個約束只能對整形)
        printf("%d\t%d", a, b);
        return EXIT_SUCCESS;
        
}

三、運算符與錶達式

3.1 運算符優先級

1、() []取數組下錶     . 取對象屬性   ->指針  

2、- 取負數~按比特取反、++ 、--、!、sizeof 、(數據類型)强制類型轉換結合性從右到左,單目

3、*、/、%

4、+、-

5、<< 左移、>>右移

6、>、>=、<、<=

7、==、!=

8~10、 &按比特與^ 按比特异或|按比特或

11、&& 邏輯與

12、||邏輯或

13、?:三目運算符

14、=、+=、-=、*=、/=

15、, 逗號運算符,會將最後一個,的值賦值給前邊的內容

int main()
{
	int a = 10;
	int b = 20;
	int c = (a, b+20);
	printf("%d\n",c); //40
	return 0;
}

3.2 類型轉換

轉換的兩種方式

  • 自動轉換(隱式轉換):遵循一定的規則,由編譯系統自動完成。
  • 强制類型轉換:把錶達式的運算結果强制轉換成所需的數據類型

類型轉換的原則

        占用內存字節數少的類型,向占用內存字節數多的類型轉換

        

 

int main()
{
	float p = 3.567;
	int w = 2;
	//隱式轉換
	double sum = p*w;
	
	//(數據類型) 强制類型轉換運算符 不會四舍五入
	int sum2 = (int)p * w; //6
	int sum2 = (int)(p*w); //7
	
	
}

 

四、程序流程結構

C語言的三種基本程序運行結構:順序結構、選擇結構、循環結構

4.1 選擇結構

4.1.1 if語句

if 語句可以分為以下三種:

if(錶達式){}

if(錶達式){} else{}

if(錶達式1){} else if(錶達式2){} else{}

同時,if也可以進行嵌套。不同的示例代碼如下所示:

int main()
{
        int score;
        scanf("%d", &score);
        //if…else語句
        //if(錶達式){}
        //if(錶達式){}else{}
        if (score >= 60)
        {
                printf("考試合格");
        }
        else
        {
                printf("考試成績不合格");
        }        
        
        //if…else if…else語句
        //if(錶達式1){} else if(錶達式2){} else{}
        if (score>=80){                
                printf("良好");
        }
        else if(score >= 60)
        {
                printf("及格");
        }
        else
        {
                printf("不及格");
        }
        
        //if條件嵌套
        if (score>=80){                
                if(score>=90){
                        printf("優秀");
                }
                else
                {
                        printf("良好");
                }
        }
        else if(score >= 60)
        {
                printf("及格");
        }
        else
        {
                printf("不及格");
        }
        
        
}

4.1.2 三目運算符 ?:

 三目運算符的格式

   錶達式1錶達式2錶達式3

        if 錶達式1 true -->錶達式2,  如果錶達式1   false -->錶達式3

#define MAX(a,b) (a)>(b)?(a):(b)

int main()
{
        int a =10;
        int b = 20;
        int c;
        int d; 
        c = a > b ? a : b; // 三目運算符
        printf("最大值為:%d\n", a > b ? a : b);
        
        printf("最大值為:%d\n", MAX(a,b));//通過重定義函數來比較
}

4.1.3 switch語句

        switch效率比if會高一些,多用於遊戲的程序控制

        測試switch() 括號中的錶達式的值,等於哪個case,就執行相應case後的代碼,

        遇到break時跳出switch,如果該case中沒有break,則繼續檢查後邊的case

        default可以放在switch中的最後,用於上邊所有case都沒有滿足的時候執行,

int main()
{
	int score;
	scanf("%d", &score);
	switch (score/10)
	{
	case 10:
		printf("優秀\n");
		break;
	case 9:
		printf("優秀\n");
		break;
	case 8:
		printf("良好\n");
		break;
	case 7:
		printf("及格\n");
		break;	
	case 6:
		printf("及格\n");
		break;		
	default: //這裏存放其他情况
		printf("不及格\n");
		break;
	}
	
	return EXIT_SUCCESS;
}

4.2 循環語句

4.2.1 while 和 do...while

        兩種語句的格式如下

    do{   } while(條件);
    while(條件){   }

         do...while是先執行一次,在判斷循環,while是先判斷在執行。相比來說,do...while一定會執行一次,但是while可以一次都不執行;

        需要小心死循環的發生,在while語句中及時添加自增或自减語句

int main():
{
	//while(錶達式)
	int i = 0;
	while(i<10)
	{
		printf("%d\n", i);
		i++; //沒這個會死循環
	}
	
	//用while實現 逢7過
	int a = 1;
	while(a<100)
	{
		//7的倍數 || 個比特數為7 || 十比特數是7
		if(a % 7 == 0 || a % 10 == 7 || a/10 == 7)
		{
			printf("過\n");
		}
		else
		{
			printf("%d\n", a);
		}
	}
	
	//do while語句
	int j = 0;
	do
	{
		printf("%d\n",j);
		j++;
	} while(j < 10);
	
	return EXIT_SUCCESS;
}

代碼實例:水仙花數

//水仙花數 從100-999 各個比特數的立方和相加等於這個數本身就是一個水仙花數
int main(void)
{
	int i = 100;
	do
	{
		//個比特數
		int a = i % 10;
		//十比特數
		int b = i / 10 % 10;
		//百比特數
		int c = i / 100 ;
		
		if(a*a*a + b*b*b + c*c*c==i)
		{
			printf("%d是水仙花數\n", i);
		}
	       i++;
	} while(i <= 999);
	    return EXIT_SUCCESS;
}

4.2.2 for語句

for循環語法

for ( init; condition; increment )
{
   statement(s);
}

init 用來聲明在循環控制變量,可以在for語句之前聲明,在這裏賦值,也可以直接聲明賦值

condition 為循環判斷條件,true時進入循環,false就不執行了,直接下一部分代碼

increment 在每次循環結束後執行,更新控制變量,之後再進行condition的條件判斷

代碼實例:隨機數

#include<stdlib.h>
#include<time.h>
#include<stdio.h>

int main()
{
	//C99庫
	for(int i = 0; i < 10; i++)
	{
		printf("%d\n", i);
	}
	
	
	//產生隨機數
	//1、導入頭文件 time.h   stdlib.h
	//2、添加隨機數種子
	//3、獲取隨機數
	srand(unsigned int) time(NULL); //加上隨機數中詞,讓每次隨機數不一樣
	
	for (int i = 0; i<10;i++)
	{
		int value = rand()%10; //0-9的數,如果%100,就是取0-99的數
		printf("%d\n", value);
	}
	
	return 0;
}

不同的循環都可以進行嵌套,用for循環嵌套實現時鐘如下

int main()
{
	//時鐘
	for(int i = 0; i<24; i++)
	{
		for(int j = 0; j<60;j++)
		{
			for (int k = 0; k < 60; k++)
			{
				System("cls");//清理屏幕
				printf("%02d:%02d:%02d\n",i,j,k);
				Sleep(960);
			}
		}
		
	}
}

4.3 跳轉語句

4.3.1 break、continue

        break如果再嵌套語句中使用,跳出本層循環

        continue 用於中止本次循環,進入下一次

4.3.2 goto語句

        跳轉到標記的地方,可以向前,也可以向後
int main(void)
{
	printf("hello world1\n");
	printf("hello world2\n");
	goto FLAG;
	printf("hello world3\n");
	printf("hello world4\n");
	printf("hello world5\n");
	FLAG:
	printf("hello world6\n");
	printf("hello world7\n");
	printf("hello world8\n");
	printf("hello world9\n");
	   return EXIT_SUCCESS;
}

這是關於C語言的一部分學習筆記,後續也會持續更新,感謝您的支持和關注!️

版權聲明
本文為[愛學習的小船]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/204/202207230433577541.html

隨機推薦