




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第1章 緒論程序設計基礎(C語言版)1.1 程序設計語言 程序設計語言是一組用來定義計算機程序的語法規則,即程序設計語言必須是計算機能夠理解的 用程序設計語言編寫的程序稱為源程序(source program)或源代碼(source code) 程序設計語言的發展:機器語言(machine language)匯編語言(assembly language)高級語言解釋方式編譯方式1.2 C語言概況一、C語言的發展歷史 C語言標準的變遷C89ANSI CC90ISO/IEC 9899:1990C99ISO/IEC 9899:1999C11ISO/IEC 9899:2011 注:Microsoft
2、Visual C+(簡稱VC)僅支持C90二、C語言的特點1.3 C語言程序的基本結構【例1.1】 輸出Hello!#include int main(void) printf(Hello, the world!n); return 0;【例1.2】 求兩個整數的和并輸出#include int main(void) int a, b, sum; a = 10; b = 20; sum = a + b; printf(sum = %dn, sum); return 0; C 語言程序書寫格式自由【例1.1】 輸出Hello!#include int main(void) printf(Hell
3、o, the world!n); return 0;#include int main(void)printf(Hello!n);return 0; 為增強程序的可讀性,通常書寫C語言程序時應遵循以下規則:一行內僅寫一條語句正反大括號分別各占一行每對大括號上下對齊語句采用縮進格式,錯落有致1.4 C語言程序的上機執行過程可執行文件(.exe)Executable File目標文件(.obj)Object File源文件(.c)Source Fileedit編輯compile編譯其他目標文件(可選)C標準庫C standard library link連接第2章 標記、類型與表達式程序設計基礎(
4、C語言版)2.1 標記 標記(token)是具有唯一含義的語言的最小單位,分為五種:關鍵字(keyword)標識符(identifier)常量(constant)串字面量(string literal)標點符號(punctuator)一、關鍵字 關鍵字也稱為保留字,所有關鍵字都有固定的含義,且其含義不可改變 C語言共有44個關鍵字:autoexternshortwhilebreakfloatsigned_Alignascaseforsizeof_Alignofchargotostatic_Atomicconstifstruct_Boolcontinueinlineswitch_Complexd
5、efaultinttypedef_Genericdolongunion_Imaginarydoubleregisterunsigned_Noreturnelserestrictvoid_Static_assertenumreturnvolatile_Thread_local二、標識符 標識符用于表示程序中的對象(object)函數(function)結構體(structure)的標記(tag)或成員(member)共同體(union)的標記或成員枚舉(enumeration)的標記或成員typedef名(typedef name)標號名(label name)宏名(macro name)宏參數
6、(macro parameter) 標識符由小寫字母、大寫字母、數字、下畫線、通用字符名(universal character name)或實現定義的字符(implementation-defined character)構成 注意:數字不能作為標識符的第一個字符關鍵字不能作為標識符 標識符的例子:areaPerimeter_3wu03b1w VC允許在標識符中使用$,因此,$123在VC中是標識符 不是標識符的例子:6abccheck-itemint 大寫字母和小寫字母是有區別的,即所謂大小寫敏感Ageage C語言對標識符的最大長度沒有具體的限制,VC允許標識符的最大長度為247個字符
7、應該選擇相應的英文單詞或其縮寫作為標識符,做到見名知義 表示長方體的長、寬、高abclengthwidthheight(更合適)三、常量 在程序運行過程中,其值不變的量稱為常量。常量分為四種類型:整數常量(integer constant)浮點常量(floating constant)枚舉常量(enumeration constant)字符常量(character constant)1、整數常量 整數包括正整數、零和負整數 整數常量只包括正整數和零,不包括負整數。整數常量分為:十進制整數常量八進制整數常量十六進制整數常量 十進制整數常量由 09 組成,且以非零數字開頭1231000 八進制整數
8、常量由 07 組成,且以 0 開頭,或者只有一個 00170 十六進制整數常量由 AF(或af)、09 組成,且以 0 x 或 0X 開頭0 x1a0XD5【例2.1】 八進制、十進制、十六進制整數常量之間的混合運算#include int main(void) printf(sum = %dn, 014 + 12 + 0 xc); return 0;2、浮點常量 數學中的實數包括有理數和無理數。其中,有理數包括整數和分數;無理數是無限不循環小數 計算機中的浮點數(floating-point number)只能近似地表示值在某個范圍之內的有理數和一些特殊值,如NAN(非數值)、+INF(正無
9、窮大)、-INF(負無窮大)等 浮點常量是非負的浮點數,其十進制書寫形式有兩種:小數表示法 由數字09和小數點組成,必須有小數點123.00.4520.01.25123.4520.0指數表示法60000.0的指數表示法為6E40.000035的指數表示法為3.5e-5十進制整數常量E符號位 十進制整數常量浮點常量的小數表示法E符號位 十進制整數常量3、枚舉常量 枚舉常量是類型為int的標識符4、字符常量 ASCII碼-American Standard Code for Information Interchange 字符常量分為:整數字符常量(integer character consta
10、nt)寬字符常量(wide character constant) 整數字符常量是由一對單引號括起來的一個或多個字符,其類型為int,在內存中占4個字節aababc 本課程討論的字符常量是指單引號內只有一個字符的整數字符常量 單引號內的字符可以是普通字符?A09 printf(%d, %d, %d, %d, A, b + 2, 0, 1 + 3); 單引號內的字符還可以是轉義序列(escape sequence)141x61u03b1四、串字面量 串字面量分為三種:字符串字面量(character string literal)UTF-8串字面量(UTF-8 string literal)寬串
11、字面量(wide string literal) 本課程僅討論字符串字面量 字符串字面量是用一對雙引號括起來的零個或多個字符 在翻譯的第七個階段,空字符(null character)即 0 被加到字符串字面量的末尾,然后字符串字面量以數組元素類型為char的數組的形式存儲在內存中 如果字符串字面量中不含0,則該字符串字面量又稱為字符串(character string),即字符串是以空字符0結束的連續字符序列ab0c 是字符串字面量,但不是字符串abc 既是字符串字面量,又是字符串 字符串的長度是指空字符前的字符在內存中所占的字節數。因此,長度為n的字符串,在內存中占n + 1個字節字符串字
12、符串的長度占用內存/字節01 12hello56hellon67hx65llon67c是字符常量,占4個字節c是字符串,占2個字節【例2.2】 輸出字符串#include int main(void) printf(12345678901234567890n); printf(abcnabdbcn); printf(efgr); printf(110 x49tijkn); return 0;五、標點符號2.2 類型 類型(type)分為:基本類型(basic type)枚舉類型(enumerated type)空類型(void)派生類型(derived type) 基本類型分為四種: char
13、有符號整數類型(signed integer type)標準有符號整數類型(standard signed integer type)擴展有符號整數類型(extended signed integer type)無符號整數類型(unsigned integer type)標準無符號整數類型(standard unsigned integer type)擴展無符號整數類型(extended unsigned integer type)浮點類型(floating type)實數浮點類型(real floating type)復數類型(complex type) 在聲明(declaration)中必
14、須使用類型說明符(type specifier) 本節中用斜體字表示類型說明符,例如:charsigned charint 或 signed 或 signed intunsigned charunsigned 或 unsigned intfloatdouble 字符類型(character type)包括:charsigned charunsigned char 整數類型(integer type)包括:char枚舉類型有符號整數類型無符號整數類型 實數類型(real type)包括:整數類型實數浮點類型 算數類型(arithmetic type)包括:整數類型浮點類型2.3 變量與常用類型說
15、明符一、變量 對象(object)是執行環境中的數據存儲區,其內容表示值 變量(variable)是有名字的對象 變量聲明(variable declaration)的簡單形式:類型說明符 變量名1 , 變量名2, , 變量名n; 其中,變量名是一個標識符int area;int length, width; 變量必須先聲明后使用 C語言允許在程序的任何位置聲明變量,只要滿足先聲明后使用的原則即可 VC要求函數內的變量聲明必須緊接在開始大括號之后【例2.3】 變量聲明的位置#include int main(void) int length, width; length = 10; width
16、 = 8; int area; / 符合C語言的語法,但在VC中是錯誤的 area = length * width; printf(area = %dn, area); return 0;#include int main(void) int length, width, area; length = 10; width = 8; area = length * width; printf(area = %dn, area); return 0;二、int 類型 int 屬于整數類型 在不同的C編譯系統中,int 類型的數據所占用的內存大小不同,能表示的數據范圍也不同 在VC中,int 類型
17、的數據占 4 個字節,能表示的數據范圍是-231231-1即:-21474836482147483647【例2.4】 int 類型數據的溢出#include int main(void) int x, y; x = 2147483646 + 1; y = 2147483646 + 2;/ 溢出 printf(x = %dn, x); printf(y = %dn, y); return 0;三、char 類型 char 屬于整數類型 char 類型的數據占1個字節 在VC中,char類型的數據默認能表示的數據范圍是 -128127【例2.5】 使用庫函數 putchar 輸出字符#includ
18、e int main(void) char ch; ch = c; putchar(ch); putchar(o); putchar(155); putchar(n); return 0;【例2.6】 使用庫函數 getchar 輸入小寫字母,輸出其對應的大寫字母#include int main(void) char ch; ch = getchar(); putchar(ch - 32); putchar(n); return 0; 【例2.7】 輸入兩個數字字符,求其和并輸出char ch1, ch2;int n1, n2, sum;ch1 = getchar();ch2 = getch
19、ar();n1 = ch1 - 0;n2 = ch2 - 0;sum = n1 + n2;printf(sum = %dn, sum);四、float 類型和 double 類型 float 和 double 都屬于實數浮點類型 雙精度浮點類型 double 比單精度浮點類型 float 的精度更高,表示數據的范圍更大 在不同的C編譯系統中,float 類型的數據和 double 類型的數據所占用的內存大小不同,能表示的數據范圍也不同在VC中, float 和 double 的區別float類型數據double類型數據數據長度4字節8字節最小正值1382.225073
20、858507201410-308最大正值3.40282346610381.797693134862315810308精度6位15位 浮點常量默認是 double 類型,在浮點常量后加后綴 f 或 F 則是 float 類型7.45/ double 類型7.45f/ float 類型7.45F/ float 類型 在VC中,將double類型的浮點常量存放到float類型的變量中,會產生警告:truncation from const double to floatfloat price;price = 7.45;/ 產生警告double price;price = 7.45;float pri
21、ce;price = 7.45f;2.4 運算符與表達式一、表達式 表達式(expression)是由運算符(operator)和運算對象(operand)構成的序列。表達式具有以下一個或多個功能:描述一個值的計算指定一個對象或一個函數產生副作用(side effect) 訪問易變對象(volatile object),修改對象或文件(file),或者調用包含這些操作的函數(function)都是副作用 基本表達式(primary expression)包括:標識符常量串字面量用小括號括起來的表達式generic選擇 根據運算符的運算對象的數量,可將運算符分為:單目運算符(unary oper
22、ator)雙目運算符(binary operator)三目運算符(ternary operator)二、乘法類運算符 乘法類運算符(multiplicative operators)有三個,分別是:乘法運算符 *除法運算符 /模運算符(又稱求余數運算符) % 乘法類運算符都是雙目運算符5.0 / 2.0的值是 2.55.0 / 2的值是 2.55 / 2.0的值是 2.55 / 2的值是 28 / -3的值是 -2表達式 5.0 / 2.0的值是 2.5表達式 5.0 / 2的值是 2.5表達式 5 / 2.0的值是 2.5表達式 5 / 2的值是 2表達式 8 / -3的值是 -2表達式 5
23、.0 % 2.0錯誤表達式 5.0 % 2錯誤表達式 5 % 2.0錯誤表達式 5 % 2的值是 1表達式 8 % -3的值是 2三、加法類運算符 加法類運算符(addtive operators)有兩個,分別是:加法運算符 +減法運算符 - 加法類運算符都是雙目運算符四、運算符的優先級與結合性 優先級(precedence)高的運算符先綁定(binding)運算對象6 + 2 * 5 結合性(associativity)分兩種:左結合性(left-associativity)右結合性(right-associativity) 優先級相同的運算符按結合性綁定運算對象,左結合性指左邊的運算符先綁
24、定運算對象,依次向右進行;右結合性指右邊的運算符先綁定運算對象,依次向左進行6 - 3 + 53 + 7 - 2 * 53 + 7 - (2 * 5)(3 + 7) - (2 * 5)五、sizeof 運算符 sizeof 運算符是單目運算符,表達式的值是運算對象所占內存大小(按字節計算),其運算對象是表達式或用小括號括起來的類型名printf(sizeof(char) = %dn, sizeof(char);printf(sizeof(int) = %dn, sizeof(int);printf(sizeof(float) = %dn, sizeof(float);printf(sizeof
25、(double) = %dn, sizeof(double);printf(sizeof 5 = %dn, sizeof 5); printf(sizeof A = %dn, sizeof A);printf(sizeof 5.0f = %dn, sizeof 5.0f);printf(sizeof 5.0 = %dn, sizeof 5.0);printf(sizeof hello = %dn, sizeof hello);int n;printf(sizeof n = %dn, sizeof n);printf(sizeof 2 + 3 = %dn, sizeof 2 + 3);print
26、f(sizeof(2 + 3) = %dn, sizeof(2 + 3);六、一元加運算符與一元減運算符一元加運算符(unary plus operator) + 是單目運算符,表達式的值是運算對象的值一元減運算符(unary minus operator) - 是單目運算符,表達式的值是運算對象的相反數 如果運算對象是整數類型,要先對運算對象的值進行整數提升(integer promotions),表達式的類型是提升以后的類型 對于常用類型char、int、float和double,只有char類型的值需要整數提升,即將char類型的值轉換為int類型的值char ch; printf(si
27、zeof +ch = %dn, sizeof +ch);printf(sizeof ch = %dn, sizeof ch);printf(sizeof -ch = %dn, sizeof -ch);printf(sizeof ch = %dn, sizeof ch);七、常用算術轉換 乘法類運算符的運算對象要執行常用算術轉換(usual arithmetic conversions) 如果加法類運算符的兩個運算對象都是算術類型,也要執行常用算術轉換 對于常用類型char、int、float和double,常用算術轉換的含義如下:如果其中一個運算對象是double類型,另一個運算對象的值被轉換
28、為double類型的值如果以上條件不滿足,并且其中一個運算對象是float類型,另一個運算對象的值被轉換為float類型的值如果以上兩個條件不滿足,對兩個運算對象進行整數提升,即char類型運算對象的值被轉換為int類型的值char ch1, ch2;int i;float f1, f2;double d;表達式 ch1 + d表達式 f1 + f2表達式 i * ch1表達式 ch1 - ch2八、賦值運算符 賦值運算符(assignment operators)是雙目運算符,分為兩種:簡單賦值運算符(simple assignment operator)復合賦值運算符(compound a
29、ssignment operators)1、簡單賦值運算符 簡單賦值運算符(在不至混淆的情況下又稱賦值運算符)是 =,賦值表達式(assignment expression)有兩個功能:求賦值表達式的值產生副作用 賦值表達式的值是賦值以后左運算對象的值 賦值表達式的類型是左運算對象的類型 副作用是將右運算對象的值轉換為賦值表達式的類型的值,并將轉換后的值存儲到左運算對象中 注意:右運算對象的類型并沒有改變double d;表達式 d = 9【例2.10】 求賦值表達式的值#include int main(void) int a, b; printf(%dn, a = b = 2 + 3);
30、printf(a = %dn, a); printf(b = %dn, b); return 0; 賦值運算符的左運算對象必須是可修改的左值(modifiable lvalue) 基本類型的變量屬于可修改的左值 左值(lvalue)是一個表達式(具有除void以外的對象類型)。該表達式潛在地標明一個對象,即左值是可以標明一塊內存的表達式 右值(rvalue)是表達式的值表達式 5 = 2 + 3 是錯誤的 在變量聲明時給變量賦值,稱為初始化(initialization)int i = 0;double d1 = 3.6, d2 = 7.2;int a = b = c = 100;/ 錯誤in
31、t a = 100, b = 100, c = 100;/ 正確 賦值運算符的兩個運算對象的類型不同時發生的類型轉換,可能會丟失數據int i;表達式 i = 3.6char ch;表達式 ch = a對于常用類型char、int、float和double,按下表進行的類型轉換通常是可接受的左運算對象的類型右運算對象的類型doublefloat、int 或 charfloatint 或 charintchar 當左運算對象的類型為 int,右運算對象的類型為 float 或 double 時,截斷取整#include int main(void) int i; printf(%dn, i =
32、3.6); printf(i = %dn, i); return 0;2、復合賦值運算符 簡復合賦值運算符有10個,本節介紹其中的5個,分別是:*=/=%=+=-= 除了左值E1僅被計算一次,賦值表達式 E1 op= E2 等價于E1 = E1 op (E2), 其中,op是*、/、%、+ 或 - 中的任何一個r *= 2 + 3等價于r = r * (2 + 3)#include int main(void) int r; r = 3; printf(%dn, r *= 2 + 3); printf(r = %dn, r); return 0; 執行序列中某些特定的點被稱為序點(sequen
33、ce point) 表達式A和表達式B之間有序點,意味著與表達式A相關的每一個值計算和副作用完成后,與表達式B相關的每一個值計算和副作用才開始 如果與表達式相關的副作用有多個,C語言并沒有規定這多個副作用發生的先后次序,僅規定這多個副作用在序點之前完成int a = 12;a += a -= a * a;/ 不推薦使用九、后綴增1運算符與后綴減1運算符 后綴增1運算符(postfix increment operator)是 +,屬于單目運算符,其運算對象必須是可修改的左值表達式 5+ 是錯誤的 由后綴增1運算符和運算對象構成的表達式有兩個功能:求表達式的值產生副作用 求表達式的值在副作用之前
34、完成 表達式的值是運算對象的值;表達式的類型是運算對象的類型 副作用是使運算對象的值增1 后綴減1運算符(postfix decrement operator)是 -,除了副作用是使運算對象的值減1以外,后綴減1運算符與后綴增1運算符是類似的int a = 20, b = 10;printf(%dn, a+);printf(a = %dn, a);printf(%dn, b-);printf(b = %dn, b);十、前綴增1運算符與前綴減1運算符 前綴增1運算符(prefix increment operator)是 +,屬于單目運算符,其運算對象必須是可修改的左值表達式 +5 是錯誤的
35、由前綴增1運算符和運算對象構成的表達式有兩個功能:求表達式的值產生副作用 表達式的值是運算對象的值加1;表達式的類型是運算對象的類型 副作用是使運算對象的值增1 表達式 +E 等價于 E += 1 前綴減1運算符(prefix decrement operator)是 -,除了“表達式的值是運算對象的值減1”和“副作用是使運算對象的值減1”以外,前綴減1運算符與前綴增1運算符是類似的int a = 20, b = 10;printf(%dn, +a);printf(a = %dn, a);printf(%dn, -b);printf(b = %dn, b);int a = 3, b;b = +
36、a + 2;十一、類型轉換運算符 類型轉換運算符(cast operator)是 (type-name),屬于單目運算符,表達式的值是將運算對象的值轉換為 type-name 類型得到的值,表達式的類型是 type-name 注意:運算對象的類型并沒有改變double d = 8.7;printf(%dn, (int)d % 3);printf(sizeof d = %dn, sizeof d);printf(d = %fn, d);十二、逗號運算符 逗號運算符(comma operator) “,”是雙目運算符,表達式的值是右運算對象的值,表達式的類型是右運算對象的類型表達式 5 , 3.6
37、 逗號運算符的兩個運算對象之間有序點int a = 3, b = 5, t;t = a;a = b;b = t;等價于int a = 3, b = 5, t;t = a , a = b , b = t; 逗號既是分隔符也是運算符printf(%d %d, 10, (20, 30);第三章 順 序 結 構程序設計基礎(C語言版)第3章:順序結構3.1 結構化程序設計3.1.1 算法的基本概念程序對數據的處理流程: 程序的主要功能就是對數據的處理,其整個流程主要包括數據的輸入、數據的處理、數據的輸出。數據處理數據輸入數據輸出 程序 = 數據結構 + 算法。 算法:簡而言之,就是解決問題的方法與步驟
38、。 程序設計語言:是程序開發工具,即是將算法轉化為程序的開發工具。 程序:算法的具體實現。 學習C語言,不僅要熟練掌握其語言本身的特點、語法規則等意外,更重要的就是掌握分析問題、解決問題的方法,就是鍛煉分析、分解,最終歸納整理出算法的能力。 3.1.1 算法的基本概念3.1.2 流程圖 算法的結構化描述(1) 順序結構ABCA條件ABTF(2) 分支結構條件TF(3) 循環結構ATF條件A條件TF3.2 語句 語言程序的執行部分是由語句組成的。程序的功能也是由執行語句實現的。C語言中的語句可以分為以下5類: 3.2.1 表達式語句 由表達式加上分號“;”組成。其一般形式為:表達式; a = 1
39、0 賦值表達式a = 10; 賦值語句k+ 表達式k+; 表達式語句 說明: (1) “”后不加分號 (2) 語法上和單一語句相同 (3) 復合語句可嵌套 (4) 復合語句內定義的變量只能在復合語句內使用。 3.2.2 復合語句 用 括起來的一組語句。 一般形式為: 數據說明部分; 執行語句部分; int a = 2, b = 3, c; c = a + b; printf (c = %dn, c); #include void main ( ) int x = 10, y = 20, z; z = x + y; int z; z = x * y; printf (z = %dn, z); /
40、輸出復合語句中z的值 printf (z = %dn, z); /輸出復合語句外z的值輸出結果:z = 200z = 303.3 常用數據類型輸出和輸入3.3.1 數據輸入/輸出的概念庫函數printf 用于向顯示器輸出數據;庫函數scanf 用于從鍵盤輸入數據。使用這兩個庫函數,必須包含頭文件stdio.h。3.3.2 常用類型數據和字符串的輸出 一般格式printf (格式控制字符串,表達式1,表達式2,表達式n); 功能 按照“格式控制字符串”的要求,將表達式1,表達式2,表達式n的值顯示在計算機屏幕上。 說明 格式控制字符串用于指定輸出格式。它包含兩類字符: 常規字符:包括可顯示字符和
41、用轉義字符表示的字符。 格式控制符:以%開頭的一個或多個字符,以說明輸出數據的類型、形式、長度、小數位數等。其格式為:%修飾符格式轉換字符例: long int x = 0 x8AB6; printf (“The Value of x is %ldn”, x); printf使用時的注意事項(1) 格式控制字符串可以不包含任何格式控制符。(2) 當格式控制字符串中既含有常規字符,又包含有格式控制符時,則表達式的個數應與格式控制符的個數一致。此時,常規字符原樣輸出,而格式控制符的位置上輸出對應的表達式的值,其對應的順序是:從左到右的格式控制符對應從左到右的表達式。(3) 如果格式控制字符串中格式
42、控制符的個數多于表達式的個數,則余下的格式控制符的值將是不確定的。(4) 不同類型的表達式要使用不同的格式轉換符,同一表達式如果按照不同的格式轉換符來輸出,其結果可能是不一樣的。 printf (“how are you?n”); /只有一個字符串參數, 輸出為:how are you?printf (“how old are you?n”, 20); /帶有兩個參數,20沒有意義, 輸出為:how old are you?已 知: int a = 2;函數調用: printf(a * a = %d, a + 5 = %dn, a * a, a + 5);實際輸出: a * a = 4, a
43、+ 5 = 7 printf (5 + 3 = %d, 5 - 3 = %d, 5 * 3 = %d, 5 + 3, 5 - 3); 輸出結果將是:5 + 3 = 8,5 3 = 2,5 * 3 = -28710輸出隨機char ch = A;printf (ch = %c, ch); /輸出結果:ch = A (以字符形式輸出)printf (ch = %d, ch); /輸出結果:ch = 65 (以A字符的ASCII碼形式輸出) printf函數中的格式轉換字符及其含義 格式轉換符含 義對應的表達式數據類型%d 或 %i以十進制形式輸出一個整型數據。例如:int a = 20;print
44、f (%d, a); /輸出20有符號整型%x,%X以十六進制形式輸出一個無符號整型數據。例如:int a = 164;printf (%x, a); /輸出a4printf (%X, a); /輸出A4無符號整型%o ( 字母o )以八進制形式輸出一個無符號整型數據。例如:int a = 164;printf (%o, a); /輸出244無符號整型%u以十進制形式輸出一個無符號整型數據。例如:int a = -1;printf (%u, a); /BC下輸出65535,VC下4294967295無符號整型%c輸出一個字符型數據。例如:char ch = A;printf (%c, ch);
45、 /輸出A字符型 printf函數中的格式轉換字符及其含義 格式轉換符含 義對應的表達式數據類型%s輸出一個字符串。例如:printf (my name is %s, wangjinghua); /輸出my name is wangjinghua字符串%f以十進制小數形式輸出一個浮點型數據。例如:float f = -12.3;printf (%f, f); /輸出-12.300000浮點型%e,%E以指數形式輸出一個浮點型數據。例如:float f = 1234.8998;printf (%e, f); /輸出1.234900e+003printf (%E, f); /輸出1.234900E
46、+003浮點型%g,%G按照%f或%e中輸出寬度比較短的一種格式輸出。浮點型%p以主機的格式顯示指針,即變量的地址。例如:int a = 2;printf (“%p”, &a); /BC下輸出FFD8, VC下 0012FF7C指針類型3.3.3 常用類型數據的輸入 一般格式scanf (“格式控制字符串”,變量1的地址,變量2的地址,變量n的地址); 功能 第一個參數格式控制字符串的控制下,接受用戶的鍵盤輸入,并將輸入的數據依此存放在變量1、變量2、變量n中 。 int a;scanf (%d, &a); 取地址運算符(與按位“與”同符號),只能作用于變量! 格式控制符與后續參數中的變量地址
47、的對應關系 已 知: int a , b;函數調用: scanf (%d%d, &a , &b);假設輸入: 1020 變量的值: a的值是10,b的值是20【例】數據的格式化輸入 輸入一學生的學號(8位數字)、生日(年-月-日)、性別(M:男,F:女)及三門功課(語文、數學、英語)的成績,現要求計算該學生的總分和平均分,并將該學生的全部信息輸出(包括總分、平均分)。#include void main ( ) unsigned long no; /學號 unsigned int year, month, day; /生日(年、月、日) unsigned char sex; /性別 float
48、 chinese, math, english; /語文、數學、英語成績 float total, average; /總分、平均分 printf (input the students NO: ); scanf (%8ld, &no); printf (input the students Birthday(yyyy-mm-dd): ); scanf (%4d-%2d-%2d, &year, &month, &day); fflush (stdin); /清除鍵盤緩沖區 printf (input the students Sex(M/F): ); scanf (%c, &sex); pri
49、ntf (input the students Scores(chinese, math, english): ); scanf (%f,%f,%f, &chinese, &math, &english); total = chinese + math + english; /計算總分 average = total / 3; /計算平均分 printf (n=NO=birthday=sex=chinese=math= english=total=averagen); printf (%08ld %4d-%02d-%02d %c %-5.1f %-5.1f %-5.1f %-5.1f %-5.
50、1fn, no, year, month, day, sex, chinese, math, english, total, average);假設輸入 :input the students NO:20040101input the students Birthday(yyyy-mm-dd):1987-9-8input the students Sex(M/F):Minput the students Scores(chinese, math, english):90,80,90輸出結果 :=NO=birthday=sex=chinese=math=english=total=average
51、20040101 1987-09-08 M 90.0 80.0 90.0 260.0 86.7 一般形式: :表示可選項,可缺省。 :表示輸出的數據左對齊,缺省時是右對齊。 :輸出正數時,在數的前面加上號。 數字0:右對齊時,如果實際寬度小于width,則在左邊的空位補0。 width:無符號整數,表示輸出整數的最小域寬(即占屏幕的多少格)。若實際寬度超過了width,則按照實際寬度輸出。 .precision:無符號整數,表示至少要輸出precision位。若整數的位數大于precision,則按照實際位數輸出,否則在左邊的空位上補0。 字母l:如果在d的前面有字母l(long),表示要輸出
52、長整型數據。 字母h:如果在d的前面有字母h(short),表示要輸出短整型數據。 說明:%- + 0 width .precision l h d輔助格式控制字符(修飾符) 3.4 庫函數printf詳解【例】整數的格式化輸出 #include void main ( ) int a = 123; long L = 65537; printf ( 12345678901234567890n); printf (a=%d-(a=%d)n, a); printf (a=%6d-(a=%6d)n, a); printf (a=%+6d-(a=%+6d)n, a); printf (a=%-6d-(
53、a=%-6d)n, a); printf (a=%-06d-(a=%-06d)n, a); printf (a=%+06d-(a=%+06d)n, a); printf (a=%+6.6d-(a=%+6.6d)n, a); printf (a=%6.6d-(a=%6.6d)n, a); printf (a=%-6.5d-(a=%-6.5d)n, a); printf (a=%6.4d-(a=%6.4d)n, a); printf (L=%ld-(L=%ld)n, L); printf (L=%hd-(L=%hd)n, L); 12345678901234567890a=123-(a=%d)a=
54、 123-(a=%6d)a= +123-(a=%+6d)a=123 -(a=%-6d)a=123 -(a=%-06d)a=+00123-(a=%+06d)a=+000123-(a=%+6.6d)a=000123-(a=%6.6d)a=00123 -(a=%-6.5d)a= 0123-(a=%6.4d)L=65537-(L=%ld)L=1-(L=%hd)運行結果:L是一長整型數65537,其值為十六進制0X00010001,所以要將其轉換成短整型,即取低16位0 x0001,將其輸出,故輸出為1。 Why?實數的輸出 一般形式: :表示可選項,可缺省。 | :表示互斥關系。 #:必須輸出小數點。
55、 .precision:規定輸出實數時,小數部分的位數。 l:輸出double型數據(缺省時也是輸出double型數據)。 L:輸出long double型數據。 其它字段的含義與前面介紹的相同。 說明:%- + # 0 width .precision l | L f | e | E | g | G輔助格式控制字符(修飾符) 【例】實數的格式化輸出 #include void main ( ) double f = 2.5e5; printf ( 12345678901234567890n); printf (f=%15f-(f=%15f)n, f); printf (f=%015f-(f=
56、%015f)n, f); printf (f=%-15.0f-(f=%-15.0f)n, f); printf (f=%#15.0f-(f=%#15.0f)n, f); printf (f=%+15.4f-(f=%+15.4f)n, f); printf (f=%15.4E-(f=%15.4E)n, f); 12345678901234567890f= 250000.000000-(f=%15f)f=00250000.000000-(f=%015f)f=250000 -(f=%-15.0f)f= 250000.-(f=%#15.0f)f= +250000.0000-(f=%+15.4f)f=
57、2.5000E+005-(f=%#15.4E)運行結果:字符和字符串的輸出 一般形式: :表示可選項,可缺省。 .precision:表示只輸出字符串的前precision個字符。 其它字段的含義與前面介紹的相同。 說明: 輸出字符: %- 0 width c 輔助格式控制字符(修飾符) 輸出字符串: %- 0 width .precision s 輔助格式控制字符(修飾符) 【例】字符及字符串的格式化輸出 #include void main ( ) char ch = A; printf ( 12345678901234567890n); printf (ch=%c-(ch=%c)n, c
58、h); printf (ch=%4c-(ch=%4c)n, ch); printf (ch=%-4c-(ch=%-4c)n, ch); printf (ch=%04c-(ch=%04c)n, ch); printf (st=%s-(st=%s)n, “WUSE); printf (st=%6s-(st=%6s)n, “WUSE); printf (st=%06.3s-(st=%06.3s)n, “WUSE); 12345678901234567890ch=A-(ch=%c)ch= A-(ch=%4c)ch=A -(ch=%-4c)ch=000A-(ch=%04c)st=WUSE-(st=%s)
59、st= WUSE-(st=%6s)st=000WUS-(st=%06.3s)運行結果:輔助格式控制符(修飾符)小結 修飾符功 能例 子width輸出數據域寬,數據長度width,補空格;否則按實際輸出%4d:表示輸出至少占4格.precision對于整數:表示至少要輸出precision位,當數據長度小于precision,左邊補0%6.4d:表示至少要輸出4位數對于實數:指定小數點后位數(四舍五入)%6.2f:表示輸出2位小數對于字符串:表示只輸出字符串的前precision個字符%.3s:表示輸出字符串前3個字符輸出數據在域內左對齊(缺省右對齊)%-16d:表示輸出數據左對齊+輸出有符號正
60、數時,在其前面顯示正號(+)%+d:表示輸出整數的正負號0輸出數值時,指定左邊不使用的空格自動填0%08X:表示輸出十六進制無符號整數,不足8位時左補0輔助格式控制符(修飾符)小結 修飾符功 能例 子#對于無符號數:在八進制和十六進制數前顯示前導0,0 x或0X%#X:表示輸出的十六進制前顯示前導0X對于實數:必須輸出小數點%#10.0f:表示輸出的浮點數必須輸出小數點h在d、o、x、u前,指定輸出為短整型數%hd:表示輸出短整型數l在d、o、x、u前,指定輸出為long int型%ld:表示輸出長整型數在e、f、g前,指定輸出精度為double型(缺省也為double)%lf:表示輸出為do
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 條石銷售合同二零二五年
- 與人合作臨時合同樣本
- 個人借款銀行合同范例
- 公司與農戶土雞合同樣本
- 某污水處理廠附屬管網工程監理實施細則
- 教學總監崗位職責
- 2025年汽車覆蓋件模具項目發展計劃
- 紅旗品牌策劃方案
- 會計聘用合同樣本百度文庫
- 店鋪門面轉讓合同
- 雷鋒叔叔你在哪里教學反思
- 軟件詳細設計說明書(例)
- 鋼拱橋專項吊裝方案終稿
- 24式太極拳教案(1~4課)
- 哈薩克斯坦鐵路車站代碼
- 產業經濟學的課后復習答案
- 中國綠色經濟發展之路(PPT-37張)課件
- 客房控制系統——RCU系統培訓PPT通用通用課件
- 履帶式液壓挖掘機挖掘機構設計
- 川崎病診治指南最新ppt課件
- (會議紀要(2011)第29期)河南煤業化工集團有限責任公司會議紀要
評論
0/150
提交評論