C語言程序設(shè)計實例教程(第三版)課件:存款輸入與利息輸出_第1頁
C語言程序設(shè)計實例教程(第三版)課件:存款輸入與利息輸出_第2頁
C語言程序設(shè)計實例教程(第三版)課件:存款輸入與利息輸出_第3頁
C語言程序設(shè)計實例教程(第三版)課件:存款輸入與利息輸出_第4頁
C語言程序設(shè)計實例教程(第三版)課件:存款輸入與利息輸出_第5頁
已閱讀5頁,還剩94頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

存款輸入與利息輸出能力目標(biāo)知識目標(biāo)

能合理使用C語言中的運算符對基本類型的數(shù)據(jù)進行運算,并能編寫簡單的輸入/輸出語句,對數(shù)據(jù)進行輸入和輸出控制。了解C語言的特點掌握C標(biāo)識符的命名規(guī)則掌握C基本的數(shù)據(jù)類型及其表示形式掌握C運算符的運算規(guī)則及其優(yōu)先級關(guān)系掌握C基本數(shù)據(jù)類型間的轉(zhuǎn)換規(guī)則掌握C數(shù)據(jù)的輸入與輸出

任務(wù)1存款的原樣輸出任務(wù)2利息的計算任務(wù)3存款的輸入與利息的輸出

項目分解任務(wù)1存款的原樣輸出1.1.1問題情景及其實現(xiàn)#include<stdio.h>intmain(){printf("張三存款5000元!\n");return0;}

有一位用戶張三到XXX銀行,存儲5000元人民幣,請輸出該用戶的存款金額。張三存款5000元!程序運行結(jié)果:C語言發(fā)展歷史C語言的特點C語言運行環(huán)境與開發(fā)工具1.1.2相關(guān)知識一、C語言發(fā)展歷史B語言:Bell實驗室,1970年在PDP機器上用其編寫UNIX系統(tǒng)CPL語言:劍橋大學(xué),1963年BCPL語言:劍橋大學(xué),1967年C語言:Bell實驗室,1972~1973年用其改寫UNIX系統(tǒng)經(jīng)簡化進一步簡化保持精練、接近硬件的優(yōu)點,克服數(shù)據(jù)類型過少的不足C語言的里程碑:1972年Dennis·M·Ritchie開發(fā)設(shè)計1978年Dennis·M·Ritchie和BrianW·Kernighan合著

《CProgrammingLanguage》(K&R版本)1987年ANSI1990年ISO9899-1990Dennis·M·Ritchie二、C語言的特點語言簡潔,表達能力強,易于理解只有32個關(guān)鍵字,9種控制語句有大量的標(biāo)準(zhǔn)庫函數(shù)數(shù)據(jù)類型豐富運算符種類多,功能強程序書寫格式自由可直接訪問物理地址,實現(xiàn)對硬件和低層系統(tǒng)軟件的訪問語言生成的代碼質(zhì)量高可移植性好應(yīng)用面廣,適于教學(xué)增加學(xué)習(xí)難度三、C語言運行環(huán)境與開發(fā)工具C語言作為高級語言,要想得到可以執(zhí)行的C程序,必須對C源程序進行編譯和連接,而該過程需要在開發(fā)工具特定的運行環(huán)境下進行。1、C語言的運行環(huán)境

VisualC++6.0(后面稱VC6.0)是當(dāng)今Windows操作系統(tǒng)下最流行的C類集成開發(fā)環(huán)境之一。這類編譯程序也兼容了對C語言的編譯和運行。它具有方便、直觀、快捷的編輯器,功能強大的調(diào)試器,功能更完善的編譯器,還具有豐富的庫函數(shù)。它向用戶提供了一個集成環(huán)境,把程序的編輯、編譯、連接和運行等操作全部集中在一個界面上進行,使用十分方便。本教程采用VC6.0編譯程序作為C語言程序的運行環(huán)境,下面我們先對VC6.0的使用進行基本的介紹。2、C語言的開發(fā)工具的使用(1)啟動VC6.0編譯程序。(2)創(chuàng)建項目(3)C源文件的創(chuàng)建(4)編輯源代碼(5)編譯連接源程序(6)執(zhí)行程序1.1.3知識擴展:字符原樣輸出程序/*----------------Aprogramtoprintwelcome----------------*/#include<stdio.h>intmain(){printf("welcome!");return0;}注釋預(yù)處理命令函數(shù)定義語句程序運行結(jié)果:welcome!函數(shù)體任務(wù)2利息的計算#include<stdio.h>#inclide<math.h>intmain(){double=0.03;double=5000,;int=3;DinterestDmoney

pow((1Irate),term)

Dmoney

;printf("存款金額為%.1lf的%d年存款利息是:%.2lf元\n",Dmoney,term,Dinterest)

;return0;}1.2.1問題情景及其實現(xiàn)

假設(shè)XXX銀行1年定期存款的利率為3%,并已知存款期為3年,存款本金為5000元,請計算3年后可以得到的利息是多少。

存款金額為5000.0的3年存款利息是:463.64元程序運行結(jié)果:IrateDmoneyDinterestterm-+=*分析:計算機操作處理時,要完成以下工作:在內(nèi)存中給存款金額Dmoney、存款利率Irate、存款期限term和存款利息Dinterest開辟存儲空間,存放它們的值。應(yīng)該留多大的地方來存放它們的值?數(shù)據(jù)3和0.03與

