程序設計語言第2章 運算符和表達式_第1頁
程序設計語言第2章 運算符和表達式_第2頁
程序設計語言第2章 運算符和表達式_第3頁
程序設計語言第2章 運算符和表達式_第4頁
程序設計語言第2章 運算符和表達式_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章C語言程序的運算符和表達式

C語言程序設計本章介紹算術運算符和算術表達式、賦值運算符和賦值表達式及與賦值相關的運算符(復合的賦值運算符、自增1、自減1運算符)以及其他運算符,從而進一步提高順序結構程序的設計能力。主要內容

12賦值運算符、復合的賦值運算符3自增1(自減1)運算符、類型轉換4算術運算符和算術表達式逗號運算符、容量運算符問題:從鍵盤輸入a、b變量的值,求a/b和a%b的值。例2_1求a/b和a%b的值#include"stdio.h"main(){inta,b;scanf("%d%d",&a,&b);printf("%d\n",a/b);printf("%d\n",a%b);}2.1計算a/b和a%b的值程序運行結果:3

503

運算符與表達式

1.運算符的功能:即它對數據做什么操作2.運算符對運算對象有一定的限制3.表達式值的類型算術運算符有:單目運算符:-(負)、+(正),右結合雙目運算符:+、-、*、/(整數相除結果取整)、%(取余)優先級:先乘除(含取余),后加減,括號優先結合性:同級從左至右

a*b/c-1.55+3*2

a/b/c*(3-d)

要求%兩側均為整形數據2.2算術運算符用算術運算符和括號將運算對象連接起來的、符合C語法規則的式子。例如:25.0/425/4等于6,25.0/4.0等于6.255/10等于0,5.0/10.0等于0.54%9等于4(%只能對整型數據操作)-15%4等于-3乘號不能省略,且要根據運算順序書寫,如:數學表達式

a(b2+4ac) (a+b)÷cdC表達式a*(b*b+4*a*c)(a+b)/c/d或(a+b)/(c*d)算術表達式#include"stdio.h"main(){

inti=3;floatr=2.0;printf("%d\n",2*-i);printf(“%f\n”,r/i);printf("%d\n",r/i);printf("%d",2%3);}程序執行結果:-60.66666721845i=r/i:02算術運算舉例8

實戰演練

1.編程序計算數學表達式:b2-4ac,a,b,c的值從鍵盤輸入。2.編程序計算298秒是幾分幾秒。提示:設intx=298;再定義兩個變量存放分(m)、秒(s)值;則:m=x/60;s=x%60。3.從鍵盤輸入一個三位數,求各位數字之和。例如,輸入的三位數為358,則輸出結果為3+5+8=16。提示:題目的關鍵是要求出該數的個、十、百位上的數字,可利用C語言整數相除,結果仍為整數的特點。若設該數為data,它的個、十、百位為g、s、b,則b=data/100;s=(data-b*100)/10;g=data%10C提供了6個用于位操作的運算符。這些運算符只能作用于整數分量,即有符號或無符號的char,short,int和long類型3&41.按位與(&)運算

見0則0位運算就是參加運算的兩個數按二進制位參加運算,如“與”運算是兩個參加運算的二進制位都是1,結果值是1,只要有一個運算數是0,結果是0。例如3&4為:

00000011(3)(&)00000100(4)

00000000(0)2.3位運算符2.按位或(|)運算

“見1,則1”按位或運算符用于對一個數據的某些位置1。如x是一個整數(16位),要將低8位全置為1,高8位保留原樣,可以這樣運算:x|0377,0377是8進制數,轉換成二進制后,低8位全為1,和x或運算后,x的低8位也為1。3.按位異或(^)運算:“同則0,異則1”異或運算可以使特定位翻轉,如要使01111010的低4位翻轉,可與(00001111)進行異或運算,即:

011110105^300000101(^)00001111^0000001101110101000001102.3位運算符4.按位左移(<<)運算3<<20|00001100|左移運算用來將一個數的各二進制位左移若干位,左移一位相當于這個數乘2,如x<<2用于將x的值左移2位,右邊空出的2位用零填充。這個表達式的結果等于左運算分量x乘以4。原碼5.按位右移(>>)運算3>>2|00000000|11右移一位相當于這個數除以2,右移n位,相當于除以2n。右移位運算符中的運算分量的值必須是正的。當右移無符號量時,左邊空出的位用0填空;當右移有符號量時,左邊空出的位或用符號位填空(即算術移位)或用0填充(邏輯移位)-6>>2|11100001|2.3位運算符6.按位求反(~)運算“~”是一元運算符,用于求整數的反碼。它分別將運算分量各位上的1轉換成0,0轉換成1。如x=x&~077用于將x的最后6位置為0~00000101~5111110102.3位運算符例

交換a,b變量的值

