C 语 言 的 格 式 - SO-NET

更新时间:2023-05-28 05:06:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C 语 言 的 格 式 - SO-NET

C 語 言 的 格 式

什麼是 C 語言? C 語言執行過程?原始程式 --> 經由編譯器 --> 變成目的檔 --> 經由連結器 --> 變成執行檔 SOURCE.C --> COMPILER --> SOURCE.OBJ --> LINKER --> SOURCE.EXE

C 語 言 的 特 性(1) 可 以 像 組 合 語 言 一 樣 進 行 硬 體 之 直 接 存 取 . (2) 為 語 法 規 則 簡 單 , 清 楚 , 容 易 使 用 之 結 構 化 語 言 . (3) 必 要 時 可 以 與 組 合 語 言 連 結 . ( 4 ) 可 攜 性 ( Portability ) 極 佳 , 跨 平 台 的 能 力 強 .

標 準 C 語 言 格 式#include < stdio.h > ----> 前置處理器 subroutine( ) ----> 副程式 {. .. } subroutine( ) ----> 副程式 { } main( ) ----> 主程式 { int i=0 ; /* 變 數 宣 告 */ i=i+1; /* 算 數 運 算 */----> 程式主體 printf("i=%d\n",i) ; /* 輸 出 至 螢 幕 */ }

C 語言簡介

C 语 言 的 格 式 - SO-NET

基 本 資 料 型 態

變 數 命 名 的 原 則 ?1. 2. 3. 開 頭 必 須 是 字 母 ( letter ) 或 底 線 ( underscore ) . 字 元 的 大 寫 小 寫 所 代 表 的 意 義 不 同 . 不 得 使 用 關 鍵 字 ( keyword ) . (在 Borland C++ 軟體中已粗體顯現)

變 數 的 資 料 型 態 種 類 :類 別 符號位元 位元長(bits) 有 整 數 無 16 32 16 16 32 浮點數 有 字元 無 32 64 8 表 示 法 int(short) long unsigned int 數 值 範 圍 -32768->32767 -2147483648->2147483647 0->65535

unsigned short 0->65535 unsigned long 0->4294967295 float double char 10^-38->10^38 10^-308-->10^308 0->255

C 語言簡介

C 语 言 的 格 式 - SO-NET

變 數 的 宣 告 方 法 :(1) 整 數 部 份 : int a; int b,c=45; short int name; long int var_name; unsigned int argu1=30;

(2) 浮 點 數 部 份 : float a=12.3456; /*單精準度*/ float b=0.12345e2; double score=4.987654322e-7; /*雙精準度*/

(3) 字 元 部 份 : char c='c'; char bell=7; /*7 為 ASCII 之響聲字元*/

C 語言簡介

C 语 言 的 格 式 - SO-NET

儲 存 類 別 自 動 變 數 ( auto variable ) 自 屬 當 變 動 的 程 數 變 區 式 就 數 塊 執 不 只 結 行 存 在 構 離 在 它 所 定 義 的 區 塊 內 有 效 。 只 要 在 變 數 所 內 執 行,該 變 數 的 資 料 是 有 效 而 正 確 的。 開 了 該 區 塊 , 所 有 於 區 塊 內 定 義 的 自 動 了 。

Example 1: main( ) { int x=1; inner( ); printf("%d\n",x); } { int x=2; printf("%d\n",x); } inner( )

靜 態 變 數 ( static variable)靜 態 變 數 與 自 動 變 數 一 樣 , 是 某 特 定 函 數 內 的 區 域 性 變 數 , 但靜 態 變 數 的 值 不 會 因 函 數 的 執 行 結 束 而 消 失 。

靜 態 變 數 的 宣 告 如 下 所 示 : { static int a; static int b=12345; static char c; static float d=13.45; . . . }

