數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第1頁(yè)
數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第2頁(yè)
數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第3頁(yè)
數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第4頁(yè)
數(shù)據(jù)類型、運(yùn)算符與表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩105頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)類型、運(yùn)算符與表達(dá)式第1頁(yè),共110頁(yè),2023年,2月20日,星期五本章主要知識(shí)點(diǎn)

基本的數(shù)據(jù)類型數(shù)據(jù)類型轉(zhuǎn)換常量和變量C語(yǔ)言各種運(yùn)算符和表達(dá)式第2頁(yè),共110頁(yè),2023年,2月20日,星期五基本數(shù)據(jù)類型深入理解變量第9次課第3頁(yè),共110頁(yè),2023年,2月20日,星期五C語(yǔ)言的數(shù)據(jù)類型單精度實(shí)型(float)雙精度實(shí)型(double)整型(int)字符型(char)枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型實(shí)型基本類型構(gòu)造類型空類型(void)指針類型數(shù)據(jù)類型第4頁(yè),共110頁(yè),2023年,2月20日,星期五任務(wù)提出:eg2_1:有如下任務(wù),當(dāng)某學(xué)生輸入自己的學(xué)號(hào)和姓名及兩門課程的成績(jī)后,能夠在控制臺(tái)看到自己的總成績(jī)。試編程解決該任務(wù)。第5頁(yè),共110頁(yè),2023年,2月20日,星期五任務(wù)分析:eg2_1程序中涉及到哪些類型的常量或變量?需要調(diào)用哪些標(biāo)準(zhǔn)庫(kù)函數(shù)?第6頁(yè),共110頁(yè),2023年,2月20日,星期五

任務(wù)解決:/*功能:計(jì)算某位學(xué)生的總分*/#include<stdio.h>main(){ charno[10],name[10]; intenglish_score,c_score; printf("請(qǐng)輸入你的學(xué)號(hào):"); scanf("%s",no); printf("請(qǐng)輸入你的姓名:"); scanf("%s",name); printf("請(qǐng)輸入你的大學(xué)英語(yǔ)成績(jī):"); scanf("%d",&english_score); printf("請(qǐng)輸入你的C語(yǔ)言成績(jī):"); scanf("%d",&c_score); printf("你的總成績(jī)是:%d\n",english_score+c_score);}第7頁(yè),共110頁(yè),2023年,2月20日,星期五“數(shù)據(jù)類型”的意義:定義了數(shù)據(jù)占用的內(nèi)存空間大小定義了數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式?jīng)Q定了數(shù)據(jù)的運(yùn)算規(guī)則(自身的行為)為編譯器提供了檢查依據(jù)數(shù)據(jù)類型的意義數(shù)據(jù)類型是避免程序錯(cuò)誤的初級(jí)(基本)手段,不是全部手段;第8頁(yè),共110頁(yè),2023年,2月20日,星期五1.整型數(shù)據(jù)2.實(shí)型數(shù)據(jù)3.字符型數(shù)據(jù)數(shù)據(jù)的存儲(chǔ)格式、范圍第9頁(yè),共110頁(yè),2023年,2月20日,星期五整型數(shù)據(jù)分為一般整型(int)、短整型(short)和長(zhǎng)整型(long),并且每一種類型又分為帶符號(hào)(signed)和無(wú)符號(hào)(unsigned)兩種類型。整型數(shù)據(jù)的特性見下表:

數(shù)據(jù)類型名說(shuō)明VisualC++6.0環(huán)境TurboC2.0環(huán)境字節(jié)取值范圍字節(jié)取值范圍short[int]短整型2-32768~327672-32768~32767signedshort[int]帶符號(hào)短整型2-32768~327672-32768~32767unsignedshort[int]無(wú)符號(hào)短整型20~6553520~65535int整型4-2147483648~21474836472-32768~32767signed[int]帶符號(hào)整型4-2147483648~21474836472-32768~32767unsigned[int]無(wú)符號(hào)整型40~429496729520~65535long[int]長(zhǎng)整型4-2147483648~21474836474-2147483648~2147483647signedlong[int]帶符號(hào)長(zhǎng)整型4-2147483648~21474836474-2147483648~2147483647unsignedlong[int]無(wú)符號(hào)長(zhǎng)整型40~429496729540~4294967295整型數(shù)據(jù)分類及取值范圍第10頁(yè),共110頁(yè),2023年,2月20日,星期五e(cuò)g2_2:觀察以下程序的運(yùn)行結(jié)果。/*功能:觀察溢出*/#include<stdio.h>main(){ shortnum=32768; printf(“%d\n”,num);}運(yùn)行結(jié)果如下圖所示:整型數(shù)據(jù)的取值范圍實(shí)例第11頁(yè),共110頁(yè),2023年,2月20日,星期五實(shí)型數(shù)據(jù)分為單精度實(shí)型(float)、雙精度實(shí)型(double)和長(zhǎng)雙精度實(shí)型(longdouble)。具體情況見下表所示