term、Irate不同,它們是在編寫程序時就給出確定的值,在運算過程中不會改變。這樣的數(shù)計算機怎么處理?對整數(shù)3和小數(shù)0.03,計算機存放時是否有區(qū)別?+、-、*、=等這些符號計算機的識別與執(zhí)行是怎樣的?C的字符集及詞法約定常量與變量基本數(shù)據(jù)類型運算符與表達式運算符的優(yōu)先級和結(jié)合性數(shù)據(jù)的類型轉(zhuǎn)換1.2.2相關(guān)知識一、C的字符集及詞法約定1、基本字符集字符集是C語言的基本字符集,C語言使用基本字符集如下:①大寫字母:ABC…XYZ②小寫字母:abc…xyz③數(shù)字:0123456789④特殊符號:+-*/><()[]{}_=!#%.,;:‘“|&?$^\~⑤空白符:空格符、換行符、制表符一、C的字符集及詞法約定2、標(biāo)識符

標(biāo)識符是用來標(biāo)識某種對象的名字,這些對象可以是程序中的變量、符號常量、數(shù)組、函數(shù)和數(shù)據(jù)類型等。

標(biāo)識符的構(gòu)成成份是:字母、數(shù)字和下劃線;構(gòu)成規(guī)則是:以字母或下劃線開頭的序列。C語言中標(biāo)識符分為系統(tǒng)定義標(biāo)識符和用戶定義標(biāo)識符兩種。

:是C語言系統(tǒng)使用的具有特定含義的標(biāo)識符,它們都是一些英文單詞或縮寫,也稱為特定字或保留字,不能作為預(yù)定義標(biāo)識符和用戶定義標(biāo)識符使用。(1)系統(tǒng)定義標(biāo)識符①關(guān)鍵字②預(yù)定義標(biāo)識符

系統(tǒng)定義標(biāo)識符是指具有固定名字和特定含義的標(biāo)識符,如前面程序中看到的int、float、double、printf等。系統(tǒng)定義標(biāo)識符又可以進一步分為關(guān)鍵字和預(yù)定義標(biāo)識符兩種類型。

:是具有特定含義的標(biāo)識符,包括系統(tǒng)標(biāo)準(zhǔn)庫函數(shù)名和編譯預(yù)處理命令等。例如:printf、scanf、define和include等都是預(yù)定義標(biāo)識符。(2)用戶定義標(biāo)識符

用戶定義標(biāo)識符用于對用戶使用的變量、數(shù)組和函數(shù)等操作對象進行命名。例如:將兩個變量命名為a和b,將一個數(shù)組命名為student,將一個函數(shù)命名為max等。二、常量與變量

在計算機處理的程序中,我們不免經(jīng)常與數(shù)據(jù)打交道,根據(jù)數(shù)據(jù)的值是固定的,還是可變的,我們將數(shù)據(jù)分為兩大類:常量和變量。1、常量→定義:程序運行時其值不能改變的量(即常數(shù))例如:5000,3,0.03→

分類:符號常量和直接常量

(1)符號常量:用標(biāo)識符代表常量定義格式:#define

符號常量常量一般用大寫字母是宏定義預(yù)處理命令,不是C語句(2)直接常量:整型常量實型常量字符型常量字符串常量【例1-1】

符號常量使用#definePRICE30intmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);return0;}程序運行結(jié)果:total=300注意:⑴符號常量使常量數(shù)據(jù)意義明確。⑵符號常量使程序易于閱讀和修改。#define符號常量的原理使用#define定義的符號常量,相當(dāng)于為一個常量數(shù)據(jù)取了一個名字,當(dāng)編譯器開始編譯包含符號常量的C程序時,它將#define定義的實際常量數(shù)據(jù)替換這個符號常量,再編譯。常量的內(nèi)存表示常量是不占據(jù)任何內(nèi)存單元的,它是程序可執(zhí)行指令的一部分,處在代碼區(qū)中,運行時不可能改變。P12頁2、變量

在程序運行過程中其值可以改變的量稱為變量。變量有整型變量、實型變量、字符變量等。程序中的變量由用戶標(biāo)識符來表示,在C語言中,所有變量必須遵循“先定義,后使用”的原則。變量的定義一般放在函數(shù)體的開頭,即聲明部分。1、編譯系統(tǒng)會根據(jù)定義為變量分配內(nèi)存空間,分配空間的大小與數(shù)據(jù)類型有關(guān)。2、編譯系統(tǒng)可以根據(jù)變量的類型檢查對該變量的運算是否合法。2、變量變量定義語句的形式為:類型說明符變量名表;即:類型說明符變量名1,變量名2,…;其中:類型說明符由關(guān)鍵字表示,不同的關(guān)鍵字表示不同的數(shù)據(jù)類型,變量名是用戶標(biāo)識符,由用戶命名。

