數(shù)據(jù)的運算與輸入輸出公開課一等獎省優(yōu)質(zhì)課大賽獲獎課件_第1頁
數(shù)據(jù)的運算與輸入輸出公開課一等獎省優(yōu)質(zhì)課大賽獲獎課件_第2頁
數(shù)據(jù)的運算與輸入輸出公開課一等獎省優(yōu)質(zhì)課大賽獲獎課件_第3頁
數(shù)據(jù)的運算與輸入輸出公開課一等獎省優(yōu)質(zhì)課大賽獲獎課件_第4頁
數(shù)據(jù)的運算與輸入輸出公開課一等獎省優(yōu)質(zhì)課大賽獲獎課件_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章數(shù)據(jù)運算與輸入輸出

本章主要內(nèi)容:運算符和表示式概述算術(shù)運算符和算術(shù)表示式賦值運算符和賦值表示式 關(guān)系運算符和關(guān)系表示式邏輯運算符和邏輯表示式條件運算符和條件表示式逗號運算符和逗號表示式數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)輸入、輸出3.1運算符和表示式概述運算(即操作)是對數(shù)據(jù)加工,被運算對象——數(shù)據(jù)稱為運算量或操作數(shù)。一個表示式包含一個或多個操作,操作對象稱為操作數(shù),而操作本身是經(jīng)過運算符(也稱操作符)表示。表示式:用來計算值式子.一個表示式由運算符和運算對象組成.C語言運算符按其功效分類:算術(shù)運算符、關(guān)系運算符、邏輯運算符、逗號運算符、位運算符、賦值運算符等。運算對象:常量,變量,函數(shù),表示式.C語言提供有豐富運算符,組成各種表示式,主要有:算術(shù)表示式、賦值表示式、關(guān)系表示式、邏輯表示式、條件表示式、逗號表示式。

3.2算術(shù)運算符和算術(shù)表示式3.2.1算術(shù)運算符1.基本算術(shù)運算符:+-*/%(求余)說明:(1)/(除運算):若參加運算對象為兩個整數(shù),結(jié)果仍為整數(shù).(向下取整,不進行四舍五入).若其中之一為負數(shù),則結(jié)果視機器系統(tǒng)而定,但多數(shù)采取“向零取整”.(2)%(求余運算):要求參加運算數(shù)據(jù)均為整數(shù).2.自增自減運算符:使變量值增加一個單位或降低一個單位。算符:++自加--自減使用方法:

++i;--i;前置運算:在使用i之前,先使i值加1或減1.i++;i--;后置運算:先使用i值,再使i值加1或減1.例:inti=2,j;j=++i;j=i++;注::(1)++,--運算符只能用于變量,不能用于表示式.

例:++55++(a+b)++均為錯誤表示式.(2)++和--結(jié)合方向是自右至左,其優(yōu)先級高于加、減、乘、除,與負號屬同一優(yōu)先級。例:intj=5,k;k=-j++;(3)前置和后置要使用正確。假如僅是為了對變量值進行加1或減1,那么語句i++;與++i;效果一樣,語句i--;與—i;效果一樣。當自加和自減運算出現(xiàn)在表示式中時,前置和后置運算效果不一樣;【例3.1】自增、自減運算符前置、后置形式差異程序示例。#include<stdio.h>intmain(void){intk,x,y;k=10;x=k++;y=++k;printf("k=%d,x=%d,y=%d\n",k,x,y);k=10;x=--k;y=k--;printf("k=%d,x=%d,y=%d\n",k,x,y);return0;}3.算術(shù)運算符優(yōu)先級與結(jié)合性(1)二目運算符:乘(*)、除(/)、求余(%)優(yōu)先級相同,高于加(+)、減(-);結(jié)合方向為“自左至右”,即先左后右。(2)一目算符:負(-)、自增(++)、自減(--)優(yōu)先級相同,高于二目運算符加(+)、減(-)、乘(*)、除(/)、求余(%);結(jié)合方向為“自右至左”,即先右后左。3.2.2算術(shù)表示式

用算術(shù)運算符和括號將運算對象(常量、變量和函數(shù)等)連接起來、符合C語言語法規(guī)則式子,稱為算術(shù)表示式。如:

3+a*b/2-1.5+'a'【例3.2】程序示例。#include<stdio.h>intmain(void){inta=3,b=8,c=2,d;d=a+b*-c;printf("d=%d\n",d);return0;}3.3賦值運算符和賦值表示式賦值運算符:=

使用格式:變量名=表示式

如:a=3,r=x%y

注:賦值運算符左邊只能是變量名或變量地址,右邊能夠是變量名、常量、函數(shù)、可求值表示式。例:inta=3a=a+32.賦值運算符優(yōu)先級及結(jié)合方向賦值運算符(包含下面將要講復合賦值運算符)優(yōu)先級低于算術(shù)算符優(yōu)先級,結(jié)合方向是右結(jié)合,即從右至左進行運算。3.賦值表示式

(1)由賦值運算符將一個變量和一個表示式連接起來式子稱為賦值表示式。它普通形式為:<變量><賦值運算符><表示式>(2)在賦值表示式普通形式中,表示式仍能夠是一個賦值表示式

。賦值表示式值是被賦值后變量值。例:inta,b,c;a=(b=3)a=b=c=8a=5+(c=6)a=(b=10)/(c=2)4.復合賦值運算符:+=-=/=*=%=a+=3a=a+3a-=10a=a-10a*=y+6a=a*(y+6)a/=b+5a=a/(b+5)a%=b-6a=a%(b-6)例:(1)求以下表示式中a值

a=b=c=5a=(b=4)+(c=6)a=(b=10)/(c=2)(2)若a=12,求

a-=a*aa+=aa+=a-=a*aa+=a-=a*=a注:賦值運算符優(yōu)先級低于算術(shù)算符優(yōu)先級.3.4關(guān)系運算符和關(guān)系表示式

3.4.1關(guān)系運算符1.關(guān)系運算符、優(yōu)先次序及結(jié)合方向

關(guān)系運算符:<(小于)<=(小于等于)

>(大于)>=(大于等于)==(等于)!=(不等于)優(yōu)先次序:①<,<=,>,>=優(yōu)先級相同②==,!=優(yōu)先級相同,且低于前四個算符③關(guān)系算符優(yōu)先級低于算術(shù)算符,高于賦值算符優(yōu)先級.④結(jié)合方向為自左至右,即同級關(guān)系運算自左至右算。2.關(guān)系表示式:用關(guān)系運算符將兩個C語言正當表示式連接起來式子.例:a>b,a+b>b+c,(a=3)>(b=5)‘a(chǎn)’<‘b’,(a>b)>(b<c)3.關(guān)系表示式值:當關(guān)系表示式成立時,即為真時關(guān)系表示式值為1,不然其值為0.即1代表真,0代表假.例:inta=3,b=2,c=1;例:inta=3,b=2,c=1,d,f;a>3值:d=a>bd值:a>b值:f=a>b>cf值:(a>b)==c值:a==b<c值:0110103.1邏輯運算符和邏輯表示式1.邏輯運算符及其優(yōu)先次序邏輯算符:&&邏輯與||邏輯或!非運算規(guī)則:設(shè)有a,baba&&ba||b!a真真假假真真假假真假假假真真真假假假真真邏輯算符優(yōu)先次序及結(jié)合方向

:①!(非)→&&(與)→||(或)②邏輯運算符中“&&”和“||”低于關(guān)系運算符,“!”高于算術(shù)運算符。③&&、||結(jié)合方向為自左至右,即同級邏輯運算自左至右算,!(非)結(jié)合方向為自右至左。例:inta=2,b=2,x=4,y=5;(a>b)&&(x>y)a>b&&x>y(a==b)||(x==y)a==b||x==y(!a)||(a>b)!a||a>b2.邏輯表示式邏輯表示式:由邏輯運算符連接起來C正當式子。邏輯表示式值:是一個邏輯量“真”或“假”。C語言編譯系統(tǒng)在給出邏輯運算結(jié)果時,以數(shù)值1代表“真”,以0代表“假”,但在判斷一個量是否為“真”時,以0代表“假”,以非0代表“真”。即非0即“真”。例:inta=2,b=3;a&&b!a5>3&&8<4-!0‘a(chǎn)’&&’b’aba&&ba||b!a注:在邏輯表示式求解中,并不是全部邏輯運算符都被執(zhí)行:例:inta=1,b=1,c=1;求:

(1)a&&b&&c(2)--a&&--b&&--c(3)++a||++b||++c(4)--a||--b||--c非0非000非0非000100011100011對邏輯運算符說明(邏輯運算中“短路”現(xiàn)象):⑴&&、||其運算對象可為基本型和指針型,操作數(shù)值為0是假,非0是真,它們兩個運算對象不一定是同類型。⑵運算次序:&&、||運算次序嚴格按從左至右,兩個操作數(shù)位置不可交換。⑶&&、||運算特點:與(&&)運算若左操作數(shù)為0,則不計算右操作數(shù);或(||)運算若左邊操作數(shù)不為0,則不計算右邊操作數(shù)。例:若x=y=z=-1,則以下表示式運算結(jié)果及x,y,z值分別是什么?①++x&&++y&&++z②++x&&++y||++z③++x||++y&&++z④++x||++y||++z

作業(yè):1.若x=y=z=0,則以下各式運算后x,y,z值及表示式值。①++x&&++y&&++z②++x&&++y||++z③++x||++y&&++z④++x||++y||++z2.若x=2,y=1,z=0,則表示式x||!y&&++z值;

若x=0,y=0,z=0,則表示式x||!y&&++z值;3.6條件運算符和條件表示式格式:表示式1?表示式2:表示式3說明:①條件運算符運算次序:先求解表示式1,若為非0(真),則求解表示式2,此時表示式2值就作為整個表示式值,不再求解表示式3值;若表示式1值為0(假),則求解表示式3值,表示式3值作為整個表示式值,不再求解表示式2值.

例:inta=1,b=1;a=(a>b?++a:++b);②條件表示式能夠嵌套,即一個條件表示式又能夠與另一個條件表示式組成一個新表示式。如:

max=a>b?a:c>d?c:d

條件運算符結(jié)合方向為“自右至左”,但運算次序自左至右。③條件運算符優(yōu)先級高于賦值運算符,但低于關(guān)系算符、邏輯算符和算術(shù)算符優(yōu)先級。例:輸入一個字符,判斷它是否大寫,假如是將它轉(zhuǎn)換成小寫字母,假如不是不轉(zhuǎn)換,然后輸出最終得到字符。

c=(c>='A'&&c<='Z')?(c+32):c;3.7逗號運算符和逗號表示式在C語言中逗號在以下幾個情形下出現(xiàn):(1)逗號作分隔符,如用于說明語句中變量標示符之間.intj,k;(2)作為運算符,組成逗號表示式,其普通形式:

表示式1,表示式2,表示式3說明:①逗號表示式求解次序:按自左至右次序求表示式值,整個表示式值為最右邊表示式值.如:k=10,f=50.1f=50.1,k=10

②逗號表示式中表示式能夠是算術(shù)表示式,也能夠是賦值表示式,如(a=3),a*4(x=8*2,x*4),x*2

③逗號運算符優(yōu)先級最低,低于其它全部運算符.例:求以下表示式值:x=(a=3,6*a)x=a=3,6*a例:變量均為int型,值不等于7表示式為()(A)x=y=6,x+y,x+1(B)x=y=6,x+y,y+1(C)x=6,x+1,y=6,x+y(D)y=6,y+1,x=y,x+1例:main(){inta,b,c,d=5;a=(c=3,c*d);printf(“a=%d\tc*d=%d\n”,a,c*d);b=c=3,c*d;printf(“a=%d\tb=c=3,c*d=%d\n”,b,(b=c=3,c*d));}3.9數(shù)據(jù)類型轉(zhuǎn)換

不一樣類型數(shù)據(jù)進行混合運算時要考慮以下問題:運算符優(yōu)先級。運算符結(jié)合方向。數(shù)據(jù)類型轉(zhuǎn)換。3.9.1自動轉(zhuǎn)換規(guī)則

不一樣數(shù)據(jù)類型數(shù)據(jù)在賦值時類型轉(zhuǎn)換規(guī)則是“就左不就右”,即將賦值運算符右邊表示式數(shù)據(jù)轉(zhuǎn)換成左邊變量數(shù)據(jù)類型,然后進行賦值。比如:

inta:floatb;b=2/3;a=5.0/2.0;(2)在同一表示式中各數(shù)據(jù)類型不一樣,編譯程序會自動進行以下方式,將不一樣數(shù)據(jù)類型轉(zhuǎn)變成同一類型后再進行運算。轉(zhuǎn)換規(guī)則如圖3-3所表示:例:inti;floatf;doubled;longe;10+’a’+i*f-d/e①int②double③double④double⑤double在進行運算時,若一個算符兩側(cè)數(shù)據(jù)類型不一樣,則需要進行轉(zhuǎn)換為同一類型,轉(zhuǎn)換規(guī)則:將兩個不一樣操作對象轉(zhuǎn)換為占空間較大那種類型,以保不失精度.3.9.2強制轉(zhuǎn)換

格式:(類型名)(表示式)注:(1)作用:將表示式強制轉(zhuǎn)換為指定類型;(2)表示式:能夠是單個變量或可求值表示式.例:inta=2;floatx,y=1.5;(double)a(int)(y+x)(int)y+xa=(int)y(float)(5%3)a%(int)ya%y3.10數(shù)據(jù)輸入、輸出C輸入輸出:C本身不提供輸入輸出語句,(在C中輸入輸出是由函數(shù)來實現(xiàn).在C標準函數(shù)庫中提供了一些輸入輸出函數(shù)如printf()scanf()等,它們不是C語句.)這么C在編譯階段不包括硬件,能夠使編譯簡單,在連接階段它們與源程序目標文件相連接,生成一個可執(zhí)行目標程序,在執(zhí)行階段調(diào)用已被連接函數(shù)庫中輸入輸出函數(shù).在使用C語言函數(shù)時,要用預編譯命令“#include”將相關(guān)“頭文件”包含到用戶源文件中.頭文件:包含調(diào)用函數(shù)相關(guān)信息庫函數(shù)名,標準輸入輸出函數(shù)相關(guān)信息在“stdio.h”中,若程序中調(diào)用輸入輸出函數(shù)應將:#include“stdio.h”或#include<stdio.h>放在程序開始.3.10.1字符數(shù)據(jù)輸入輸出1.字符輸出函數(shù)putchar()

格式:putchar(c)

其中:c能夠是字符型變量或整型變量或字符常量,

功效:向標準輸出設(shè)備(通常是顯示器或打印機)輸出一個字符.例#include“stdio.h”main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);putchar(‘\n’);putchar(‘A’);putchar(‘\101’);putchar(65);}2.字符輸入函數(shù)getchar()格式:getchar()功效:從標準輸入設(shè)備(通常是鍵盤)輸入一個字符.例:#include“stdio.h”main(){charc;inta;c=getchar();putchar(c);a=getchar();putchar(a);}注:getchar()只能接收一個字符,該字符能夠賦給字符變量或整型變量,也能夠不賦給任何變量,作為表示式一部分.如putchar(getchar())3.10.2格式輸出函數(shù)printf()

1.printf()函數(shù)最簡單使用方法普通形式為:printf(要輸出字符串常量);【例3.6】printf函數(shù)應用#include<stdio.h>intmain(void){printf("Thescoreofmyclassesare:\n");printf("No.\tName\tScore\n");printf("1\tLiPing\t495\n");printf("2\tLiuHua\t465\n");return0;}2.格式化輸出數(shù)據(jù)

格式:printf(格式控制,輸出表列)

例:printf(“max=%d”,c)功效:按照“格式控制字符串”中指定格式,將輸出表列中諸項輸出到標準輸出文件中(通常指顯示器)。其中:1)格式控制是雙引號括起來字符串,包含兩種信息:①由“%”和格式字符組成,如%d,%f,%c等,將輸出數(shù)據(jù)轉(zhuǎn)換成指定格式輸出;②普通字符,需要原樣輸出字符.2)輸出表列:要輸出數(shù)據(jù),能夠是變量名,函數(shù)名,表示式例:inta=2,b=3;printf(“%d%d”,a,b);printf(“a=%db=%d”,a,b);格式字符:⑴d格式符:用來輸出十進制整數(shù).