數(shù)據(jù)類型名說(shuō)明VisualC++6.0環(huán)境TurboC2.0環(huán)境字節(jié)取值范圍有效數(shù)字字節(jié)取值范圍有效數(shù)字float單精度實(shí)型4-3.4×1038~3.4×10386~74-3.4×1038~3.4×10386~7double雙精度實(shí)型8-1.7×10308~1.7×1030815~168-1.7×10308~1.7×1030815~16longdouble長(zhǎng)雙精度實(shí)型815~1610-1.2×104932~1.2×10493218~191.7×10308~1.7×10308實(shí)型數(shù)據(jù)分類第12頁(yè),共110頁(yè),2023年,2月20日,星期五字符型數(shù)據(jù)分為一般字符型(char)、帶符號(hào)字符型(signedchar)和無(wú)符號(hào)字符型(unsignedchar)三種類型。具體情況見下表所示

數(shù)據(jù)類型名說(shuō)明字節(jié)取值范圍char字符型1-128~127signedchar帶符號(hào)字符型1-128~127unsignedchar無(wú)符號(hào)字符型10~255字符型數(shù)據(jù)分類

第13頁(yè),共110頁(yè),2023年,2月20日,星期五(1)數(shù)據(jù)類型:C語(yǔ)言的合法數(shù)據(jù)類型。如例中的int、short、char、float、double等。

(2)變量名表:變量名是C語(yǔ)言合法的標(biāo)識(shí)符。變量名表可以包含多個(gè)變量名,彼此之間使用逗號(hào)分開,表示同時(shí)定義若干個(gè)具有相同數(shù)據(jù)類型的變量,如:

floata,b;1.變量定義變量定義一般格式:數(shù)據(jù)類型變量名表;如:inta;對(duì)變量定義說(shuō)明如下:

變量是指在程序執(zhí)行過(guò)程中其值可以被改變的量。變量定義的實(shí)質(zhì)是按照變量說(shuō)明的數(shù)據(jù)類型為變量分配相應(yīng)空間的存儲(chǔ)單元,在該存儲(chǔ)單元中存放變量的值。

C語(yǔ)言中,變量使用時(shí)遵循“先定義,后使用”的原則。變量第14頁(yè),共110頁(yè),2023年,2月20日,星期五2.變量的命名

標(biāo)識(shí)符作用:用來(lái)標(biāo)識(shí)變量、常量、函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線大小寫敏感不能使用關(guān)鍵字長(zhǎng)度:最長(zhǎng)32個(gè)字符命名原則:見名知意不宜混淆如1與I,o與0例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b第15頁(yè),共110頁(yè),2023年,2月20日,星期五MemoryValue(5)Name(a)Type

(short)shorta=5;/*申請(qǐng)空間并初始化*/一個(gè)變量必然包含以下概念:名字(變量名)類型(變量占用空間)值(變量的內(nèi)容)地址(變量在內(nèi)存中所處的位置)字節(jié)Address3.變量的存儲(chǔ)模式第16頁(yè),共110頁(yè),2023年,2月20日,星期五/*eg2_3功能:計(jì)算兩個(gè)整數(shù)的和*/#include<stdio.h>main(){intnum1=2;intnum2,sum;num2=3;sum=num1+num2;printf("num1+num2=%4d\n",sum);}4.變量的初始化及賦值初始化賦值第17頁(yè),共110頁(yè),2023年,2月20日,星期五模仿練習(xí):ex2_1:有如下任務(wù),當(dāng)某學(xué)生輸入自己的學(xué)號(hào)和姓名及兩門課程的成績(jī)后,能夠在控制臺(tái)看到自己的平均成績(jī)。試編程解決該任務(wù)。第18頁(yè),共110頁(yè),2023年,2月20日,星期五討論并總結(jié)為什么要定義數(shù)據(jù)類型?不同數(shù)據(jù)類型的區(qū)別是什么?第19頁(yè),共110頁(yè),2023年,2月20日,星期五結(jié)論1——定義數(shù)據(jù)類型的作用定義了數(shù)據(jù)占用的內(nèi)存空間大小定義了數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式?jīng)Q定了數(shù)據(jù)的運(yùn)算規(guī)則(自身的行為)為編譯器提供了檢查依據(jù)第20頁(yè),共110頁(yè),2023年,2月20日,星期五結(jié)論2——不同數(shù)據(jù)類型的區(qū)別

內(nèi)存空間大小不同數(shù)據(jù)表示有效位數(shù)不同數(shù)據(jù)表示范圍不同對(duì)應(yīng)的運(yùn)算和操作不同第21頁(yè),共110頁(yè),2023年,2月20日,星期五第10次課常量的定義和使用認(rèn)識(shí)符號(hào)常量第22頁(yè),共110頁(yè),2023年,2月20日,星期五一般用大寫字母是宏定義預(yù)處理命令,不是C語(yǔ)句直接常量:整型常量請(qǐng)點(diǎn)擊:實(shí)型常量請(qǐng)點(diǎn)擊:字符常量請(qǐng)點(diǎn)擊:字符串常量請(qǐng)點(diǎn)擊:如#definePRICE30定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))分類:符號(hào)常量:用標(biāo)識(shí)符代表常量定義格式:#define