通常,定義了一個變量而未賦初值時,一般變量中存放的是隨機值。因此,為使定義的變量有一確切的數(shù)值,需給定義的變量賦一初值。注意:一個變量代表著內(nèi)存中一個具體的存儲單元,用變量名來標(biāo)識。存儲單元中存放的數(shù)據(jù)稱為變量的值,變量的值可以通過賦值的方法獲得和改變。一定要區(qū)分開變量名和變量值這兩個不同的概念。三、基本數(shù)據(jù)類型數(shù)組類型結(jié)構(gòu)體類型聯(lián)合體類型枚舉類型整型字符型實型(浮點型)空類型單精度型雙精度型基本類型構(gòu)造類型C數(shù)據(jù)類型本任務(wù)討論基本類型:整型、字符型、實型指針類型1、整型(1)整型常量在整常量后加字母u或U,認(rèn)為它是無符號整型常量在整常量后加字母l或L,認(rèn)為它是longint型常量(可以加lu,表示unsignedlong常量整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型→表示形式:十進制整數(shù):由數(shù)字0~9和正負(fù)號表示.如123、-456,0

八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123、011

十六進制整數(shù):由0x開頭,后跟0~9,a~f或A~F表示.如0x123、0xff例如:0123=()100x123=()100xff=()108329125500x0x(2)整型變量整型變量的數(shù)據(jù)類型根據(jù)存儲空間的大小分為:⑴短整型shortint或short⑵基本型int

⑶長整型longint或

long

另外,整型變量還有指示的修飾符signed或unsigned,也即整型數(shù)據(jù)有正數(shù)/負(fù)數(shù)、無符號數(shù)之分.整型變量定義的語法:類型說明符變量名標(biāo)識符1,變量名標(biāo)識符2,……;1、整型例如:inta,b,c;longx,y;unsigned

p,q【例1-2】整型變量的定義與使用#include<stdio.h>voidmain(){shorta=-10;unsignedshortu=-10;longL=180;printf("a=%d,u=%u,L=%ld\n",a,u,L);return0;}shortunsignedlongduld帶符號的十進制格式輸出不帶符號的十進制格式輸出帶符號的長整型十進制格式輸出短整型,分配2字節(jié)無符號短整型,分配2字節(jié)長整型,分配4字節(jié)程序運行結(jié)果:a=-10,u=65526,L=180P17頁short【例1-3】整型數(shù)據(jù)的溢出#include<stdio.h>intmain(){shortinta;a=32767;printf("%d",a);a=a+2;printf("%d\n",a);return0;}程序運行結(jié)果:32767,-32767shortint短整型,分配2字節(jié)12345678910111213141516011111111111111132767:10+1000000000000001-32767P17頁例如:E-51.2E-3.52、實型(1)實型常量

實型常量數(shù)據(jù)(浮點數(shù))在寫作時可以有兩種表示方法:①十進制小數(shù)形式:由數(shù)字和小數(shù)點組成(必須有小數(shù)點)。例如:0.1234,1234.0,0.0②

指數(shù)形式:使用e或E代表10的指數(shù),“E”前必須有數(shù)字(有效數(shù)據(jù));“E”后為指數(shù)且必須為整數(shù)。0.1234×1001.23×1040.1234e0,1.23E4,,2、實型(2)實型變量float(單精度):占4字節(jié),提供7位有效數(shù)字double(雙精度):占8字節(jié),提供15位有效數(shù)字實型變量的語法:類型說明符變量名例如:floatx,y;doublea,b,c;單精度實型,每個變量分配4字節(jié)雙精度實型,每個變量分配8字節(jié)實型數(shù)據(jù)在內(nèi)存以指數(shù)形式存儲:+或-例如:floata=3.14159;內(nèi)存形式:小數(shù)數(shù)符小數(shù)部分指數(shù)部分+或-指數(shù)數(shù)符.3141591【例1-4】實型數(shù)據(jù)的舍入誤差#include<stdio.h>intmain(){

floata,b;a=123456.789e5;b=a+20;printf("%f\n",a);printf("%f\n",b);return0;}單精度實型,有效值位數(shù)為6~7位123456789001234567程序運行結(jié)果:12345678848.00000012345678848.0000008848.0000008848.000000有效值位數(shù)有效值位數(shù)??【例1-5】實型數(shù)據(jù)的有效值位數(shù)#include<stdio.h>intmain(){floata;doubleb;a=33333.33333;b=33333.33333333333333;printf("%f\n",a);printf("%lf\n",b);return0;}程序運行結(jié)果:33333.33203133333.3333332031有效值位數(shù)有效值位數(shù)??單精度實型,有效值位數(shù)為6~7位雙精度實型,有效值位數(shù)為15~16位33333.3333333.333333333333、字符型(1)字符型常量轉(zhuǎn)義字符含義\n\r\'\ddd\t\b\f\xhh轉(zhuǎn)義字符含義換行回車單引號1~3位8進制數(shù)代表的字符水平制表退格換頁1~2位16進制數(shù)代表的字符表1-4常用的轉(zhuǎn)義字符及其含義:\"雙引號反斜線\\轉(zhuǎn)義字符:反斜線后面跟一個字符或一個代碼值表示表示形式:用單引號括起來的單個普通字符或轉(zhuǎn)義字符。字符常量的值:該字符的ASCII碼值。【例1-6】轉(zhuǎn)義字符的使用#include<stdio.h>intmain(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");return0;}ABCIsay:"Howareyou?"\CProgram\Turbo'C'程序運行結(jié)果:3、字符型(2)字符型變量