Example 1:main() { increment(); increment(); increment(); } increment() { int x=0; x=x+1; printf("%d\n",x); } Result = ????? { } main() {

Example 2:

increment(); increment(); increment();

increment() static int x=0; x=x+1; printf("%d\n",x); } Result = ?????4

C 語

言簡介

C 语 言 的 格 式 - SO-NET

外 部 變 數 ( extern variable)外 部 變 數 和 前 面 所 提 到 的 變 數 不 同。外 部 變 數 的 有 效 範 圍 不 是 區 域 性 , 而 是 整 體 性 ( global ) , 外 部 變 數 定 義 在 任 何 函 數 的 外 面 , 表 示 可 以 被 其 他 函 數 所 共 用 。

Example 1:int x=123; main() { printf("%d\n",x); int x=123;

Example 2:

main() { int x=321; printf("%d\n",x); }

} Result = ?????

Result = ?????

Example 3:#include < stdio.h > #include "extern.c" int x=123; main() { printf("%d\n",x); run1(); run2(); } run1() { printf("%d\n",x); } extern.c 內 容 如 下 : #include < stdio.h > run2() { extern int x; printf("%d\n",x); }

Result = ?????

C 語言簡介

C 语 言 的 格 式 - SO-NET

/* ======================================== */ /* 程式實例: */ /* 局部(local)和整體(Global) 變數 */ /* ======================================== */ #include <stdio.h> int step = 10; int count = 5; /* 整體變數宣告 */ /* 整體變數宣告 */