符號(hào)常量常量/*計(jì)算消費(fèi)總額*/#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}運(yùn)行結(jié)果:total=300常量/*eg2_4功能:計(jì)算并輸出圓周率的和差積商*/#definePI3.14#include<stdio.h>main(){printf("%f\t%f\t%f\t%f\n",PI+PI,PI-PI,PI*PI,PI/PI);}第23頁(yè),共110頁(yè),2023年,2月20日,星期五三種形式:十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號(hào)表示.如123,-456,0八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進(jìn)制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0Xff例12與12L例30000為int型

65536為longint型整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認(rèn)為它是longint

型常量問(wèn)題:0123=()100x123=()100Xff=()1083291255問(wèn)題:0123=()100x123=()100Xff=()10整型常量(整常數(shù))第24頁(yè),共110頁(yè),2023年,2月20日,星期五在C語(yǔ)言中,整型常量有十進(jìn)制、八進(jìn)制、十六進(jìn)制三種進(jìn)制表示方法,并且各種數(shù)制均可有正(+)負(fù)(-)之分,正數(shù)的“+”可省略。

/*eg2_5功能:輸出某整數(shù)的各種進(jìn)制值*/#defineNUM20#include<stdio.h>main(){printf("%d\t%o\t%x\n",NUM,NUM,NUM);}整型常量實(shí)例第25頁(yè),共110頁(yè),2023年,2月20日,星期五表示形式:十進(jìn)制數(shù)形式:(必須有小數(shù)點(diǎn))如0.123,.123,123.0,0.0,123.指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3,123E2,1.23e4,e-5,1.2E-3.5

實(shí)型常量的類型默認(rèn)double型在實(shí)型常量后加字母f或F,認(rèn)為它是float型實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù))第26頁(yè),共110頁(yè),2023年,2月20日,星期五第11次課課后習(xí)題錯(cuò)誤評(píng)講初步的調(diào)試技巧常量練習(xí)第27頁(yè),共110頁(yè),2023年,2月20日,星期五定義:用單引號(hào)括起來(lái)的單個(gè)普通字符或轉(zhuǎn)義字符.

字符常量的值:該字符的ASCII碼值<轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號(hào)3位8進(jìn)制數(shù)代表的字符水平制表退格換頁(yè)反斜線雙引號(hào)2位16進(jìn)制數(shù)代表的字符如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------()例:‘A’-------’\101’-------’\x41’--------65如‘A’——65,‘a(chǎn)’——97,

‘0’——48,‘\n’——10如‘a(chǎn)’‘A’‘?’‘\n’‘\101’轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示/*轉(zhuǎn)義字符舉例*/main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}運(yùn)行結(jié)果:屏幕顯示:=打印機(jī)輸出:¥字符常量28第28頁(yè),共110頁(yè),2023年,2月20日,星期五/*eg2_6功能:輸出某字符常量的值*/#include<stdio.h>main(){printf("%c\t%c\n",'a','A');printf("%d\t%d\n",'a','A');}字符型常量實(shí)例

第29頁(yè),共110頁(yè),2023年,2月20日,星期五字符常量與字符串常量不同定義:用雙引號(hào)(“”)括起來(lái)的字符序列存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè)‘\0’

作為字符串結(jié)束標(biāo)志hello\0例字符串“hello”在內(nèi)存中a

a\0例‘a(chǎn)’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;字符串常量第30頁(yè),共110頁(yè),2023年,2月20日,星期五模仿練習(xí)請(qǐng)找出一些常量中哪些是整數(shù)、字符、字符串。0x34f 0121010‘a(chǎn)1’‘\101’“”“a”07810‘\f’第31頁(yè),共110頁(yè),2023年,2月20日,星期五討論并總結(jié)使用符號(hào)常量的優(yōu)勢(shì)是什么?字符串常量的存儲(chǔ)特點(diǎn)?第32頁(yè),共110頁(yè),2023年,2月20日,星期五第12次課實(shí)踐練習(xí)第33頁(yè),共110頁(yè),2023年,2月20日,星期五作業(yè)——每人必做設(shè)圓半徑r=1.5,圓柱高h(yuǎn)=3,求圓周長(zhǎng)、圓面積。用scanf輸入數(shù)據(jù),輸出計(jì)算結(jié)果,輸出時(shí)要有文字說(shuō)明,取小數(shù)點(diǎn)后2位數(shù)字。輸入一個(gè)華氏溫度,要求輸出攝氏溫度,取2位小數(shù)。公式為:c=5/9(F-32)。輸入一名學(xué)生的三科成績(jī)(假設(shè)都是整型),請(qǐng)統(tǒng)計(jì)該學(xué)生的總分及平均分,并分析平均分的計(jì)算是否正確。第34頁(yè),共110頁(yè),2023年,2月20日,星期五第13次課數(shù)據(jù)類型間的轉(zhuǎn)換算術(shù)運(yùn)算符及表達(dá)式第35頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題引入1、如何輸出一個(gè)指定字母的ASCII碼值?2、如何正確輸出5/2的結(jié)果?第36頁(yè),共110頁(yè),2023年,2月20日,星期五