字符型變量的數(shù)據(jù)類型為char,占1字節(jié)。字符型變量的分類:字符型變量還有符號指示的修飾符signed或unsigned,也即字符型數(shù)據(jù)有正數(shù)/負(fù)數(shù)、無符號正數(shù)之分。

字符型變量的數(shù)值范圍:

unsignedchar

的數(shù)值范圍:0—255char的數(shù)值范圍:-128—+127注意:字符變量存放的是字符ASCII碼【例1-7】向字符變量賦以整數(shù)#include<stdio.h>intmain(){chara,b;a=115;b=116;printf("字符型變量字符型輸出:%c,%c\n",a,b);printf("字符型變量的整型輸出:%d,%d\n",a,b);return0;}字符型變量字符型輸出:s,t字符型變量的整型輸出:115,116程序運行結(jié)果:【例1-8】字符類型與整型間的轉(zhuǎn)換#include<stdio.h>intmain(){chara,b;a='s';b='t';printf("初始小寫字符:%c,%c\n",a,b);printf("初始字符的ASCII碼值:%d,%d\n",a,b);a=a-32;b=b-32;printf("轉(zhuǎn)換后的大寫字符:%c,%c\n",a,b);printf("轉(zhuǎn)換后字符的ASCII碼值:%d,%d\n",a,b);return0;}初始小寫字符:s,t初始字符的ASCII碼值:115,116轉(zhuǎn)換后的大寫字符:S,T轉(zhuǎn)換后字符的ASCII碼值:83,84程序運行結(jié)果:例:charch;ch="A";(3)字符串常量→表示形式:用雙引號("")括起來的字符序列→存儲規(guī)則:每個字符串尾自動加一個'\0'作為字符串結(jié)束的標(biāo)志→字符常量與字符串常量的不同:hello\0例字符串"hello"在內(nèi)存中aa\0例'a'"a"例空串""\0注意:沒有字符串變量,字符串用字符數(shù)組存放!例:charch;ch='A';四、運算符與表達式

變量用來存放數(shù)據(jù),運算符則用來處理數(shù)據(jù)。所謂運算符就是指運算的符號,例如加運算符(+)、乘運算符(*)、取地址運算符(&)等。表達式與運算符密不可分,它由運算符與操作數(shù)組合而成,并由運算符指定對操作數(shù)要進行的運算,根據(jù)運算符需要參與的操作數(shù)的個數(shù)分為:單目運算符、雙目運算符和三目運算符,一個表達式的運算結(jié)果是一個值。C語言提供的運算符有以下幾種:算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符、條件運算符、賦值運算符、逗號運算符、sizeof運算符及其它運算符。1、算數(shù)運算符與算術(shù)表達式(1)基本的算術(shù)運算符及算數(shù)表達式①基本的算術(shù)運算符C語言中提供的基本的算數(shù)運算符包括:加(+)、減(-)、乘(*)、除(/)和求余(%)。如表1-5所示。

1、算數(shù)運算符與算術(shù)表達式(1)基本的算術(shù)運算符及算數(shù)表達式②算術(shù)表達式用算術(shù)運算符連接而成的式子稱為算術(shù)表達式?!纠?-9】基本算數(shù)運算。#include<stdio.h>intmain(){unsignedshortu=65500;u=u+50;printf("u=%u\n",u);return0;}u=14程序運行結(jié)果:程序說明:P24注意:當(dāng)算數(shù)運算符兩邊的操作數(shù)是相同的數(shù)據(jù)類型的表達式時,運算的結(jié)果將保持原來的數(shù)據(jù)類型。因此,5/2的值是2,不是2.5。因為表達式5/2是整型表達式。%不能用于實型數(shù)據(jù),2.5%2是非法表達式。算術(shù)表達式的結(jié)果應(yīng)該不超過其所能表示的數(shù)的范圍。1、算數(shù)運算符與算術(shù)表達式(2)取反運算符和自增自減運算符C語言中,減號(-)又是一個取反運算符,在此之外C語言還提供了另外兩個用于算數(shù)運算的單目運算符:++(自增)和-

-(自減)。++的作用是使變量的值自己增1,而-

-的作用是使變量的值自己減1。假定變量value已預(yù)定義:intvalue=5;如表1-6所示1、算數(shù)運算符與算術(shù)表達式(2)取反運算符和自增自減運算符

由此可見,自增和自減運算符可在變量名前,也可在變量名后,即可以用于前綴和后綴的形式,但含義并不相同。對于前綴的形式,變量先作自增或自減運算,然后將運算結(jié)果用于表達式中;對于后綴的形式,變量的值先在表達式中參與運算,然后再作自增或自減運算。1、算數(shù)運算符與算術(shù)表達式(2)取反運算符和自增自減運算符【例1-10】自增自減運算。#include<stdio.h>intmain(){inti=3,a;a=20-i++;printf("a=%d,i=%d\n",a,i);b=++i+2;printf("b=%d,i=%d\n",b,i);return0;}a=17,i=4b=7,i=5程序運行結(jié)果:說明:++運算符只能用于變量,不能用于常量和表達式,因為++和--蘊含了賦值操作。兩個+和-之間不能有空格作為前綴和后綴的區(qū)別2、賦值運算符與賦值表達式C語言中,“=”被稱為賦值運算符,其含義是將運算符右邊表達式的值送到左邊變量名所代表的存儲單元內(nèi)。其簡單形式是:變量=表達式

