




已閱讀5頁,還剩624頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機基礎(chǔ)教學系列課程 C語言 課程性質(zhì) 大學生公共基礎(chǔ)課程 必修課 學時 講課34課時 實驗64 課內(nèi)32 課外32 學分 2學分總評成績 平時成績40 期末成績60 平時成績 成績1 作業(yè) 考勤10 成績2 單元測驗15 成績3 實驗報告15 期末成績 期末理論機考60 C語言程序設(shè)計 第一章C語言的發(fā)展 特點與程序結(jié)構(gòu)第二章基本數(shù)據(jù)類型 運算符和表達式第三章基本語句與順序結(jié)構(gòu)第四章選擇結(jié)構(gòu)第五章循環(huán)結(jié)構(gòu)第六章數(shù)組第七章函數(shù)第八章指針第十章結(jié)構(gòu)體第十二章文件 C語言程序設(shè)計 推薦參考書 譚浩強主編 程序設(shè)計 第二版 北京 清華大學出版社 第一章C語言的發(fā)展 特點與程序開發(fā)基本知識 1 1C語言的發(fā)展與特點1 2程序設(shè)計的基本方法1 3算法的概念及其表示1 4C語言的基本結(jié)構(gòu)1 5應(yīng)用程序的開發(fā)步驟和運行過程 下一章 目錄 習題 C語言是一門優(yōu)秀的程序設(shè)計語言C語言是在1973年由美國貝爾實驗室開發(fā)的 1983年 ANSI為C語言制定了新的標準 稱為ANSIC 并于1989年最終完成 目前使用較多的版本有ANSIC BorlandC TurboC MicrosoftC C VisualC 等 C語言的發(fā)展 WUCC C語言是結(jié)構(gòu)化程序設(shè)計語言功能強大 具有豐富的數(shù)據(jù)類型及運算符 簡潔緊湊 使用方便靈活 C語言具有自我擴充能力C語言具有匯編語言的功能可移植性好 WUCC C語言的特點 程序的概念程序是計算機解決問題所需的一系列指令的集合 著名計算機科學家NikiklausWirth提出了 算法 數(shù)據(jù)結(jié)構(gòu) 程序 的公式程序就是在數(shù)據(jù)的某些特定的表示方式和結(jié)構(gòu)的基礎(chǔ)上 對抽象算法的具體描述 1 2程序設(shè)計的基本方法 程序 數(shù)據(jù)結(jié)構(gòu) 算法 程序設(shè)計方法 語言工具數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的類型和數(shù)據(jù)的組織形式 算法是為解決一個問題而采用的方法和有限的步驟 程序設(shè)計方法確定語言和編程環(huán)境 WUCC 面向過程的程序設(shè)計 所謂面向過程的程序設(shè)計 是指利用面向過程的語言工具 如Pascal Fortran和C語言等 進行程序開發(fā)的各項活動 優(yōu)點 編程簡單 結(jié)構(gòu)性強 可讀性好 遵循這種結(jié)構(gòu)的程序只有一個入口和一個出口 缺點 存在數(shù)據(jù)與程序模塊的分離和程序的可重用性差等問題 WUCC 面向?qū)ο蟮某绦蛟O(shè)計 ProgramDesigninCLanguage 面向?qū)ο蟮某绦蛟O(shè)計將一些新的理念和結(jié)構(gòu)化程序設(shè)計中好的思想相融合 提供了一種全新的程序設(shè)計方法 1 3算法及其表示 算法的特性有窮性一個算法的操作步驟應(yīng)當是有限的 確定性算法中的每一個步驟應(yīng)當有確定的意義 不能有二義性 有效性算法中的每一個步驟應(yīng)當正確 可行 并且能有效地執(zhí)行 有零個或多個輸入執(zhí)行算法時需要從外界獲取的信息 有一個或多個輸出執(zhí)行算法后應(yīng)當?shù)玫秸_的結(jié)果 算法舉例 例1 1 輸入三個數(shù) 然后輸出其中最大的數(shù) 1 輸入變量x y z的值 2 比較x和y 如果x y 則x送max 否則y送max 3 比較max與z 如果z max 則將z送max 4 輸出max max即為最大數(shù) 算法 對同一個問題 算法是不唯一的 例如 求和1 2 3 100 1 1 2 3 4 100 2 1 100 50一個好的算法應(yīng)該是 正確 易讀 效率高 算法的表示方法 常用的算法描述方法有 自然語言描述 偽代碼 流程圖 N S圖 PAD圖等 1 自然語言就是用人們?nèi)粘J褂玫恼Z言來描述或表示算法的方法 英語和程序設(shè)計語言混合使用稱為偽代碼 Begin 算法開始 inputx y zifx ythenmax xelsemax yifz maxthenmax zprintmaxend 算法結(jié)束 2 用偽代碼表示算法 用一些圖框和方向線表示算法的圖形表示法 特點 直觀形象 易于理解 便于檢查和交流 常用流程圖符號及含義如下 3 用流程圖表示算法 流程圖 例1 1 對任意給定的三個整數(shù)x y z 求出其最大值 例 對任意給定的三個整數(shù)x y z 求出其最大值 4 用N S流程圖表示算法 結(jié)構(gòu)化程序設(shè)計 C語言是結(jié)構(gòu)化程序設(shè)計語言 有三種基本結(jié)構(gòu) 順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)實踐證明 任何復(fù)雜的算法都可以用這三種基本結(jié)構(gòu)來描述 程序設(shè)計的目標在正確的前提下 其重要性排列次序依次為 可讀 可維護 可移植和高效 順序結(jié)構(gòu) 矩形框 用于表示順序結(jié)構(gòu) 執(zhí)行時按語句的先后順序執(zhí)行 先執(zhí)行語句A 再執(zhí)行語句B 順序結(jié)構(gòu)的流程圖 順序結(jié)構(gòu)的N S圖 選擇結(jié)構(gòu) 分支結(jié)構(gòu) 根據(jù)條件的真或假選擇執(zhí)行不同的操作內(nèi)容 當條件成立執(zhí)行語句A 否則執(zhí)行語句B 選擇結(jié)構(gòu)的流程圖 選擇結(jié)構(gòu)的N S圖 循環(huán)結(jié)構(gòu) 1 當型 while型循環(huán) 當條件成立 執(zhí)行循環(huán)體 否則跳出循環(huán)體 L形框 用于表示循環(huán)結(jié)構(gòu) 2 直到型循環(huán) do while型循環(huán) 首先執(zhí)行循環(huán)體 若條件不成立繼續(xù)執(zhí)行循環(huán)體 直到條件成立為止 例1 2 在屏幕上顯示一行文字 WelcometoC includevoidmain 定義主函數(shù) printf WelcometoC n 程序運行結(jié)果 WelcometoC 函數(shù) Function C程序包含一個或多個函數(shù) 其中必須有一個main 圓括號指示一個函數(shù) 包含函數(shù)體 表示main函數(shù)結(jié)束 printf Welcome printf toC n printf Welcome nto nC n 程序運行結(jié)果 WelcometoC 程序運行結(jié)果 WelcometoC 注釋 文本 或 不被執(zhí)行以提高程序的可讀性 語句 Statement 必須以 結(jié)尾格式輸出函數(shù)printf 調(diào)用標準函數(shù) 顯示引號中的內(nèi)容 includevoidmain inta b sum 聲明部分 定義變量類型a 123 b 456 執(zhí)行部分 賦值語句sum a b 執(zhí)行部分 賦值語句printf sum d n sum 執(zhí)行部分 輸出語句 程序運行結(jié)果 sum 579 賦初值 計算 輸出 定義變量 例1 3 求兩個整數(shù)的和 函數(shù)體包括變量說明部分語句執(zhí)行部分 文件包含預(yù)處理命令 將標準輸入輸出頭文件包含到源程序中 includevoidmain inta b c 定義變量類型printf inputtwonumbers n 提示scanf d d intmax x y intx y intz if x y z x elsez y return z 例1 4 求兩個數(shù)中的較大值 程序由兩個函數(shù)組成 main函數(shù)和max函數(shù) 運行程序屏幕顯示提示信息 鍵盤輸入a b的值 屏幕顯示c的值 inputtwonumbers 123 456 max 456 一個C程序由一個或多個函數(shù)組成 其中必須有一個主函數(shù)main 程序執(zhí)行時總是從主函數(shù)開始 main 可以置于程序的任何位置 程序中需有預(yù)處理命令 如 include 預(yù)處理命令通常放在程序的最前面 分號是C語句結(jié)束的標志 每個語句和數(shù)據(jù)定義后必須有一個分號 預(yù)處理命令 函數(shù)頭和花括號 之后不能加分號 1 4 2C語言程序基本結(jié)構(gòu) C程序書寫靈活 一行可以寫幾個語句 一個語句可以寫在多個程序行上 includevoidmain inta b sum a 123 b 456 sum a b printf sum d n sum C語言本身沒有輸入輸出語句 輸入輸出的操作是由庫函數(shù)scanf 和printf 等函數(shù)完成的 1 4 2C語言程序基本結(jié)構(gòu) C程序嚴格區(qū)分大小寫 一般變量 語句等用小寫字母書寫 符號常量等用大寫字母書寫 標識符 保留字之間必須至少加一個空格以示分隔 函數(shù) C語言的函數(shù)有兩種 標準庫函數(shù)和用戶定義的函數(shù) 用戶自定義函數(shù) 可有可無 數(shù)目不限 如例1 4中的intmax intx inty C語言提供的庫函數(shù) 如輸出函數(shù)printf 和輸入函數(shù)scanf 函數(shù)定義 函數(shù)頭 函數(shù)體函數(shù)頭 說明函數(shù)的類型 名字 參數(shù)及參數(shù)的類型 intmax intx inty includevoidmain inta b sum a 123 b 456 sum a b printf sum d n sum 函數(shù)體 函數(shù)頭 函數(shù)體 由 括起 包括變量聲明和執(zhí)行部分 函數(shù)定義 1 4 3C語言的字符集 關(guān)鍵字和標識符 字符集 C語言允許使用字符的集合字符集的組成 26個小寫字母abcdefghi z26個大寫字母ABCDEFG Z10個數(shù)字0 9其他符號 空格 SPACE 制表符 Tab C語言的關(guān)鍵字 關(guān)鍵字 C語言中預(yù)定的具有特定含義的詞 也稱保留字 共有32個 分四類 類型說明 int long float 語句定義 if else while for 存儲類 auto static 長度運算符 sizeof 標識符 標識符 用來標識變量 符號常量 數(shù)組 函數(shù)的名字 組成 只能由英文字母 數(shù)字和下劃線組成 第一個字符不能是數(shù)字 只能是字母或下劃線 VC6 0中有效長度為1 255個字符 例如 x m1 average k123 1 5AN WA 11 alot 11 注意 標識符嚴格區(qū)分大小寫例如 ABC abc是不同的標識符不能和C語言的關(guān)鍵字 用戶定義的函數(shù)名以及系統(tǒng)庫函數(shù)同名 C的 h 頭文件中經(jīng)常使用以下劃線開頭的內(nèi)部變量名 因此用戶最好避免使用這類標識符 取名應(yīng)盡可能見名知意 如 alfa aver pi bata等 例 以下各標識符組中 合法的用戶標識符分別為 1 A PAdB scanfC voidD 4aP Da10maxtemp 2 A b bB CCPC hiyD iswabcfloatINT 3 A 0123B del wordC listD keep ssipedsigned jerwind 分隔符 分隔符分隔符主要有逗號和空格兩種 逗號用于分隔變量或參數(shù) 空格用于分隔單詞 在關(guān)鍵字和標識符之間必須用空格分隔 例如 int a b c max x y z 1 5應(yīng)用程序的開發(fā)過程 1 5應(yīng)用程序的開發(fā)過程 編輯器 file cfile cpp 編譯器 file obj 連接器 file exe Libraries CPU 裝載程序 建立 修改 保存源文件 生成目標文件 生成可執(zhí)行文件 運行可執(zhí)行文件 1 5應(yīng)用程序的開發(fā)過程 在VisualC 6 0環(huán)境下 開發(fā)和運行 程序的步驟如下 1 啟動VC 開始 程序 MicrosoftVisualC 6 0 即可啟動VC6 0 2 編輯 建立源文件 3 編譯 連接和運行源程序 習題 1 一個C語言程序是由 組成a 主程序b 子程序c 函數(shù)d 過程2 一個完整的C語言的程序a 至少包含一個主函數(shù)b 至少包含一個主函數(shù)與一個子函數(shù)c 必須由一個主函數(shù)與一個以上的子函數(shù)組成d 必須由一個主函數(shù)與一個子函數(shù)組成 習題 3 C語言程序的執(zhí)行總是從 a main函數(shù)的入口開始b 編譯預(yù)處理命令開始c 源程序的第一個函數(shù)開始d 源程序的第一行語句開始 習題 4 在C語言的源程序中 主函數(shù)的位置 a 必須在源程序的最后b 任意c 必須在源程序的開頭5 一個函數(shù)一般由兩部分組成 它們分別是 和 6 函數(shù)體使用 符號開始 使用 符號結(jié)束 函數(shù)頭 函數(shù)體 習題 7 C程序的每條語句的結(jié)束標志是 符號 8 在C程序中 注釋以 符號開始 使用 符號結(jié)束 9 算法是 10 表示算法的常用方法有 等 11 結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)是 解決某一問題所采取的方法和步驟 自然語言 流程圖 偽代碼 順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 12 判斷下述說法是否正確 如不正確 說明理由 a printf函數(shù)總是從新行的起始位置開始打印 b 計算機會把 和 之間的注釋文本打印到屏幕上 c 所有的變量在使用前都必須予以聲明 d C語言認為變量number和NuMbEr是相同的 e 聲明語句可放在函數(shù)體中的任何位置 f 打印三行輸出的C語言程序必須用三條printf語句 g printf函數(shù)的格式控制串中使用轉(zhuǎn)義字符 n會把光標定位到屏幕上下一行的開始位置 2 1數(shù)據(jù)與數(shù)據(jù)類型 2 2常量 變量和標準函數(shù) 2 3基本運算符及其表達式 第二章數(shù)據(jù)類型 運算符和表達式 下一章 上一章 目錄 習題 整型 包括有 無符號的基本整型 短整型 長整型實型 包括單精度實型 雙精度實型float double字符型 用于表示和存儲ASCII字符 char 2 1數(shù)據(jù)類型 是C語言數(shù)據(jù)類型的基本型 其值不可再分解為其他類型 一種特殊的數(shù)據(jù)類型 其值為某個量的內(nèi)存地址 一種無返回值函數(shù)的數(shù)據(jù)類型 void 用新的類型名替代已有類型名使用 用typedef定義 一種由單種或多種數(shù)據(jù)類型構(gòu)造而成的數(shù)據(jù)類型 數(shù)組結(jié)構(gòu)共用體枚舉類型 C語言的基本數(shù)據(jù)類型 2 2常量 變量和標準函數(shù) 2 2 1常量2 2 2變量2 2 3標準函數(shù) 下一節(jié) 第二章 目錄 習題 2 2 1常量 常量在程序執(zhí)行期間其值保持不變的量C語言有以下幾種類型的常量 整型常量實型 浮點型 常量字符常量字符串常量 有三種形式 十進制整數(shù) 八進制整數(shù) 由數(shù)字0開頭十六進制整數(shù) 由前綴0 x或0X開頭 1 整型常量 如 014 0110177777 如 0 x110XAFBDE 0X00FFH 如 11 13 0 65535 1 00021 310454 10 30199 整數(shù)又可分為 長整型整數(shù) 用后綴L l表示 012L 65536L 0XCL無符號整數(shù) 用后綴U u表示 017u 0 xfdbU無符號長整數(shù) 用后綴UL ul表示 15uL 實型常量又稱實數(shù) 指帶有小數(shù)部分的數(shù) C語言中的實數(shù)是以十進制表示的 有兩種表示形式 十進制小數(shù)形式 由數(shù)字 數(shù)符和小數(shù)點組成 例 0 123 123 123 0 0 2 5 指數(shù)形式 又稱科學記數(shù)法 用E 或e 表示以10為底的指數(shù) 如 100000000 1 108 1E 80 0000125 1 25 10 5 1 25E 05 0 91 10 3 0 91E 03 尾數(shù)部分 指數(shù)部分 字母E e前必須有數(shù)字 而E后面的階碼必須為整數(shù) 2 實型常量 浮點數(shù) 例 下列不合法的指數(shù)形式 單獨的小數(shù)點和單獨的指數(shù)部分如 E 5E10 階碼只能是整數(shù) 不能帶小數(shù)點 如 1234E1 52 E6 5e 2 3 E 35 E4 1012不能寫成E12 必須寫成 3 字符常量 字符常量 是用單引號括起來的一個字符如 a A 9 合法 a 99999 非法在內(nèi)存中 字符常量以ASCII碼存儲 一個字符占一個字節(jié) 由于字符常量是按整數(shù)存儲的 可以像整數(shù)一樣在程序中參與相關(guān)的運算 如 a 32 執(zhí)行結(jié)果97 32 65 9 9 執(zhí)行結(jié)果57 9 48 以 開頭的字符序列 有特定的含義 如 表示輸出一個反斜杠符 表示輸出一個雙引號 ddd ddd表示八進制的ASCII碼 xhh hh表示十六進制的ASCII碼 例 n 回車換行 12 xa A 101 x41 注 0 或 000 是代表ASCII碼為0的字符 即空字符 NULL 表示整數(shù)0 轉(zhuǎn)義字符 例2 1 轉(zhuǎn)義字符的應(yīng)用 includevoidmain printf a tb nc bd 100 x40 n a bd 輸出到顯示屏 字符串常量 用一對雙引號括起的字符序列 例 CHINA a 12 5 w x53 np 103q 字符串長度 字符串中所有字符的個數(shù)系統(tǒng)自動在每個字符串的末尾加上一個空字符NULL 即 0 作為字符串的結(jié)束 0 是一個ASCII碼為0的字符 例 CHINA 在內(nèi)存中所占的字節(jié)為 4 字符串常量 字符常量由單引號括起來 字符串常量由雙引號括起來 字符串常量和字符常量的主要區(qū)別 字符常量只能是單個字符 字符串常量可以含有多個字符 字符常量占一個字節(jié) 字符串常量占的字節(jié)數(shù)等于字符個數(shù)加1 比較 A 與 A 的區(qū)別 若輸出的字符串中含雙引號 則要使用轉(zhuǎn)義字符 例 printf hesaid Iamastudent n 輸出 hesaid Iamastudent 5 符號常量 符號常量 用標識符表示的常量格式 define標識符常量功能 用該標識符代表后面的常量值例 definePI3 defineSTAR 預(yù)處理命令 define也稱為宏定義 一個 define命令只能定義一個符號常量 用一行書寫 不用分號結(jié)尾 include definePI3 用預(yù)處理命令定義符號常量voidmain floatr area l 定義變量類型為實型scanf f 例2 2 求半徑為r的圓面積和圓周長 說明 符號常量名習慣用大寫字母表示該命令通常放在文件頭在程序中 符號常量不允許重新賦值 例 definePI3 PI 5 6 或scanf f 5 符號常量 2 2 2變量 變量概述整型變量實型變量字符型變量變量的初始化 變量概述 變量 在程序執(zhí)行期間其值可以改變的量變量在使用之前必須被聲明每一個變量有名字 類型 長度和值 對變量賦值過程是 覆蓋 過程 用新值去替換舊值 從內(nèi)存中讀出變量的值 該變量保持不變 90 x 90 printf d x 定義變量的形式 類型說明符變量名表 例 inta b 定義兩個整型變量a和b charc 定義字符型變量c floatf1 f2 定義單精度實型變量f1和f2 變量概述 變量類型 type 變量名 name 是一個標識符 1 整型變量 用來存放整型數(shù)據(jù)的變量 整型變量的分類表 與操作系統(tǒng) 編譯系統(tǒng) 機器字長有關(guān) 有符號的整數(shù) 最高位是符號位 正整數(shù)在內(nèi)存中以二進制原碼形式存放 負整數(shù)在內(nèi)存中以二進制補碼的形式存放 有符號正整數(shù)10 有符號負整數(shù) 10 無符號整數(shù) 無符號整數(shù)的所有二進制位全部用來存放數(shù)值 不能存放負數(shù) 無符號整數(shù)65535u 例 求50的三次方 includevoidmain shortintx x 50 50 50 printf d n x 程序運行結(jié)果為 6072 錯 將以上程序改為 includevoidmain intx x 50 50 50 printf d n x 運行結(jié)果 125000 因此 在定義整型變量時 要注意數(shù)據(jù)類型允許的數(shù)值范圍 用來存放實型數(shù)據(jù)的變量分單精度型 雙精度型和長雙精度型三類 2 實型變量 includevoidmain floatf f為單精度實型變量doubled d為雙精度實型變量f 33333 33333 d 33333333333333 333333 printf f f nd f n f d 輸出結(jié)果 f 33333 332031d 33333333333333 332000 例2 3 實型變量的使用 f 3 字符變量 用來存放字符常量的變量例 charc1 c2 c3 c1 A c2 n c3 97 每個字符變量分配一個字節(jié)用于存放一個字符 存放的是字符的ASCII碼值 字符數(shù)據(jù)與整型數(shù)據(jù)可相互賦值 直接運算 可以把字符變量按整型量輸出 也允許把整型量按字符量輸出 includevoidmain inta b 給一個整型變量賦一個字符值charc1 97 給一個字符變量賦一個整數(shù)值c1 c1 32 將小寫字母轉(zhuǎn)換為大寫字母printf d d n a c1 printf c c n a c1 輸出結(jié)果 9865bA 例2 4 字符型變量的使用 注意 只能將一個字符常數(shù)賦給一個字符變量 不能把一個字符串常量賦予字符變量 例 charc abc 在C語言中沒有字符串變量 但可以用一個字符數(shù)組來存放一個字符串常量 4 變量的初始化 在說明變量的同時給變量賦初值格式 類型說明符變量 常數(shù) 例 inta 5 定義并初始化charc1 a c2 B doublearea r 23 e 2 intx 10 y 10 z 10 不能寫成intx y z 10 inta a 5 賦初值 2 2 3標準函數(shù) C編譯系統(tǒng)提供的庫函數(shù)包括 輸入輸出函數(shù) 數(shù)學函數(shù) 字符和字符串函數(shù)等 數(shù)學函數(shù) x為弧度 doublex doublesin x cos x sin x cos x exp x log x log10 x fabs x pow x y sqrt x area s s a s b s c s a b c 2 include include 例2 5 求三角形面積 預(yù)編譯命令 將系統(tǒng)提供的數(shù)學函數(shù) 作為頭文件包含到用戶源文件中 voidmain doublea b c s area scanf lf lf lf 運行 2 3運算符和表達式 2 3 1算術(shù)運算符與算術(shù)表達式2 3 2不同數(shù)據(jù)類型的轉(zhuǎn)換與運算2 3 3關(guān)系運算符與關(guān)系表達式2 3 4邏輯運算符與邏輯表達式2 3 5條件運算符與條件表達式2 3 6賦值運算符與賦值表達式2 3 7逗號運算符與逗號表達式 2 3基本運算符及其表達式 1 基本算術(shù)運算符 算術(shù)運算符用于各類數(shù)值運算 包括基本算術(shù)運算符 自增運算符 自減運算符 下表為基本算術(shù)運算符 1 在C語言中 規(guī)定了運算符的優(yōu)先級和結(jié)合性 優(yōu)先級 語言中 運算符的優(yōu)先級共分為15級 1級最高 15級最低 表達式求值時 先做優(yōu)先級高的操作 如 d a b c 當運算符的優(yōu)先級別相同時 運算次序由結(jié)合性決定 結(jié)合性 左結(jié)合性 先左后右 例 d 3 5 4 右結(jié)合性 先右后左 例 d a 3 運算符 整數(shù)相除截去余數(shù) 此運算為整除 5 2 2 2 5 1 3 1 3 1 3 0 對于浮點數(shù)則為通常意義的除法5 0 2 0 2 51 3 1 3 1 3 1 模運算符 用于計算兩個數(shù)相除后得到的余數(shù) 如 a b求a除以b以后得到的余數(shù) 運算對象只能是整型量 其結(jié)果也是整型量 如 5 2 13 3 03 5 3 A 2 13 0 10 0 5所得結(jié)果的符號與運算符左側(cè)操作數(shù)的符號相同 5 2 15 2 1 2 自增 自減運算符 例 x 10 y x 此時 y 11若 x 10 y x 則y 10在這兩種情況下 x都被置為11 K 3 j 5 i 3 m k j n i j 例 m k 20 4 n i 15 4 例2 7 自增 自減運算符的使用 includevoidmain inti 6 a b printf d n i printf d n i a i printf d n a b i printf d n b printf d n i printf i d n i i 7777 6 7 注意 自增 自減運算只能用于變量 不能用于常量和表達式 例 i 為合法的運算 6 a b 為非法的運算 自增 自減運算符是兩個 或兩個 的一個整體 中間不能有空格 如果有多于兩個 或兩個 連寫的情況 則編譯首先識別前兩個 或 為增量或減量運算符 表達式x y等價于 x y自增 自減運算符的運算順序是右結(jié)合 因此對 i 應(yīng)理解為 i 而 i 是非法的 例 i 3 printf d i 輸出 3 例2 8 自增 自減運算符的使用 includevoidmain inti j k i 1 j 1 k i j printf i d j d k d n i j k 程序運行結(jié)果 i 2 j 1 k 2 k i j 由算術(shù)運算符和括號將運算對象 如常量 變量 函數(shù)等 連接起來的一個有值的式子 例 A 2 sqrt 4 d d 2 表達式求值的優(yōu)先次序 函數(shù) 高低 3 算術(shù)表達式 號 如 a b c d 不能省略 如 2 a b 2 a b 括號只能使用圓括號 且成對出現(xiàn) 不能使用 和 如 a x b y c a x b y c 書寫問題 LN X 例 將下列數(shù)學式子寫成C算術(shù)表達式 log sqrt a x x x a e st abs a exp s t sqrt fabs sin x 3 14 180 xy pow x y A 3 x n 2 x 1 B 3 x n 2 x 1 C 3 pow x n 1 2 x 1 D 3 pow n x 2 x 1 例 與數(shù)學式子3乘以x的n次方除以 2x 1 對應(yīng)的C語言表達式是 2 3 2不同數(shù)據(jù)類型間的轉(zhuǎn)換與運算 在C程序中 當不同類型的量進行運算時 要轉(zhuǎn)換成同一種類型然后再進行運算 例 10 a 1 5 8765 1234 b 轉(zhuǎn)換方式 自動轉(zhuǎn)換 數(shù)據(jù)類型自動由低級向高級轉(zhuǎn)換 強制轉(zhuǎn)換 將表達式的運算結(jié)果強制轉(zhuǎn)換成指定的數(shù)據(jù)類型 自動類型轉(zhuǎn)換 這種類型轉(zhuǎn)換由編譯系統(tǒng)自動完成轉(zhuǎn)換規(guī)則 說明 1 橫向的箭頭表示必定的轉(zhuǎn)換 2 縱向的箭頭表示當運算對象類型不同時轉(zhuǎn)換的方向 例 floatf 3 5 intn 6 longk 21 doubless f n k 2 強制類型轉(zhuǎn)換 格式 數(shù)據(jù)類型說明符 表達式 注意 強制轉(zhuǎn)換屬單目運算 運算優(yōu)先級為2 強制轉(zhuǎn)換得到的是中間結(jié)果類型 原變量類型不變 數(shù)據(jù)類型說明符和表達式都必須加括號 單個變量除外 例 intx y floatz float x y int z x float 5 3 將5 3的值轉(zhuǎn)換為float型 includevoidmain intx 8 floatf 6 85 printf float x f x d n float x x printf int f d f f n int f f 例2 12 強制類型轉(zhuǎn)換的應(yīng)用 2 4 f 2 3 3關(guān)系運算 比較運算 即比較兩個量的大小 比較的結(jié)果為 真 或 假 例 a 3如果a 8 則結(jié)果為 真 如果a 1 則結(jié)果為 假 1 關(guān)系運算符 2 關(guān)系表達式 用關(guān)系運算符將兩個表達式連接起來的式子 格式 其中 表達式1和表達式2可以是任意表達式 例 m n 20 測試此關(guān)系是否成立 成立為真 不成立為假 成立 關(guān)系表達式的值為1 不成立 關(guān)系表達式的值為0 例 5 4 b 3 a 4 b 6 5 2 7 8 0 0 0 值為 1 例2 13讀程 includevoidmain inta b c a b c 10 a b c printf d d d n a b c a b c 2 printf d d d n a b c a b c 100 printf d d d n a b c 輸出結(jié)果 1 10 101 20 110 20 11 關(guān)系運算的不足 關(guān)系表達式只能表達簡單的關(guān)系 如 sum 1500y z即只能對一個條件進行測試 而以下關(guān)系 0 x 5則不能用關(guān)系表達式表示 x 0 x 5 2 3 4邏輯運算符與邏輯表達式 1 邏輯運算符C邏輯運算符 邏輯運算真值表 特點 全真為真 其余為假 特點 全假為假 其余為真 邏輯非 邏輯與 邏輯或 2 邏輯表達式 用邏輯運算符將表達式連接起來的式子 形式 表達式1和表達式2可以是任何表達式如 5 3 2 4 a 邏輯表達式的值整數(shù)1 true0 false 判斷時 0代表 假 非0即表示 真 將下面的條件用C語言的邏輯表達式表示 例1 1 x 10且x 7x 1 x 10 x 7例2 y能被4整除 但不能被100整除或y能被400整除 y 4 0 y 100 0 y 400 0 運算順序 算術(shù)運算 關(guān)系運算 賦值運算例 若a 2 b a c 5 f 3 0c 3 86 b 1 6 0 1 1 0 邏輯與和邏輯或運算符具有短路能力 邏輯與 表達式1 表達式2 只有表達式1的值為 真 時才求表達式2的值 如 x y 1 x x y 0 1 短路表達式 邏輯或 表達式1 表達式2 只有表達式1為假時才判斷表達式2的值例 voidmain intnum 3 5 4 num 0 printf num d n num 輸出 num 3 條件運算符 三目運算符 右結(jié)合 13級 條件表達式 執(zhí)行過程 2 3 5條件運算符與條件表達式 例 max a b a b max a b a b 說明 在程序中常把條件表達式的值賦給某個變量 如 將ch中字母轉(zhuǎn)換為小寫字母charch getchar ch ch A 將x的絕對值賦給yy x 0 x x 在條件表達式中 各表達式的類型可以不同 此時 條件表達式值的類型為表達式2和表達式3中較高的類型 如 x y 1 1 5條件表達式的值為浮點型 說明 說明 條件運算符可以嵌套 這種嵌套是右結(jié)合的 例 inta 15 b 20 c 25 d 30 e e a b c c d b d e 30 例2 15讀程 寫出運行結(jié)果 includevoidmain inta 1 b 1 c 1 a a b b b c c c a printf 1 d n a b a b printf 2 d n a c a c a b c printf a n printf b n printf 4 d d d n a b c 運行結(jié)果 1 2 2 3b 4 2 2 4 例2 16 任意輸入三個數(shù) 輸出最大值 includevoidmain inta b c max scanf d d d 程序運行如下 25 748 最大數(shù)為 48 賦值運算符分兩種 簡單賦值運算符 復(fù)合賦值運算符 如 等優(yōu)先級14 右結(jié)合性 賦值表達式 由賦值運算符連接起來式子作用 將表達式的值賦給變量 2 3 6賦值運算符和賦值表達式 簡單賦值運算符為 由 連接的式子為 簡單 賦值表達式 格式 作用 把右邊表達式的值 賦給左邊的變量 例 k i j i 2 j 3 k的值為 x a 5 b 8 x的值為 d e 2 1執(zhí)行順序是 先計算 再賦值 4 13 1 簡單賦值運算符和賦值表達式 例 指出下列賦值表達式的錯誤 s x y 5 n a a 3 2 w 3 64E2 1 5 87 cos a sqrt a a b b y int i k 12 3 4 a a 7 賦值運算的類型轉(zhuǎn)換 規(guī)則為 實型數(shù)據(jù)賦給整型變量時 只取整數(shù)部分 如 inti 1 5 2 2 x的值為0 000000 整型數(shù)據(jù)賦給實型變量時 以浮點形式取值 i值為1 如 floatx 1 4 1 4 1 4 字符型數(shù)據(jù)賦給整型變量時 整型變量的高位補的數(shù)與char的最高位相同 低八位為字符的ASCII碼值 整型數(shù)據(jù)賦給字符型時 只把低8位賦給字符變量 如 K A k值為65 k 0000000001000001 例2 13 voidmain shortintx 300 chary y x printf y dy c n y y 輸出結(jié)果 y 44y x y 2 復(fù)合賦值符及表達式 復(fù)合賦值運算符是在簡單賦值運算符前加雙目運算符構(gòu)成 共10種 等 例 c c 3c 3x y 7x x y 7 設(shè)x y z的初始值分別為 10 20 30 x y z zx x y y z z 結(jié)果為 930設(shè)t的值為5t t t tt t t t t t 結(jié)果為 40 例2 14 voidmain inta b c a b c 5 printf a d b d c d n a b c a b 4 c 6 printf a d b d c d n a b c a b c printf a d b d c d n a b c a a a a printf a d n a 運行結(jié)果 a 5 b 5 c 5a 10 b 4 c 6a 20 b 4 c 6a 0 逗號運算符運算符 優(yōu)先級15級最低 左結(jié)合用逗號運算符將各表達式連接起來的式子為逗號表達式 格式 如 a 3 5 a 10 a 8求解過程 先求表達式1的值 再求表達式2的值 最后求表達式n的值 表達式n的值作為整個逗號表達式的值 2 3 7逗號運算符和逗號表達式 例 逗號表達式的應(yīng)用 includevoidmain inta 2 b 4 c y y c a b b c printf y d n y 輸出結(jié)果 y 12 例 1 a 3 5 a 4 a 52 a 5 a a a 53 inta b a 2 b 5 a b a b 4 intx 10 y 3 z printf d n z x y x y 20 30 9 3 說明 1 用一個逗號表達式語句 可代替多個賦值語句 如a 0 b 1 c 2 可寫成 a 0 b 1 c 2 2 在變量說明和函數(shù)參數(shù)表中逗號只是起分隔符作用printf d d d a b c printf d d d a b c b c 例 交換變量a b的值 a 1 0 b 2 0 voidmain floata b c a 1 0 b 2 0 printf a fb f a b c a a b b c printf a fb f a b a b c a a b b y x 1 0 1 0 2 0 習題 1 下面四個選項中 均是合法整型常量的選項是 A 160B 0 xcdfC 01D 0 x48a 0 xffff01a986 0122e50110 xe06680 x2 下面四個選項中 均是不合法浮點數(shù)的選項是 A 160 B 123C 018D e30 122e4 2123e4 234e3 e50 01e3 A B 習題 3 下面四個選項 均是合法轉(zhuǎn)義字符的選項是 A B C 018 D 0 017 f 101 n xab x1f 4 下面四個選項中 均是非法常量的選項是 A ads B C 0 x18D 0 xabc 0fff 01 01177 0 0 xa 12 4560 xf a A A 習題 5 下列變量名中合法的是 A 3a4bB cos b C 6a7bD ch 566 下面錯誤的c常數(shù)是 A 0 0E0B 0 1E02C E 1D 1E17 下列表達式值為5的是 A sqrt 25 0 B pow 25 0 5 C 10 0 5D 25 10 C C 9 C語言中 char型數(shù)據(jù)在內(nèi)存中是以形式存儲的A 原碼B 補碼C ASC 碼D 反碼 10 執(zhí)行以下語句的輸出為 intx 15 y 5 printf d n x y 2 A 0B 1C 6D 12 習題 習題 11 判斷表達式的類型 1 chara intb floatc doubled a b c d結(jié)果的類型為 2 float 5 3 結(jié)果的類型 3 doublex y int x y類型為 double float double 習題 voidmain inti 10 printf d d d d n i i i i 程序運行結(jié)果 12 12 12 11 習題 voidmain intc 5 printf d d d n c c c 8 c c 5 printf d n c c c 8 c 程序運行結(jié)果 12 14 612 上機作業(yè) 1 取圓周率為3 半徑r為40 求圓面積 要求 圓周率定義為符號常量 半徑用scanf 輸入 分兩行輸出 先輸出圓周率和半徑 再輸出面積 2 思考題 設(shè)學生常數(shù)為500 編程輸出下列結(jié)果 引號也要輸出 Howmanystudenthere 500 上機實驗內(nèi)容 1 實驗教程 第二章實驗一 1 3 4題2 輸入兩個數(shù)分別賦予變量a b 然后 交換變量a b的值再輸出 上機作業(yè) 實驗教程 第二章實驗二 1 2 3題 編程題 任意輸入三個數(shù) 輸出最大值 用條件表達式 上機作業(yè) 實驗教程 第三章實驗一2 4題 編程 輸入一個三位正整數(shù) 然后反向輸出對應(yīng)的數(shù) 如輸入123 則輸出321 要求 用 運算符 上機作業(yè) 實驗與習題 第4章實驗一3 4題 實驗與習題 P63編程題的第4小題要求 用switch語句編寫 上機作業(yè) 實驗與習題 第5章實驗一 1 編程題 任意輸入一串字符 以 結(jié)束 分別統(tǒng)計其中字母 數(shù)字和其他字符的個數(shù) 改錯 difinePI 3 1415926 voidMain 求圓面積 intr 40 scanf f n r area PI r r print PI dr d narea f n PI m definePI3 f f floatarea floatarea d include 第三章基本語句與順序結(jié)構(gòu)程序設(shè)計 3 1C語言程序的基本語句 3 2賦值語句 3 3數(shù)據(jù)的輸入輸出 下一章 上一章 目錄 習題 3 1C語言程序的基本語句 C語言語句有五類 表達式語句 函數(shù)調(diào)用語句 控制語句 復(fù)合語句 空語句 是C語句結(jié)束標志 表達式語句 x x 1 z x j j 3 是表達式 不是語句 j j 3 是語句 i 自增運算表達式加分號n 10 復(fù)合賦值表達式加分號 函數(shù)調(diào)用語句 printf Good n 控制語句 if語句 while語句 return語句等 復(fù)合語句 用 括起來組成的一個語句 if a b c a a b b c 空語句 僅由一個 構(gòu)成的語句 3 2賦值語句 是由賦值表達式加上分號構(gòu)成的表達式語句 格式 注意 在賦值符 右邊的表達式又可以是一個賦值表達式 如 a b c d 5 右結(jié)合 變量 表達式 賦值表達式是一種表達式 它可以出現(xiàn)在任何允許表達式出現(xiàn)的地方 而賦值語句則不能 如 if a b 0 c a if a b 0 c a printf d n z x y x y 賦值表達式和賦值語句的區(qū)別是 3 3數(shù)據(jù)的輸入輸出 C語言中數(shù)據(jù)的輸入 輸出是由函數(shù)來實現(xiàn)的 3 3 1格式輸入輸出函數(shù)printf 和scanf 3 3 2字符輸入輸出函數(shù)putchar 和getchar 1 格式輸出函數(shù) printf 函數(shù) 格式 printf 格式控制字符串 輸出表列 功能 按格式控制字符串規(guī)定的格式 向標準輸出設(shè)備 一般為顯示器 輸出輸出表列中各輸出項的值 printf 格式控制 輸出表列 格式控制 由雙引號括起來的字符串 用于指定輸出格式 普通字符 按原樣輸出的字符格式說明 用來指定需輸出數(shù)據(jù)的輸出格式形式 修飾符 格式字符輸出表列 需要輸出的數(shù)據(jù)列表 彼此間用逗號分隔 可以是任意合法的表達式 printf a d tb f a b 格式說明 輸出表列 若此例中inta 5 floatb 20 5 輸出結(jié)果 a 5b 20 500000 繼續(xù) 表3 1用于輸出的修飾符 返回 表3 2用于輸出的格式字符 返回 例 格式輸出 printf 函數(shù) printf a b 5 2f c 1 d格式符 作用 輸出一個帶符號的十進制整數(shù) 正數(shù)不輸出符號 格式 d md ld其中 d 按整型數(shù)據(jù)的實際長度輸出 m 字段寬度 ld 輸出長整型數(shù)據(jù) hd 輸出短整型數(shù)據(jù) 作用 輸出一個無符號的八進制 十六進制或十進制整數(shù) 例 longa 10 shortb 1 unsignedintc 65535 printf 5d o x n a a a printf hd ho hx hX hu n b b b b b printf d o x u n c c c c 1 原 10001 1 補 1111111111111111 2 o x和u格式符 輸出結(jié)果 10 12 a 1 0 xffff FFFF 6553565535 177777 ffff 65535 作用 用來輸出一個字符例 charch a inta 65 printf c d 3c n ch ch ch printf c t b 3d n a a 3 c格式符 輸出結(jié)果 a 97 aA 65 一個整數(shù) 如果在0 127之間 也可用字符形式輸出 系統(tǒng)會將該整數(shù)轉(zhuǎn)換成對應(yīng)的ASCII碼字符 4 s格式符 作用 用來輸出一個字符串格式 s ms m ns其中 m 輸出的字符串占m列 n 輸出字符串中左端n個字符 includevoidmain printf s n computer printf computer n printf 3s n 5 3s 8 2s n computer computer computer 例 輸出結(jié)果 computer computercomputercom co 作用 以小數(shù)形式輸出單 雙精度實數(shù) 格式 f m nf其中 f 整數(shù)部分全部輸出 隱含輸出6位小數(shù) m 字段寬度 整數(shù) 小數(shù)位數(shù) 數(shù)符 小數(shù)點 n 小數(shù)位數(shù)的個數(shù) 如 12 4f 5 f格式符 例 includevoidmain floatx 123 456 doubley 321 654321 printf f 7 2f 10 4f n x x x printf 5 3f n 0f n y y 輸出結(jié)果 123 456001 123 46 123 4560321 654322 作用 以標準化的指數(shù)形式輸出實數(shù) 小數(shù)點前必須有而且只能有一位為非0數(shù)字 格式 e m ne其中 e 默認輸出6位小數(shù)m 字段寬度 指數(shù)部分占5列 n 小數(shù)部分的位數(shù) 6 e格式符 例 includevoidmain floatf 123 456 printf e n 10 2e n 10E n f f f 輸出結(jié)果 1 234560e 0021 23e 002 1 234560E 002 輸出表列中各輸出項與各格式說明必須按照從左到右的順序在類型上一一匹配 如果實型數(shù)據(jù)用 d輸出 結(jié)果出錯 整型數(shù)據(jù)用 f輸出 結(jié)果為0 注意 輸出表列可以是變量 常數(shù) 數(shù)組元素 函數(shù)引用及帶運算符的表達式 例 printf f d d f 3 14 a b x cos y 當格式說明個數(shù)輸出項時 輸出不定值 注意 輸出表列的求值順序 VC是從右到左順序求值的 輸出仍從左至右 voidmain inti 8 printf d d d d n i i i i 除X E G格式符外 其他格式符必須用小寫字母 輸出結(jié)果 88 87 2 格式輸入函數(shù)scanf 格式 scanf 格式控制 地址表列 功能 按格式控制所規(guī)定的格式 從指定的輸入設(shè)備 一般為鍵盤 上把數(shù)據(jù)輸入到指定的變量中 格式控制 普通字符 需原樣輸入的字符 通常不使用 格式說明 用于指定需輸入數(shù)據(jù)的輸入格式形式 修飾符 格式字符地址表列 給出各變量的地址 地址是由 運算得到的 是取地址運算符 得到變量在內(nèi)存中的地址 單目運算符 右結(jié)合性 scanf d d 格式說明 地址表列 繼續(xù) 表3 3用于輸入的修飾符 返回 表3 4用于輸入的格式字符 返回 格式輸入的使用與注意 1 輸入數(shù)據(jù)時采用的分隔符應(yīng)與格式控制中的分隔符一致 格式控制中無普通字符時 輸入數(shù)值型數(shù)據(jù)可用空格 Tab鍵 回車鍵作分隔符 例 inta b floatf e scanf d d 輸入 23 456 23 Tab 456 23 456 23 67 612 9 a 12 b 24 scanf a d b d 注意 2 輸入數(shù)據(jù)時不可規(guī)定精度 但可指定寬度 例 scanf 7 2f 輸入 12346abc a b ch 3 輸入格式符帶有 表示該數(shù)據(jù)不賦值 例 scanf d d d 輸入 12 34 567 則a 12 c 567 34被跳過 4 無符號數(shù)可用 d o x格式輸入 注意 5 用C格式符輸入字符時 空格 轉(zhuǎn)義字符均為有效字符 例 scanf c c c 若鍵入ABC 則a A b B c C若鍵入A B C 則a A b c B若鍵入A B 則C未送 結(jié)果已出為 a A b c B 6 在下列情況下可認為數(shù)據(jù)輸入結(jié)束 遇空格 回車 Tab鍵 遇寬度結(jié)束 非法輸入 例3 1 includevoidmain inta floatb charc scanf d f c 運行 23 4 5y a 23 b 4 500000 c y23 4 5 y a 23 b 4 500000 c y按格式 6d 6f c送數(shù) 23 4 5y a 23 b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國卵磷脂復(fù)合營養(yǎng)膠囊行業(yè)投資前景及策略咨詢研究報告
- 餐飲行業(yè)知識產(chǎn)權(quán)保護
- DB32T 5107-2025 油菜生產(chǎn)全程質(zhì)量控制技術(shù)規(guī)范
- 陽臺窗戶安全
- 淡水養(yǎng)殖基礎(chǔ)知識
- 實施公共廣播系統(tǒng)聲音清晰度
- 加強文化遺產(chǎn)保護中的文物歸類
- 金融風險管理工具使用指南
- 住宅小區(qū)綠化養(yǎng)護承包合同
- 電梯安全管理人員摸底例題跟答案
- 特勞特-定位課件
- 家庭農(nóng)場經(jīng)營與管理培訓(xùn)課件
- 中國重癥腦血管病管理共識課件
- 轉(zhuǎn)爐煉鋼設(shè)備與工藝課件
- 汽車吊車施工安全技術(shù)交底
- 電工基礎(chǔ)(中職)完整版教學課件
- 小班語言繪本《小蛇散步》繪本PPT
- 杭州房建工程監(jiān)理大綱范本
- DB22∕T 2797.1-2017 玄武巖纖維復(fù)合筋及玄武巖纖維混凝土設(shè)計與施工規(guī)范 第1部分:玄武巖纖維復(fù)合筋
- 慶陽剪紙藝術(shù):演示文稿
- 人居環(huán)境學導(dǎo)論
評論
0/150
提交評論