問(wèn)題1求解/*輸出制定字母的ASCII碼值*/#include<stdio.h>main(){ printf("%c\t%d",'a','a');}第37頁(yè),共110頁(yè),2023年,2月20日,星期五

問(wèn)題2求解/*輸出5除2的結(jié)果*/#include<stdio.h>main(){floatx=5.0;inty=2;floatz=x/y; printf("%f",z);}第38頁(yè),共110頁(yè),2023年,2月20日,星期五隱式轉(zhuǎn)換什么情況下發(fā)生運(yùn)算轉(zhuǎn)換------不同類型數(shù)據(jù)混合運(yùn)算時(shí)賦值轉(zhuǎn)換------把一個(gè)值賦給與其類型不同的變量時(shí)輸出轉(zhuǎn)換------輸出時(shí)轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換------實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換運(yùn)算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型不同類型數(shù)據(jù)間的轉(zhuǎn)換第39頁(yè),共110頁(yè),2023年,2月20日,星期五doublefloatlongunsignedintchar,short低高說(shuō)明:必定的轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換

charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例2inti;floatf;doubled;longl;例1第40頁(yè),共110頁(yè),2023年,2月20日,星期五模仿練習(xí)1.編寫一個(gè)打印任意字母ASCII碼值的程序。2.用強(qiáng)制轉(zhuǎn)換改寫問(wèn)題2。第41頁(yè),共110頁(yè),2023年,2月20日,星期五一般形式:(類型名)(表達(dá)式)例:(int)(x+y)(int)x+y(double)(3/2)(int)3.6

說(shuō)明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變

例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生精度損失問(wèn)題顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)第42頁(yè),共110頁(yè),2023年,2月20日,星期五討論并總結(jié)不同的數(shù)據(jù)類型進(jìn)行運(yùn)算,運(yùn)算規(guī)則是什么?第43頁(yè),共110頁(yè),2023年,2月20日,星期五分類名稱運(yùn)算符算術(shù)運(yùn)算符+、-、*、/、%、++、--關(guān)系運(yùn)算符<、<=、>、>=、==、!=邏輯運(yùn)算符&&、||、!位運(yùn)算符<<、>>、~、|、^、&賦值運(yùn)算符=及其擴(kuò)展賦值運(yùn)算符條件運(yùn)算符?:逗號(hào)運(yùn)算符,指針運(yùn)算符*、&求字節(jié)數(shù)運(yùn)算符sizeof強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型)分量運(yùn)算符.、->下標(biāo)運(yùn)算符[]其他函數(shù)運(yùn)算符()1.運(yùn)算符2.表達(dá)式用運(yùn)算符將操作對(duì)象連接起來(lái)、符合C語(yǔ)法規(guī)則的式子稱為表達(dá)式。運(yùn)算符和表達(dá)式第44頁(yè),共110頁(yè),2023年,2月20日,星期五運(yùn)算符功能與運(yùn)算量關(guān)系要求運(yùn)算量個(gè)數(shù)要求運(yùn)算量類型運(yùn)算符優(yōu)先級(jí)別結(jié)合方向結(jié)果的類型學(xué)習(xí)運(yùn)算符應(yīng)注意第45頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題引入

如何編寫一個(gè)能進(jìn)行五則混合運(yùn)算的簡(jiǎn)易計(jì)算器程序?功能包括求兩個(gè)整數(shù)的和、差、積、商以及兩數(shù)相除的余數(shù),如何表示?結(jié)論:運(yùn)用算術(shù)運(yùn)算符及表達(dá)式第46頁(yè),共110頁(yè),2023年,2月20日,星期五基本算術(shù)運(yùn)算符:+-*/%結(jié)合方向:從左向右優(yōu)先級(jí):----->*/%----->+-

(2)(3)(4)

說(shuō)明:“-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù)例5/2=-5/2.0=例5%2=-5%2=1%10=

5%1=5.5%2算術(shù)運(yùn)算符和表達(dá)式2-2.51-110()第47頁(yè),共110頁(yè),2023年,2月20日,星期五

問(wèn)題求解#include<stdio.h> /*和、差、積、商以及兩數(shù)相除的余數(shù)*/voidmain(){ intoper1=10,oper2=100,add,sub,mult,div,mod; /*操作數(shù)和存放結(jié)果的變量定義*/ add=oper1+oper2; /*兩數(shù)和*/ sub=oper1-oper2; /*兩數(shù)差*/ mult=oper1*oper2; /*兩數(shù)積*/ div=oper1/oper2; /*兩數(shù)商*/ mod=oper1%oper2; /*兩數(shù)模*/ printf(“\n兩數(shù)和為%d,兩數(shù)差為%d,兩數(shù)積為%d,兩數(shù)商為%d,兩數(shù)模為%d”,add,sub,mult,div,mod); /*結(jié)果輸出*/}第48頁(yè),共110頁(yè),2023年,2月20日,星期五模仿練習(xí)1.輸入兩個(gè)整數(shù),要求輸出它們的和、差、積、商及余數(shù)。2.輸入一名學(xué)生的三科成績(jī)(假設(shè)都是實(shí)型),請(qǐng)統(tǒng)計(jì)該學(xué)生的總分及平均分。