這種形式的整個表達式稱為賦值表達式。執(zhí)行賦值表達式時,一般首先計算右邊表達式的值,然后賦給左邊變量。在使用賦值表達式時應(yīng)注意以下幾點。2、賦值運算符與賦值表達式(1)“=”左邊必須是變量名或者是對應(yīng)某特定內(nèi)存單元的表達式。(2)C語言允許在一個表達式中對多個變量連續(xù)賦值。(3)賦值運算符的優(yōu)先級很低,僅高于逗號運算符。(4)賦值表達式的值就是“=”右邊表達式的值。2、賦值運算符與賦值表達式【例1-11】賦值運算。#include<stdio.h>intmain(){inta=38,b=6,c;floatf=4;c=a/f-bprintf("c=%d",c);return0;}c=3程序運行結(jié)果:

在這個賦值語句中,右邊的表達式的類型是double,而c是int型,所以賦值執(zhí)行后結(jié)果的類型是int,即對double型的值截去小數(shù)部分之后的整數(shù)部分。

注意這里是截去,不是四舍五入。3、關(guān)系運算符與關(guān)系表達式

在程序中經(jīng)常需要比較兩個量的大小關(guān)系,以決定程序下一步的工作。比較兩個量的運算符稱為關(guān)系運算符。

C提供6種關(guān)系運算符,用于數(shù)值之間的比較,表達式的值用整型量1(表示true),0(表示false),見表1-7。3、關(guān)系運算符與關(guān)系表達式說明:第一:<=和>=運算符不能寫成=<和=>,=<和=>是無效的運算符。第二:字符串不應(yīng)當(dāng)用關(guān)系運算符比較,因為被比較的不是字符串的內(nèi)容本身,而是字符串的地址?!纠?-12】關(guān)系運算。#include<stdio.h>intmain(){intn;floata,b,c;a=7.2;b=6.5;c=8.9;n=a>b>c;printf("n=%d,a=%f,b=%f,c=%f\n",n,a,b,c);return0;}n=0,a=7.200000,b=6.500000,c=8.900000程序運行結(jié)果:/*對變量a,b,c分別賦值為7.2、6.5和8.9;*//*表達式n=a>b>c等價于n=((a>b)>c)。*/4、邏輯運算符與邏輯表達式邏輯運算符

&&||!邏輯表達式用邏輯運算符將運算對象連接成的式子例如:0&&'b'a&&b||c&&da||b-5||c/4!x+y>=z邏輯運算符的優(yōu)先級和結(jié)合性:!是單目運算符,右結(jié)合,高于算術(shù)運算符&&和||是雙目運算符,左結(jié)合,高于賦值運算符,低于關(guān)系運算符。4、邏輯運算符與邏輯表達式邏輯運算符的運算規(guī)則從左到右依次進行邏輯計算運算對象為非0表示邏輯真運算對象為0

表示邏輯假邏輯運算的結(jié)果為0

或1運算對象邏輯運算結(jié)果aba&&ba||b!a非0非0110非000100非0011000014、邏輯運算符與邏輯表達式運算按照從左至右的順序進行,一旦能夠確定邏輯表達式的值,就立即結(jié)束運算——邏輯運算的短路性質(zhì)例如設(shè):a=1,b=0,c=-2a&&b&&c(a++)||++b&&--c為0,運算終止,表達式值為0為非0,運算終止,表達式值為1且a為2,b為0,c為-2(b,c保持原值)4、邏輯運算符與邏輯表達式【例1-13】邏輯運算。#include<stdio.h>intmain(){inta=5,b=0,c=-2,m;m=a++&&b++&&c++;printf("a=%d,b=%d,c=%d,m=%d\n",a,b,c,m);m=a++||b++||c++;printf("a=%d,b=%d,c=%d,m=%d\n",a,b,c,m);m=(a-7)||b--&&c++;printf("a=%d,b=%d,c=%d,m=%d\n",a,b,c,m);return0;}a=6,b=1,c=-2,m=0a=7,b=1,c=-2,m=1a=7,b=0,c=-1,m=1程序運行結(jié)果:/*為0,運算終止,表達式值為0*//*為非0,運算終止,表達式值為1*//*為0,運算繼續(xù)*//*為非0,運算終止*/~&^|<<>>5、位運算符與位表達式單目位運算符的運算對象只能是整型數(shù)據(jù)或字符型數(shù)據(jù),不能是實型數(shù)據(jù)運算對象一律按二進制補碼參加運算,并按位進行運算位運算的結(jié)果是一個整型數(shù)據(jù)位邏輯運算符移位運算符低于單目、算術(shù)運算符,高于其他運算符低于單目、算術(shù)和關(guān)系運算符,高于其他運算符

位運算符5、位運算符與位表達式位邏輯運算符運算規(guī)則

假設(shè)ai和bi均是一個二進制位(bit)運算對象邏輯運算結(jié)果aibiai&biai|biai^bi~ai0000010101111001101111000000000000001111&00000000000001000000000000000100即:a&b的值是45、位運算符與位表達式【例1-14】邏輯位運算#include<stdio.h>intmain(){inta=15,b=4,m;m=a&b;printf("a=%d,b=%d,,m=%d\n",a,b,m);m=a|b;printf("a=%d,b=%d,m=%d\n",a,b,m);m=a^b;printf("a=%d,b=%d,m=%d\n",a,b,m);return0;}0000000000001111