/* ---------------------------------------- */ /* 將變數值加一 */ /* ---------------------------------------- */ void increment() { int step = 0; step++; count++; printf(" 副程序 } /* ---------------------------------------- */ /* 主程式 /* ---------------------------------------- */ void main() { int count = 0; count++; step++; printf(" 程序名 increment(); printf(" 主程序 STEP %2d

/* 局部變數 step 宣告 */ /* 局部變數加一 */ /* 整體變數加一 */ %2d \n",step, count);

%2d

*/

/* 局部變數宣告 */ /* 局部變數加一 */ /* 整體變數加一 */ COUNT \n"); /* 副程序呼叫 */ %2d \n",step, count);

}/* ======================================== */ 執行結果 程序名 副程序 主程序

STEP 1 11

COUNT 6 16

C 語言簡介

C 语 言 的 格 式 - SO-NET

基 本 輸 入 / 輸 出 函 數 格 式 化 輸 出 函 數 printf( )語 法 如 下 :

printf(format_string,arg1,arg2,...argn);轉換字元的種類

種 類

表 示 法 d o

功 能 敘 述 以十進位方式印出。 以八進位方式印出。 以十六進位方式印出。 以不帶符號的十進位方式印出。 以長整數(long)方式印出。 以 xxx.xxxxxxx 方式印出。 以指數的方式印出。 以字元方式印出。 以字串方式印出。 向左邊靠齊印出 。 指定欄位寬。 分隔欄寬。 指定浮點數之精確度。

整 數(integer)

x u l f e c s dd . *.*

浮點數(float) 字元(char)

其他(other)

{ int x=42; float y=12.345; char c='A',c1[4]="ABC "; printf("/%d/\n",x); printf("/%15d/\n/%-15d/\n",x,x); printf("/%f %4.3f/\n",y,y); printf("/%08.4f/\n",y); printf("/%0*.*f/\n",8,4,y); printf("/%c %s/\n",c,c1); }

result:

/42/ / /42 /12.3450000 /012.3450/ /012.3450/ /A ABC/

42/ / 12.345/

C 語言簡介

C 语 言 的 格 式 - SO-NET

表二.特殊控制碼種 類 \n \r \t \b \f \\ \' \" 功 能 敘 述 newline 新行。 carriage return 回歸鍵。 tab 跳格。 backspace 退位。 form feed 跳頁。 backslash 反斜線。 single quote 單引號。 double quote 雙引號。

格 式 化 輸 入 函 數 scanf( )語 法 如 下 :

scanf(format_string,argptr1,argptr2,...argptrn);

main( ) { int x; float y; char z; scanf("%d %f %c",&x,&y,&z); printf("%d %f %c\n",x,y,z); scanf("%3d %4f",&x,&y); printf("%d %f\n",x,y); }

result :

24 12.45 G -----> 此處為鍵盤輸入之資料 24 12.4500001 G 123 4567890 ------> 此處為鍵盤輸入之資料 123 4567.00000

C 語言簡介

C 语 言 的 格 式 - SO-NET

C 語言基本資料處理

算 術 運 算 元 ( Arithmetic operators )

將 整 數及浮 點 數 或 字 元 指 定 給 某 一 不 特 定 的 變 數 之 動 作

加、減、乘、除、負 數 及 模 數 運 算子加 (+) 減 (-) 乘 (*) 除 (/) 為 一 般 的 四 則 運 算,而 模 數 運 算 (%) 、 、 、 是 經 由 兩 常 數 相 除 所 得 的 餘 數 稱 之。負 數 是 在 某 個 常 數 前 面 加 個 減 號 所 成 的 組 合 稱 之 。

運 算 子 的 優 先 權*、/、%、+、- 以 上 所 標 示 的 運 算 子 , 其 運 算 的 優 先 順 序 由 左 至 右 。 負號 (-) 乘 ( * )、除 ( / )、餘數( % ) 加 ( +)、減 ( - ) 高優先順序 中優先順序 低優先順序

型別之轉換:語法: (type) expressionmain( ) { int x1; float y1,y2; x1=(int)4.123; y1=(float)46/5; y2=(int)5.3456; printf("%d %f %f\n",x1,y1,y2);

Result: 4 9.20000000 5.00000000

}

C 語言簡介

C 语 言 的 格 式 - SO-NET

遞 增 與 遞 減遞 增 與 遞 減 又 分 為 前 置 模 式 ( prefix ) 與 後 置 模 式( postfix ) ; 前 置 模 式:是 將 ++ 或 - - 置 於 變 數 之 前,其運算是在使用此運算元之前 先進行加一或減一之動作。 後 置 模 式: 是 將 ++ 或 - - 置 於 變 數 之 後,其運算是在使用此運算元之後 才進行加一或減一之動作 。main() { int a=1,b=1,c=1,d=1; int aplus,bplus; int cminus,dminus; aplus=++a; bplus=b++; cminus=--c; dminus=d--; printf("%d %d\n",aplus,bplus); printf("%d %d\n",a,b); printf("%d %d\n",cminus,dminus); printf("%d %d\n",c,d); } 2 2 0 0 1 2 1 0

Result:

設定特殊運算式特殊運算式 a += b a -= b a *= b a /= b a %= b 基本運算式 a=a+b a=a-b a=a*b a=a/b a=a%b

C 語言簡介

C 语 言 的 格 式 - SO-NET

邏 輯 運 算 子 ( Logical operators )邏 輯 運 算 的 種 類 運算子 && || ! 功能敘述 AND(及) OR(或) NOT(反向) ~ << >> 運算子 功能敘述 1' complement(一的補數) Left shift(左移) Right shift

關 係 運 算 子 ( Relational operators ) :程 或 有 條 件 的 敘 述 當 中 ,

一 般 用 於 控 制 流

關 係 運 算 子 運算子 < <= > 小於 小於等於 大於 功能敘述 >= == != !, 負號 (-), ++, -乘 ( * )、除 ( / )、餘數( % ) 加 ( +)、減 ( - ) <, <=, >, >= ==, != && || 運算子 功能敘述 大於等於 等於 不等於

基本運算子優先順序表

C 語言簡介

C 语 言 的 格 式 - SO-NET

流 程 控 制

控 制 結 構 ( control structure )結 構 化 程 式 設 計 的 基 礎 建 立 在 下 列 三 個 結 構 : ( 1 ) 循 序 ( sequential ) : 以 一

個 接 著 一 個 方 式 進 行 作 業 。 ( 2 ) 條 件 執 行 ( conditional ) : if_then_else 。 ( 3 ) 迴 路 ( looping ) :

條 件 執 行 if 的 運 用以 下 是 if_then_else 流 程 控 制 可 能 出 現 的 四 種 語 法 syntax 1: if (關係運算元) statement ; syntax 2: if (關係運算元) { statement 1 ; statement 2 ; . . . statement n ; } syntax 3: if (關係運算元) statement ; else statement ; syntax 4: if (關係運算元) { statement 1 ; statement 2 ; . statement n ; } else { statement 1 ; statement 2 ; . statement n ;12

C 語言簡介

C 语 言 的 格 式 - SO-NET

} ps. 如果 statement 超 過 一 個 以 上,則 須 以 { } 將 其區塊分隔開來 。

Example 1:Void main(void) { int x; scanf("%d",&x); if ( x >= 10 ) printf("%d >= 10\n",x); else printf("%d < 10\n",x); }

Example 2:Void main(void) { char c; scanf("%c",&c); if( c == 'A' ) { printf("c=%c\n",c); printf("This is true.\n"); } else { printf("c!=A\n"); printf("That isn't true.\n"); } Result: A -----> 此處為鍵盤輸入值 c=A This is true

Result: 10 ---> 此處為鍵盤輸入值 10 >= 10

C 語言簡介

C 语 言 的 格 式 - SO-NET

迴 路 while 的 運 用在 while 的敘述中,當關係運算元之條件為真時 , 會不斷地重覆執行位於 while 後 所 列 的 敘 述 , 直 到 條 件 變 為 否 定 才 停 止 。

Syntax 1:

Syntax 2:

while ( 關係運算元 ) statement ;

while ( 關係運算元 ) { statement 1 ; statement n ; }

Example 1:

Example 2:

Void main( ) { int i=0; while ( i < 5 ) printf("%d\n",i++); printf("out of loop.\n"); }

Void main( ) { int i=0,c=0; while ( i < 5 ) { printf("%d",i++); printf("%d\n",++c); } printf("out of loop.\n"); }Result = ?????

Result =

?????

C 語言簡介

C 语 言 的 格 式 - SO-NET

迴 路 do-while 的 運 用do-while 迴 路 , 由 於 測 試 條 件 在 迴 路 的 後 面 , 所 以 迴 路 中 的 敘 述 至 少 會 被 執 行 一 次 ,

Syntax 1:

Example:

do statement ;

while ( 關係運算元 ) ;Syntax 2:

Void main( ) { int i=0,c=0; do { printf("%d",i++); printf("%d\n",++c); } while ( i < 5 ) ; printf("out of the loop.\n"); }

do { statement 1 ; statement 2 ; . statement n ; } while ( 關係運算元 ) ;

Result = ?????

C 語言簡介

C 语 言 的 格 式 - SO-NET

迴 路 for 的 運 用for 允 許 使 用 者 在 同 一 行 敘 述 中 就 設 定 了 迴 路 的 三 個 部 份 。 (1) 計 數 器 的 初 值,(2) 關 係 運 算 元,(3) 增 減 迴 路 計 數 器 的 值 。 其 語 法 如 下 所 示 ,for ( 計數器初值,關係運算元,計數器值更新 ) statement ; or for ( 計數器初值,關係運算元,計數器值更新 ) { statement 1 ; . statement n ;

}

Example 1:Void main( )

Example 2:Void main( ) { int i,c; for (i=0, c=1 ; i < 5 ; ++i,++c ) { printf("%d",i); printf("%d\n",c); } printf("Out of Loop.\n"); } Result = ?????

{ int i; for( i = 0 ; i <= 5 ; ++i ) printf("%d ",i); } Result = ????? 012345

C 語言簡介

C 语 言 的 格 式 - SO-NET

goto 的 運 用在 一 個 程 式 中 , 使 用 got

o 敘 述 可 以 強 制 改 變 程 式 執 行 的 步 驟 , 但 也 會 因 此 使 程 式 的 結 構 混 亂 , 所 以 此 敘 述 應 儘 量 不 用 。 其 語 法 如 下 所 述 。

Example:Syntax : goto . . . label : . label ; main( ) { int i=1111; repeat : printf("%d\n",i); goto repeat ; }

條 件 執 行 switch 的 運 用switch 語 法 如 下 所 示 switch ( 變數) { case

常數 1 : statement 1 ; case 常數 2 : statement 2 ; . case 常數 n : statement n ; default : statement ;

} ps. 此 處 常 數 的 資 料 型 態 為 整 數 與 字 元 兩 種 。

C 語言簡介

C 语 言 的 格 式 - SO-NET

Example 1:Void main( ) { char var='D'; switch (var ) { case 'A' : printf("var = A\n"); break; case 'B' : printf("var = B\n"); break; case 'C' : printf("var =C\n"); break; default : printf("I'm in default."); } /* end of switch */ } /*end of main */

Example 2:Void main( ) { int var=3; switch ( var ) { case 1 : printf("var = 1\n"); break; case 2 : printf("var = 2\n"); break; case 3 : printf("var = 3\n"); break; default : printf("I'm in default"); } /* end of switch */ }/*end of main */

C 語言簡介

C 语 言 的 格 式 - SO-NET

函 數 何 謂 函 數 ?1. 2. C 語言使用的函數可以寫出非常漂亮的程式結構,使程式簡單化,偵錯容易。 將重複之某些指令撰寫成一個函數,可減少編輯程式時間,更可使程式精 簡,清晰了解。 C 語言使用的函數其呼叫方法與數學上使用函數完全相同, 例 如 :

3.

a = function ( x , y ) ;表示將變數 x , y 輸入函數 function , 其傳回函數值設定給變數 a 。

函 數 的 結 構 (格式)1. 2. 3. 函 數 的 定 義 (Function Definition) 呼 叫 函 數 (Function Call) 函 數 原 形 宣 告 (Function Prototype)

函 數 的 定 義 (格式)Example:

儲存類別 資料型別 函數名稱 (形式引 數的串列) { 形式引數的宣告 ; 函數的本體(執行敘述) }

void line (void) { int j; for (j=1;j<20;j++) printf(“%d\n”,j);

} C 語言簡介19

C 语 言 的 格 式 - SO-NET

函 數 的 傳 回 值 與 資 料 形 態

要 求 函 數 送 回 傳 回 值 (函數值) , 必 須 在 函 數 本 體 中 利 用 return 敘 述 進 行 , 例 如 :

return ( 變數或式子 ) ;此 處 必 須 先 宣 告 傳 回 值 (函數值) 的 資 料 形 態 是 什 麼 。 return()敘述之目的如下

1. 將控制權傳回給呼叫程式 2. 將 return()敘述後括號內之數值傳給呼叫程式之方式

呼叫程式 函數

v o id m a in (v o id ){ in t a n s ; ******* *******

in t fu n c (v o id ) {******* ******* x=3; r e tu r n (x ) ;}

a n s = fu n c ();***** }

3

C 語言簡介

C 语 言 的 格 式 - SO-NET

呼叫函式傳值的方式有兩種:( 1 ) 傳 遞 變 數 值 本 身 ( Call by value ) (一般 c 函式採用的方式)

double power(double,int); .... int i=3; double x=4.0; double result=power(x,i);

call by value x 4.0copy暫時存放

i

3copy 3暫時存放

4.0

複製後交給函式處理

power(double,int)複製後,函式如何改變數值

都與原先變數不相干

C 語言簡介

本文来源:https://www.bwwdw.com/article/pc84.html

Top