第49頁(yè),共110頁(yè),2023年,2月20日,星期五第14次課復(fù)習(xí)賦值運(yùn)算符及表達(dá)式自增、自減運(yùn)算符及表達(dá)式第50頁(yè),共110頁(yè),2023年,2月20日,星期五簡(jiǎn)單賦值運(yùn)算符符號(hào):=格式:變量標(biāo)識(shí)符=表達(dá)式作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量復(fù)合賦值運(yùn)算符種類:+=-=*=/=%=《=》=&=^=|=含義:exp1op=exp2

exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;賦值運(yùn)算符和表達(dá)式第51頁(yè),共110頁(yè),2023年,2月20日,星期五結(jié)合方向:自右向左優(yōu)先級(jí):14左側(cè)必須是變量,不能是常量或表達(dá)式賦值表達(dá)式的值與變量值相等,且可嵌套賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型例3=x-2*y;a+b=3;例

floatf;inti;i=10;f=i;則

f=10.0例inti;i=2.56;//結(jié)果i=2;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表達(dá)式值為5,a,b,c值為5//b=5;a=5//表達(dá)式值11,c=6,a=11//表達(dá)式值10,a=10,b=4,c=6//表達(dá)式值5,a=5,b=10,c=2說(shuō)明(1):

第52頁(yè),共110頁(yè),2023年,2月20日,星期五結(jié)合方向:自右向左優(yōu)先級(jí):12

左側(cè)必須是變量,不能是常量或表達(dá)式賦值表達(dá)式的值與變量值相等,且可嵌套賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型例:a=12;a+=a-=a*a例:inta=2;a%=4-1;a+=a*=a-=a*=3;//a=-264等價(jià)于a=a+(a=a-(a*a))//a=0等價(jià)于a=a+(a=a*(a=a-(a=a*3)))說(shuō)明(2):

第53頁(yè),共110頁(yè),2023年,2月20日,星期五賦值運(yùn)算符及賦值表達(dá)式

簡(jiǎn)單賦值運(yùn)算符及其表達(dá)式賦值運(yùn)算符是“=”,其作用是將賦值運(yùn)算符右側(cè)的表達(dá)式的值賦給其左側(cè)的變量。值得注意的是:賦值運(yùn)算符運(yùn)算對(duì)象中的左側(cè)對(duì)象一定是變量。如:a=b-c=5;相當(dāng)于a=((b-c)=5);,由于表達(dá)式中出現(xiàn)將數(shù)值5賦給b-c表達(dá)式,因此,該表達(dá)式是非法的。返回本節(jié)目錄第54頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題引入當(dāng)變量的值每次遞增/遞減1時(shí),i=i+1、i+=1i=i-1、i-=1能否有更簡(jiǎn)潔的形式?第55頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題分析擴(kuò)展的算術(shù)運(yùn)算符++(自增)、--(自減)運(yùn)算符,可將增1/減1運(yùn)算表示為:i++或++i(注:放在變量前和變量后含義不同)i--或--i第56頁(yè),共110頁(yè),2023年,2月20日,星期五作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4自增、自減運(yùn)算符++--第57頁(yè),共110頁(yè),2023年,2月20日,星期五作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)說(shuō)明:++--不能用于常量和表達(dá)式,如5++,(a+b)++++--結(jié)合方向:自右向左優(yōu)先級(jí):-++-------->*/%----->+-

(2)(3)(4)例-i++-(i++)i=3;printf(“%d”,-i++);//-3

例j+++k;(j++)+k;例-i++i=3;printf(“%d”,-i++);

自增、自減運(yùn)算符++--第58頁(yè),共110頁(yè),2023年,2月20日,星期五擴(kuò)展算術(shù)運(yùn)算符舉例#include<stdio.h>voidmain(){ inti,j,k,l; i=3; j=7; k=i++; l=j--; printf("i=%d,",i); printf("j=%d\n",j); printf("k=%d,",k); printf("l=%d\n",l); i=++i; j=--j; printf("i=%d,",i); printf("j=%d\n",j); printf("k=%d,",k); printf("l=%d\n",l);}自增、自減運(yùn)算符實(shí)例。程序的運(yùn)行結(jié)果如下:第59頁(yè),共110頁(yè),2023年,2月20日,星期五模仿練習(xí)y=5,執(zhí)行完y++;后,y的值是?y=5,執(zhí)行完++y;后,y的值是?y=5,執(zhí)行完x=y++;后,x的值是?y的值是?y=5,執(zhí)行完x=++y;后,x的值是?y的值是?第60頁(yè),共110頁(yè),2023年,2月20日,星期五自增、自減運(yùn)算符總結(jié)