|00000000000001000000000000001111即:a|b的值是150000000000001111^00000000000001000000000000001011即:a^b的值是11a=15,b=4,m=4a=15,b=4,m=15a=15,b=4,m=11程序運行結(jié)果:5、位運算符與位表達式位移位運算符運算規(guī)則a<<b將a的值(二進制編碼)左移b位,右補0a>>b將a的值(二進制編碼)右移b位,左補0或1【例1-15】邏輯移位運算#include<stdio.h>intmain(){shorta=5,b=10,m;m=a<<2;printf("a=%d,b=%d,m=%d\n",a,b,m);m=b>>2;printf("a=%d,b=%d,m=%d\n",a,b,m);return0;}161514131211109876543210000000000000101a00a=5,b=10,m=20程序運行結(jié)果:5、位運算符與位表達式位移位運算符運算規(guī)則a<<b將a的值(二進制編碼)左移b位,右補0a>>b將a的值(二進制編碼)右移b位,左補0或1【例1-15】邏輯移位運算#include<stdio.h>intmain(){shorta=5,b=10,m;m=a<<2;printf("a=%d,b=%d,m=%d\n",a,b,m);m=b>>2;printf("a=%d,b=%d,m=%d\n",a,b,m);return0;}16151413121110987654321000000000000100b100a=5,b=10,m=20a=5,b=10,m=2程序運行結(jié)果:6、條件運算符與條件表達式條件運算符:?:條件表達式的一般形式表達式1?表達式2:表達式3例如:m<n?x:a+3a++>=10&&b-->20?a:bx=3+a>5?100:200C語言中唯一的三目運算符,要正確區(qū)分用?和:分隔的表達式涉及條件運算符的優(yōu)先級與結(jié)合性6、條件運算符與條件表達式條件運算符優(yōu)先級高于賦值、逗號運算符,低于其他運算符例如:⑴m<n?x:a+3⑵a++>=10&&b-->20?a:b⑶x=3+a>5?100:200等價于:(m<n)?(x):(a+3)等價于:(a++>=10&&b-->20)

?a:b等價于:x=((3+a>5)

?100:200)6、條件運算符與條件表達式條件運算符具有右結(jié)合性當(dāng)一個表達式中出現(xiàn)多個條件運算符時,應(yīng)該將位于最右邊的問號與離它最近的冒號配對,并按這一原則正確區(qū)分各條件運算符的運算對象。例如:w<x?x+w:(x<y?x:y)(w<x?x+w:x<y)?x:yw<x?x+w:x<y?x:y6、條件運算符與條件表達式【例1-16】條件表達式#include<stdio.h>intmain(){charch='a';ch=ch>='a'&&ch<='z'?ch-'a'+'A':ch;printf("%c\n",ch);return0;}A程序運行結(jié)果:7、逗號運算符與逗號表達式逗號運算符形成逗號表達式的一般形式

表達式1,表達式2,……,表達式n

逗號表達式的值從左向右,依次對表達式求值,最后得到表達式n

的值就是逗號表達式的值例如:⑴a=5,a++,a*3⑵t=1,t+5,t++⑶x=(a=3*5,

a*4

)/*表達式值為18,且a=6*//*表達式值為1,且t=2*//*

賦值表達式的值為60,且x=60,a=15*/7、逗號運算符與逗號表達式【例1-17】逗號表達式#include<stdio.h>intmain(){inta=3,b=5,c=7,x,y;y=(x=a+b,++b);printf("x=%d,y=%d\n",x,y);return0;}x=8,y=6程序運行結(jié)果:8、其它運算符及其運算(1)sizeof運算符為單目運算符運算對象是變量名或數(shù)據(jù)類型標(biāo)識符及數(shù)據(jù)常量等運算結(jié)果為該對象的長度#include<stdio.h>intmain(){inta=5;doublex;printf("%d%d",sizeof(int),sizeof(a));printf("%d%d",sizeof(double),sizeof(x));printf("%d%d\n",sizeof(float),sizeof(char));return0;}448841程序運行結(jié)果:8、其它運算符及其運算(2)復(fù)合的賦值運算符

復(fù)合的賦值運算符,又稱為帶有運算的賦值運算符,也叫賦值縮寫。例如:i=i+j;可表示為i+=j;這里+=是復(fù)合賦值運算符。+=加賦值-=減賦值*=乘賦值/=除賦值%=求余賦值&=按位與賦值|=按位或賦值^=按位異或賦值<<=左移位賦值>>=右移位賦值注意:x*=y+8等價于x=x*(y+8),不等價于x=x*y+8。z&=y-x等價于z=z&(y-x),而不等價于z=z&y-x。五、運算符的優(yōu)先級和結(jié)合性

運用C語言運算符進行運算時,需要掌握運算符的優(yōu)先級和結(jié)合性。

優(yōu)先級:運算符運算的先后順序。