#include"stdio.h"main(){inta=3,b=5,t;t=a;a=b;b=t;printf(“a=%d,b=%d\n”,a,b);}2.4賦值運算符及表達式由賦值運算符“=”將變量和表達式連接起來的式子。其形式是:

變量=表達式

賦值表達式表達式值各變量值a=55a=b=c=55a,b,c均為5a=5+(c=6)

11a為11,c為6

賦值運算符及表達式復合的賦值運算符C語言中有10種復合賦值運算符:

+=、-=、*=、/=、%=、

<<=、>>=、&=、^=、|=(位運算符以后講)實例:a/=3等價于a=a/3

x*=y+8等價于x=x*(y+8)a+=a-=a*a相當于a=a+(a=a-a*a)y%=8等價于y=y%8a=-4a+=a-4例

復合賦值運算符的應用#include"stdio.h"main(){intx=3,y=8;x*=y+1;printf("x=%d,y=%d",x,y);}程序執行結果:x=27,y=8賦值運算舉例17

實戰演練

1.用賦值語句表達:a的值為2,b的值比a多2,c的值比b的值多2,并輸出a,b,c的結果。請編出完整程序驗證。2.假設變量a和b均為整型,以下語句可以不借助任何變量把a、b中的值進行交換。請先填空,再編出完整程序驗證。a+=_________;(a為a、b之和)b=a-__________;a-=___________;

++(自增),--(自減):n=1n++;++n;++n,--m前綴,變量的值+(-)1n++,m--后綴,變量的值+(-)1優先級:高于雙目運算結合性:同級從右至左

j=3;k=2

k=++j;→j=j+1;k=j;即j的為4,k的值為4

k=j++;→k=j;j=j+1;

即j的為4,k的值為32.5自增自減運算符說明:對于j變量,j++和++j都使j的值加1,但k的值就不同了,所以前綴和后綴運算對變量是一樣的,對表達式的值就不一樣自增、自減舉例例2_5自增1運算,前后綴區別#include"stdio.h"main(){intx,y=5;x=5;y=x++;printf("%d%d\n",y,x);x=5;y=++x;printf("%d,%d\n",y,x);}逗號表達式的格式:表達式1,表達式2,…,表達式n逗號表達式的求解順序及結果:先求解表達式1,再求解表達式2,…,最后求解表達式n;逗號表達式的最終結果為表達式n的值。實例:k=1a=3*5,a*4

結果為60x=(a=10,b=100,c=50)結果為50y=(i++,j--,k+2)

結果為k+22.6其他運算符獲得一個變量或某種類型的量在內存中所占的字節數。它有以下兩種用法:值,類型sizeof(表達式)inta;sizeof(a)

例如:intx=1;sizeof(x)

floaty=5.0;printf(“%d”,sizeof(x+y));

結果為:8sizeof(類型名)例如:

printf(“%d”,sizeof(shortint))結果為:2容量運算符sizeof

2.7C語言運算符的分類與優先級

1.運算符的類型2.運算符的優先級

3.結合律

兩個同優先級的運算符相鄰時,是按從左到右的順序運算(左結合),還是按從右到左的順序運算(右結合),C語言運算符的結合性大多數是左結合的,有一小部分是右結合的。運算符是表示某種運算的符號,是對數據的操作表達式是用運算符和括號將運算對象連接起來的符合C語言語法規則的式子運算對象可以是常量、變量、函數等優先級和結合性:優先級是指表達式中各計算的先后次序;結合性是指當一個運算對象兩側的運算符的優先級相同時進行運算的結合方向運算符及表達式

2.8不同類型數據之間的轉換

設銀行定期存款的年利率r為2.25%,并已知存款期為n年,存款本金為m元,編程計算n年后的本利之和算法步驟:

step1:定義變量;step2:輸入算法所需要的數據r,n,m;step3:進行運算和數據處理:本利之和=m*(1+r)nstep4:輸出運算結果數據。24例2_6計算存款n年后的本利之和#include"stdio.h"#include"math.h"main(){intn,m;floatr=0.0225,total;printf("Pleaseentern,m:");scanf("%d,%d",&n,&m);pow(x,3)total=m*pow(1+r,n);x3printf("Total=%f\n",total);}25程序運行結果:Pleaseentern,m:3,1000Total=1069.030143自動轉換:當參加算術運算的數據類型不一致時低級向高級轉換;賦值運算符兩邊的數據類型不同時,將右側表達式的值轉換為左側變量的類型強制轉換:強迫變量或表達式的值轉換為某一特定類型。常用在自動類型轉換不能達到目的時。轉換格式為:(int)3.0%(int)5.2(類型說明符)變量(類型說明符)(表達式)(double)a,(int)(x+y),

溫馨提示

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

評論

0/150

提交評論