自增(++)和自減(--)運(yùn)算符是單目運(yùn)算符,其功能是使運(yùn)算對(duì)象(變量)的值增1或減1。它們既可以作前綴運(yùn)算符(位于運(yùn)算對(duì)象的前面),如++i,--i;也可以作后綴運(yùn)算符(位于運(yùn)算對(duì)象的后面),如i++,i--。前綴和后綴運(yùn)算的數(shù)據(jù)處理方法有明顯的差異。對(duì)于前綴形式表示在用該表達(dá)式之前先使變量值增(減)1;對(duì)于后綴形式表示在用該表達(dá)式的值之后使n的值增(減)1。++j,--j在使用j之前,先使j的值加(減)1。j++,j—

在使用j之后,使j的值加(減)1。返回本節(jié)目錄自增或自減運(yùn)算符在使用時(shí),需要注意以下幾點(diǎn):(1)運(yùn)算符的操作對(duì)象,只能是變量,而不能作用于常量或表達(dá)式。運(yùn)算符的優(yōu)先級(jí)高于基本算術(shù)運(yùn)算符,結(jié)合性是“自右向左”右結(jié)合。(2)i++,遵照右結(jié)合原則,它相當(dāng)于-(i++),而不相當(dāng)于(-i)++形式。第61頁(yè),共110頁(yè),2023年,2月20日,星期五討論并總結(jié)%運(yùn)算符可以對(duì)其他類型進(jìn)行運(yùn)算嗎?++和--運(yùn)算符的位置和放在操作數(shù)的前面和后面的區(qū)別?第62頁(yè),共110頁(yè),2023年,2月20日,星期五結(jié)論1——%運(yùn)算符的操作數(shù)類型%運(yùn)算符兩側(cè)的操作數(shù)只能為整型%運(yùn)算的結(jié)果的符號(hào)和被除數(shù)相同(被除數(shù)為正,余數(shù)為正,被除數(shù)為負(fù),余數(shù)為負(fù))其它類型若進(jìn)行%運(yùn)算,先進(jìn)行強(qiáng)制類型轉(zhuǎn)化第63頁(yè),共110頁(yè),2023年,2月20日,星期五

結(jié)論2——++和--為前綴與后綴的區(qū)別

對(duì)于前綴形式表示在用該表達(dá)式之前先使變量值增(減)1;對(duì)于后綴形式表示在用該表達(dá)式的值之后使n的值增(減)1。++j,--j在使用j之前,先使j的值加(減)1。j++,j—在使用j之后,使j的值加(減)1第64頁(yè),共110頁(yè),2023年,2月20日,星期五學(xué)以致用一個(gè)數(shù)能夠整除另一個(gè)數(shù)如何表達(dá)?一個(gè)數(shù)是偶數(shù)/奇數(shù)如何表達(dá)?生活中常見的例子,銀行中已知利率2.5%,存入5000元1年后共能夠取出多少錢?已知某人的工資,要計(jì)算個(gè)人所得稅等等。用C語(yǔ)言來(lái)描述計(jì)算

第65頁(yè),共110頁(yè),2023年,2月20日,星期五第15次課復(fù)習(xí)關(guān)系運(yùn)算符和表達(dá)式條件運(yùn)算符和表達(dá)式第66頁(yè),共110頁(yè),2023年,2月20日,星期五復(fù)習(xí)1、設(shè)x=2.5,a=7,y=4.7,求表達(dá)式的值: x+a%3*(int)(x+y)%2/4-92、找出合法的賦值表達(dá)式:x=3 x=3+3 x=y x=y+2 x=y=3 3=yx+2=1 x+2=y x=x+3-6.5第67頁(yè),共110頁(yè),2023年,2月20日,星期五復(fù)習(xí)y=5,執(zhí)行完y++;后,y的值是?y=5,執(zhí)行完++y;后,y的值是?y=5,執(zhí)行完x=y++;后,x的值是?y的值是?y=5,執(zhí)行完x=++y;后,x的值是?y的值是?寫出下列賦值表達(dá)式的等同自反賦值表達(dá)式:x+=y x-=3x*=3+yx/=3x%=3x=x+yx=x-3x=x*(3+y)x=x/3x=x%3第68頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題引入1、星光大道評(píng)委正在給最后決賽的兩名選手打分,到底誰(shuí)是冠軍呢?我們現(xiàn)在只能根據(jù)最后的總分來(lái)決定。結(jié)果由選手的成績(jī)要進(jìn)行比較得出。2、輸入兩個(gè)任意的整數(shù),比較并輸出較大數(shù)。第69頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題分析表示兩個(gè)操作數(shù)或表達(dá)式的大小關(guān)系,采用關(guān)系運(yùn)算符第70頁(yè),共110頁(yè),2023年,2月20日,星期五關(guān)系運(yùn)算符種類:<<===>=>!=結(jié)合方向:自左向右優(yōu)先級(jí)別:<<=>>===!=優(yōu)先級(jí)10(高)優(yōu)先級(jí)9(低)例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表達(dá)式值1//表達(dá)式值1//表達(dá)式值0//d=1//f=0關(guān)系運(yùn)算符和表達(dá)式第71頁(yè),共110頁(yè),2023年,2月20日,星期五例inti=1,j=7,a;a=i+(j%4!=0);