d%d:按整型數(shù)據(jù)實際長度輸出%md:按指定長度輸出整型數(shù)據(jù)%ld:輸出長整型數(shù)據(jù)⑵o格式符:以八進制形式輸出整數(shù)o%o:按整型數(shù)據(jù)八進制實際長度輸出%mo:按指定長度輸出整型數(shù)據(jù)八進制形式%lo:輸出長整型數(shù)據(jù)八進制形式x%x:按整型數(shù)據(jù)十六進制實際長度輸出%mx:按指定長度輸出整型數(shù)據(jù)十六進制形式%lx:輸出長整型數(shù)據(jù)十六進制形式⑶x格式符:以十六進制形式輸出整數(shù)⑷u格式符:以無符號形式輸出十進制整數(shù)⑸c格式符:用來輸出一個字符c%c:輸出一個字符%mc:按指定寬度輸出一個字符⑹s格式符:用來輸出一個字符串s%ms%-ms%m.ns%-m.ns⑺f式符:以小數(shù)形式輸出一個實數(shù)f%f:不指定寬度輸出一個實數(shù),整數(shù)部分原樣輸出,并輸出6位小數(shù)%-m.nf:按指定寬度輸出數(shù)據(jù)占m列,其中n位小數(shù).假如數(shù)值長度小于m,則右端補空格.%m.nf:按指定寬度輸出數(shù)據(jù)占m列,其中n位小數(shù).假如數(shù)值長度小于m,則左端補空格.3.10.3格式輸入函數(shù)scanf()1.scanf():從終端輸入若干個數(shù)據(jù).

格式:scanf(格式控制,地址表列)功效:從標準輸入設(shè)備(通常是鍵盤)上,按照指定格式為指定輸入項輸入數(shù)據(jù)。其中:⑴格式控制字符串包含兩種信息:①格式控制符:%d,%c,%f②普通字符:需要原樣輸入.⑵地址表列:由若干個變量地址組成.例:main(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d”,a,b,c);}2.格式說明符

%d:輸入十進制整數(shù)

%o:輸入八進制整數(shù)

%x:輸入十六進制整數(shù)

%f:輸入實數(shù)

%c:輸入字符

%s:輸入字符串3.scanf()使用方法⑴連續(xù)輸入多個數(shù)據(jù)時,數(shù)據(jù)間用空格或回車鍵或Tab鍵分開;

例:inta,b;scanf(“%d%d”,&a,&b);⑵格式符前可加數(shù)字,指定輸入數(shù)據(jù)所占位數(shù).

例:inta,b;scnaf(“%2d%d”,&a,&b);

若輸入:123456,a和b值分別是什么?

若輸入:123456,a和b值分別是什么?例:main(){inta,b,c,d;scanf(“%2d%d”,&a,&b);printf(“%d\t%d\n”,a,b);scanf(“%2d%4d”,&c,&d);printf(“%d\t%d\n”,c,d);}⑶假如在%后有一個“*”,表示跳過它對應列數(shù).例:scanf(“%2d%*3d%2d”,&a,&b);

若輸入:1223467,a,b值分別是什么?⑷假如轉(zhuǎn)換控制字符串中有普通字符,則輸入數(shù)據(jù)時,要在與此相對應部分,輸入與此相同字符例:scanf(“a=%db=%d”,&a,&b);

輸入:a=123b=34scanf(“%d,%d”,&a,&b);

輸入:23,784.使用scanf函數(shù)應該注意事項(1)在格式控制中,格式說明類型與輸入項類型,應該是一一對應。(2)在scanf函數(shù)中格式字符前能夠用一個整數(shù)指定輸入數(shù)據(jù)所占寬度,但不能夠?qū)嵭蛿?shù)指定小數(shù)位寬度。以下面scanf函數(shù)使用就是錯誤:scanf("%7.2f",&a);(3)在格式控制串中,格式說明個數(shù)應該與輸入項個數(shù)相同。若格式說明個數(shù)少于輸入項個數(shù)時,scanf函數(shù)結(jié)束輸入,多出數(shù)據(jù)項并沒從終端接收新數(shù);若格式說明個數(shù)多于輸入項個數(shù)時,scanf函數(shù)一樣也結(jié)束輸入。(4)當輸入數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論