結(jié)合性:運算符運算的方向。六、數(shù)據(jù)的類型轉(zhuǎn)換C語言表達式中可以將不同類型的數(shù)據(jù),按一定的運算規(guī)則進行計算,運算中這些數(shù)據(jù)將會作某種轉(zhuǎn)換,把它們轉(zhuǎn)換成同一類型的數(shù)據(jù),然后再進行運算。這種轉(zhuǎn)換的方法包含兩種:自動轉(zhuǎn)換和強制轉(zhuǎn)換。1、自動轉(zhuǎn)換

就是系統(tǒng)根據(jù)規(guī)則自動將兩個不同數(shù)據(jù)類型的運算對象轉(zhuǎn)換成同一數(shù)據(jù)類型的過程。轉(zhuǎn)換原則:自動將精度低、表示范圍小的運算對象類型向精度高、表示范圍大的運算對象類型轉(zhuǎn)換short,chardoublelongfloatunsignedint高精度低精度

自動轉(zhuǎn)換分為橫向轉(zhuǎn)換和縱向轉(zhuǎn)換;橫向轉(zhuǎn)換無需任何條件,只要參與運算即會發(fā)生轉(zhuǎn)換;如:char→int

縱向轉(zhuǎn)換需要在不同類型之間進行運算時才會發(fā)生轉(zhuǎn)換。如:int→double1、自動轉(zhuǎn)換下面我們用前面的例子來說明一下這種轉(zhuǎn)換。unsignedu=1000;doubled=6.55;floatf=4.5;15+u-d+'9'*2/tunsignedunsigneddoubledoubleintintdoubledoubledoubledouble2、強制轉(zhuǎn)換強制轉(zhuǎn)換的一般形式

(類型名)表達式例如:

(int)('b'+3*x)%31/(float)a+6(float)

22/5與(float)

(22/5)

不同錯誤的類型轉(zhuǎn)換:(int)b=a+5b=int(3*a)注意:強制轉(zhuǎn)換只是中間代換量的提取轉(zhuǎn)換,而不能真正改變某變量的類型.2、強制轉(zhuǎn)換【例1-18】數(shù)據(jù)的強制類型轉(zhuǎn)換#include<stdio.h>intmain(){floatx=14.5;inti;i=(int)x%4printf("i=%d,x=%f\n",i,x)

;return0;}i=2,x=14.500000程序運行結(jié)果:#include<stdio.h>intmain(){floatC,F;F=75;C=5*(F-32)/9;printf("華氏溫度F=%f,對應(yīng)的攝氏溫度C=%f\n",F,C);return0;}1.2.3知識擴展:華氏溫度與攝氏溫度的轉(zhuǎn)換華氏溫度F=75.000000,對應(yīng)的攝氏溫度C=23.888889程序運行結(jié)果:

你要去國外旅游,當(dāng)?shù)貧鉁厥怯萌A氏計量溫度。如果天氣預(yù)報告知當(dāng)日氣溫是75華氏度,請通過程序進行溫度的轉(zhuǎn)換,計算并輸出對應(yīng)的攝氏溫度。轉(zhuǎn)換關(guān)系為:其中C代表攝氏溫度,F(xiàn)代表華氏溫度。任務(wù)3存款的輸入與利息的輸出存款的輸入與利息的輸出1.3.1問題情景及其實現(xiàn)#include<stdio.h>#include<math.h>intmain(){doubleIrate=0.03;doubleDmoney=5000,Dinterest;intterm;printf("存款金額為:");scanf("",&Dmoney);printf("存款期限為:");scanf("",&term);Dinterest=Dmoney*pow((1+Irate),term)-Dmoney;printf(“存款金額為的年存款利息是:元\n",Dmoney,term,Dinterest);return0;}

假設(shè)XXX銀行1年定期存款的利率為3%,,并已知存款期為n年,存款本金為x元,請計算n年后可以得到的本利總和是多少。存款金額為:存款期限為:存款金額為6000.0的4年存款利息是:753.05元程序運行結(jié)果:%lf%d%.1lf%d%.2lf60004↙↙C程序數(shù)據(jù)的輸出C程序數(shù)據(jù)的輸入1.3.2相關(guān)知識(1)printf函數(shù)調(diào)用的一般形式為:

printf("格式控制字符串",表達式1,表達式2,……,表達式n);一、C程序數(shù)據(jù)的輸出1、printf()函數(shù)

其中“格式控制字符串”用于指定對應(yīng)表達式值的輸出格式。格式控制串可由格式字符串和非格式字符串兩種組成。

格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。如:

非格式字符串在輸出時原樣顯示,在顯示中起提示作用。

表達式1,表達式2,……,表達式n中給出了各個輸出項,要求格式字符串和各輸出項在數(shù)量和類型上應(yīng)該一一對應(yīng)。一、C程序數(shù)據(jù)的輸出1、printf()函數(shù)(2)printf函數(shù)中的格式字符串的一般形式為:

%[標(biāo)志][輸出最小寬度][.精度][長度]類型其中方括號[]中的項為可選項類型:類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義如表1-12所示。一、C程序數(shù)據(jù)的輸出1、printf()函數(shù)(2)printf函數(shù)中的格式字符串的一般形式為:

%[標(biāo)志][輸出最小寬度][.精度][長度]類型其中方括號[]中的項為可選項標(biāo)志:標(biāo)志字符為-、+、#、空格四種,其意義下表1-13所示:一、C程序數(shù)據(jù)的輸出1、printf()函數(shù)(2)printf函數(shù)中的格式字符串的一般形式為:

%[標(biāo)志][輸出最小寬度][.精度][長度]類型輸出最小寬度:用十進制整數(shù)來表示輸出的最少位數(shù)。若實際位數(shù)多于定義的寬度,則按實際位數(shù)輸出,若實際位數(shù)少于定義的寬度則補以空格精度:精度格式符以“.”開頭,后跟十進制整數(shù)。本項的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個數(shù);若實際位數(shù)大于所定義的精度數(shù),則按規(guī)定截去超過的部分。長度:長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。一、C程序數(shù)據(jù)的輸出1、printf()函數(shù)【例1-20】實型數(shù)據(jù)的輸出。#include<stdio.h>intmain(){inta=15;floatb=123.1234567;doublec=12345678.1234567;chard='p';printf("a=%d,%5d,%o,%x\n",a,a,a,a);printf("b=%f,%lf,%5.4f,%e\n",b,b,b,b);printf("c=%lf,%f,%8.4lf\n",c,c,c);printf("d=%c,%8c\n",d,d);return0;}a=15,15,17,fb=123.123459,123.123459,123.1235,1.231235e+002c=12345678.123457,12345678.123457,12345678.1235d=p,p程序運行結(jié)果:__________5858一、C程序數(shù)據(jù)的輸出1、printf()函數(shù)【例1-21】輸出函數(shù)的運算方向。#include<stdio.h>intmain(){inti=8;printf("%d,%d,%d,%d\n",++i,--i,i++,i--);return0;}#include<stdio.h>intmain(){inti=8;printf("%d,",++i);printf("%d,",--i);printf("%d,",i++);printf("%d,",i--);return0;}8,7,8,89,8,8,9一、C程序數(shù)據(jù)的輸出2、putchar()函數(shù)putchar函數(shù)調(diào)用的一般形式為:

putchar(ch);/*ch是字符型變量或整型變量*/putchar函數(shù)的作用是向終端輸出一個字符。它只帶一個參數(shù),這個參數(shù)就是要輸出的字符?!纠?-22】putchar函數(shù)。#include<stdio.h>intmain(){chara,b,c;

a='B';b='O';c='Y';

putchar(a);putchar(b);putchar(c);return0;}BOY程序運行結(jié)果:一、C程序數(shù)據(jù)的輸出3、puts()函數(shù)puts函數(shù)調(diào)用的一般形式為:

puts(s);/*其中s為字符串常量、字符數(shù)組名或字符串指針*/puts()函數(shù)的作用是向標(biāo)準(zhǔn)輸出設(shè)備(屏幕)寫字符串并換行?!纠?-23】puts函數(shù)。#include<stdio.h>intmain(){puts("Hello,World!");return0;}Hello,World!程序運行結(jié)果:二、C程序數(shù)據(jù)的輸入(1)scanf函數(shù)調(diào)用的一般形式為:

scanf("格式控制字符串",變量1地址,變量2地址,……,變量n地址);1、scanf()函數(shù)

其中控制字符串規(guī)定數(shù)據(jù)的輸入格式,必須用雙引號括起,其內(nèi)容是由格式說明和非格式字符兩部分組成。

格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸入數(shù)據(jù)的類型、形式、長度等。

非格式字符在輸入數(shù)據(jù)時原樣鍵入,在輸入中起提示作用。變量1地址,變量2地址,……,變量n地址由一個或多個變量地址組成,當(dāng)變量地址有多個時,各變量地址之間用逗號分隔。二、C程序數(shù)據(jù)的輸入1、scanf()函數(shù)(2)scanf函數(shù)中的格式字符串的一般形式為:%[標(biāo)志][寬度][長度]類型類型:類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義如下表1-14所示:二、C程序數(shù)據(jù)的輸入1、scanf()函數(shù)(2)scanf函數(shù)中的格式字符串的一般形式為:%[標(biāo)志][寬度][長度]類型

標(biāo)志:標(biāo)志字符為*,其意義下表1-15所示:二、C程序數(shù)據(jù)的輸入1、scanf()函數(shù)(2)scanf函數(shù)中的格式字符串的一般形式為:%[標(biāo)志][寬度][長度]類型寬度:用一個整型常量表示,寬度用來限制輸入整數(shù)或字符串長度,表示輸入數(shù)據(jù)所占的域?qū)挾?。長度:長度格式符l,用來輸入長整型數(shù)據(jù)和double型數(shù)據(jù)。二、C程序數(shù)據(jù)的輸入1、scanf()函數(shù)【例1-25】整型數(shù)據(jù)的輸入。#include<stdio.h>intmain(){inta,b;doublec;scanf("%d%*d%2d%lf",&a,&b,&c);printf("a=%d,b=%d,c=%lf\n",a,b,c);return0;}88899007.5a=88,b=90,c=7.500000程序運行結(jié)果:↙二、C程序數(shù)據(jù)的輸入2、getchar()函數(shù)getchar函數(shù)調(diào)用的一般形式為:

getchar();getchar函數(shù)的作用是從鍵盤輸入的字符中獲取單個字符。它沒有參數(shù)。【例1-26】getchar函數(shù)。#include<stdio.h>intmain(){chara;

a=getchar();

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論