則a=2例‘a(chǎn)’>0結(jié)果為‘A’>100結(jié)果為10關(guān)系運(yùn)算符及表達(dá)式舉例第72頁(yè),共110頁(yè),2023年,2月20日,星期五關(guān)系運(yùn)算符及表達(dá)式舉例返回本節(jié)目錄#include<stdio.h>voidmain(){

inta,b; printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); printf("a>b:%d\n",a>b); printf("a<b:%d\n",a<b); printf("a>=b:%d\n",a>=b); printf("a<=b:%d\n",a<=b); printf("a==b:%d\n",a==b); printf("a!=b:%d\n",a!=b);}觀察以下程序的結(jié)果。按下圖錄入的結(jié)果是:第73頁(yè),共110頁(yè),2023年,2月20日,星期五模仿練習(xí)使用關(guān)系表達(dá)式描述兩個(gè)選手成績(jī)sa和sb的關(guān)系:A是冠軍,B是亞軍A是亞軍,B是冠軍成績(jī)相同,需要加時(shí)賽第74頁(yè),共110頁(yè),2023年,2月20日,星期五

C語(yǔ)言中的關(guān)系運(yùn)算符共有六種,它們是:

> < >= <= != ==大于小于 大于等于小于等于 不等于 等于關(guān)系運(yùn)算符的運(yùn)算結(jié)果為0(假)或?yàn)?(真)關(guān)系表達(dá)式的優(yōu)先級(jí):低于算術(shù)運(yùn)算符、高于邏輯運(yùn)算符其中!=和==符號(hào)低于>,<,>=,<= 關(guān)系運(yùn)算符及表達(dá)式總結(jié)a>b==c>d(a>b)==(c>d)第75頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題2解決2、輸入兩個(gè)任意的整數(shù),比較并輸出較大數(shù)。main(){ intn1,n2; scanf(“%d%d”,&n1,&n2);

………./*如果n1>n2,則*/ printf(“max=%d\n”,n1);

………/*如果n1<n2,則*/ printf(“max=%d\n”,n2);}第76頁(yè),共110頁(yè),2023年,2月20日,星期五第16次課條件運(yùn)算符及表達(dá)式第77頁(yè),共110頁(yè),2023年,2月20日,星期五

條件運(yùn)算符及表達(dá)式條件運(yùn)算符是“?:”,是C語(yǔ)言中唯一的三目運(yùn)算符,用條件運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的符合C語(yǔ)法規(guī)則的式子稱為條件表達(dá)式。2.條件表達(dá)式的一般形式:

表達(dá)式1?表達(dá)式2:表達(dá)式3;

操作過(guò)程:先計(jì)算表達(dá)式1的值,若為“真”,則計(jì)算表達(dá)式2的值,整個(gè)條件表達(dá)式的值就是表達(dá)式2的值;若表達(dá)式1的值為“假”,則計(jì)算表達(dá)式3,整個(gè)條件表達(dá)式的值就是表達(dá)式3的值。

條件運(yùn)算符優(yōu)先級(jí)低于算術(shù)運(yùn)算符,其結(jié)合性是右結(jié)合。

返回本節(jié)目錄第78頁(yè),共110頁(yè),2023年,2月20日,星期五條件表達(dá)式舉例inta,b,c,max;(a>b)?a:b;max=(a>b?a:b);a>b?a:(b>c?b:c);a>b?a:(b+1);a>b?a:bmax=a>b?a:ba>b?a:b>c?b:ca>b?a:b+1第79頁(yè),共110頁(yè),2023年,2月20日,星期五運(yùn)算符的優(yōu)先級(jí)表第80頁(yè),共110頁(yè),2023年,2月20日,星期五模仿練習(xí)1、學(xué)校根據(jù)同學(xué)的總評(píng)成績(jī)?cè)u(píng)一、二、三等獎(jiǎng)學(xué)金,總評(píng)成績(jī)?yōu)?0分及以上為一等獎(jiǎng)學(xué)金、88分及以上為二等獎(jiǎng)學(xué)金,85分及以上為三等獎(jiǎng)學(xué)金。你的獎(jiǎng)學(xué)金是幾等呢?2、判斷并輸出三個(gè)任意整數(shù)中的最大值?第81頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題1求解#include<stdio.h>voidmain(){floatscore;printf("請(qǐng)輸入總評(píng)成績(jī):");scanf("%f",&score);(score>=90)?printf("一等獎(jiǎng)學(xué)金"):(score>=88)?printf("二等獎(jiǎng)學(xué)金"):(score>=85)?printf("三等獎(jiǎng)學(xué)金"):printf("沒(méi)有獎(jiǎng)學(xué)金");}第82頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題2求解 #include<stdio.h>

main()

{

inta,b,c,max;

printf("Inputthreenumbers:");

scanf("%d%d%d",&a,&b,&c);

max=a>b?a:(b>c?b:(c>a?c:a));

printf("max=%d\n",max);

}

第83頁(yè),共110頁(yè),2023年,2月20日,星期五小組討論并總結(jié)比較賦值運(yùn)算(=)符和等于(==)的區(qū)別關(guān)系運(yùn)算符的結(jié)果是什么?條件運(yùn)算表達(dá)式如何計(jì)算?第84頁(yè),共110頁(yè),2023年,2月20日,星期五結(jié)論1——賦值運(yùn)算符和等于運(yùn)算符比較賦值運(yùn)算符表示為=,其結(jié)果為將=右邊的值賦給左邊的變量,左邊只能為變量等于運(yùn)算符表示為==,其結(jié)果為邏輯值真和假,不修改任何變量的值,左右兩邊可為常量或變量第85頁(yè),共110頁(yè),2023年,2月20日,星期五

結(jié)論2——關(guān)系運(yùn)算符的結(jié)果關(guān)系運(yùn)算符的結(jié)果為0(假),1(真)

第86頁(yè),共110頁(yè),2023年,2月20日,星期五

結(jié)論3——條件運(yùn)算符的運(yùn)算方法

表達(dá)式1?表達(dá)式2:表達(dá)式3;

操作過(guò)程:先計(jì)算表達(dá)式1的值,若為“真”,則計(jì)算表達(dá)式2的值,整個(gè)條件表達(dá)式的值就是表達(dá)式2的值;若表達(dá)式1的值為“假”,則計(jì)算表達(dá)式3,整個(gè)條件表達(dá)式的值就是表達(dá)式3的值。條件運(yùn)算符可以嵌套,過(guò)程與上類似第87頁(yè),共110頁(yè),2023年,2月20日,星期五學(xué)以致用運(yùn)動(dòng)會(huì)上,跳高場(chǎng)上A同學(xué)跳的比B同學(xué)高,如何表示?

100米短跑,A同學(xué)比B同學(xué)跑得快,如何表示?找一些生活中常見的例子,用比較運(yùn)算表達(dá)式描述。第88頁(yè),共110頁(yè),2023年,2月20日,星期五第17次課實(shí)踐練習(xí)第89頁(yè),共110頁(yè),2023年,2月20日,星期五作業(yè)——每人必做1、用條件表達(dá)式描述:取三個(gè)數(shù)的最大者。2、輸入一名學(xué)生的某科成績(jī),輸出等級(jí)。成績(jī)>=85等級(jí):A成績(jī)>=70等級(jí):B成績(jī)>=60等級(jí):C成績(jī)<60等級(jí):D第90頁(yè),共110頁(yè),2023年,2月20日,星期五學(xué)以致用:找一些生活中常見的例子,用條件運(yùn)算表達(dá)式描述例如:某銀行存款5萬(wàn)塊以上可以辦金卡、存款20萬(wàn)以上可以辦VIP特種卡,其余為一般信用卡,根據(jù)存款金額判斷某用戶的銀行卡種類。

第91頁(yè),共110頁(yè),2023年,2月20日,星期五第18次課復(fù)習(xí)邏輯運(yùn)算符及表達(dá)式第92頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題引入

已知年份,要判斷該年是否為閏年?(該年份能夠被400整除,或者能夠被4整除并且不能被100整除)第93頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題分析表示兩個(gè)操作數(shù)或表達(dá)式能夠同時(shí)滿足多個(gè)條件或滿足多個(gè)條件之一,采用邏輯運(yùn)算符第94頁(yè),共110頁(yè),2023年,2月20日,星期五問(wèn)題解決返回本節(jié)目錄#include<stdio.h> /*該程序利用邏輯表達(dá)式判斷是否為閏年*/voidmain(){intyear;printf("請(qǐng)輸入年份判斷是否為閏年:");scanf(“%d”,&year); /*輸入年份*/year%400==0||(year%4==0&&year%100!=0)?printf(“該年為閏年?!?:printf("該年不是閏年。");

/*邏輯表達(dá)式*/ }判斷輸入的年份是否為閏年?第95頁(yè),共110頁(yè),2023年,2月20日,星期五模仿練習(xí)1、判斷字符ch是否為大寫字母的表達(dá)式2、判斷字符ch是否為字母的表達(dá)式第96頁(yè),共110頁(yè),2023年,2月20日,星期五

邏輯表達(dá)式的結(jié)果為邏輯值,真1或假0

在進(jìn)行條件判斷時(shí),非0為真,0為假其結(jié)果可以賦值給整型變量或字符型變量注意:邏輯運(yùn)算符的運(yùn)算為短路運(yùn)算,即在&&左

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論