第2章-數(shù)據(jù)類型、運算符與表達式-4學時_第1頁
第2章-數(shù)據(jù)類型、運算符與表達式-4學時_第2頁
第2章-數(shù)據(jù)類型、運算符與表達式-4學時_第3頁
第2章-數(shù)據(jù)類型、運算符與表達式-4學時_第4頁
第2章-數(shù)據(jù)類型、運算符與表達式-4學時_第5頁
已閱讀5頁,還剩113頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

高級語言程序設計揭安全jieanquan@163.com江西師范大學計算機信息工程學院高級語言程序設計——基于計算思維能力培養(yǎng)高級語言程序設計——基于計算思維能力培養(yǎng)第2章數(shù)據(jù)類型、運算符與表達式揭安全jieanquan@163.com江西師范大學計算機信息工程學院主要內容C程序基本結構C程序中常見的符號數(shù)據(jù)類型常量與變量運算符與表達式本章思維導圖C程序基本結構2.1#include<stdio.h>/*

@函數(shù)名稱:getMax

@入口參數(shù):兩個整型形式參數(shù)a,b

@函數(shù)功能:返回兩個形式參數(shù)中的較大者 @文件名:2_1.c*/注釋【例2.1】C語言程序示例。2.1C程序基本結構intgetMax(inta,intb){intm;if(a>b)m=a;else m=b;returnm; /*如果a>b,則返回a,否則返回b*/}函數(shù)名稱函數(shù)體2.1C程序基本結構/* @函數(shù)名稱:main()

@函數(shù)功能:主函數(shù)*/intmain(){intx,y,z; /*變量定義*/printf("Pleaseinputtwointegers:");scanf("%d%d",&x,&y); /*輸入兩個整數(shù)*/

2.1C程序基本結構z=getMax(x,y);/*調用函數(shù)max求x,y中的較大者存入z*/printf("較大的數(shù)是:%d\n",z);

/*輸出z的值*/return0;}函數(shù)調用z=max(x,y);intmax(inta,intb){…returnm;}2.1C程序基本結構語句分隔符;2.1C程序基本結構主要內容C程序基本結構C程序中常見的符號數(shù)據(jù)類型常量與變量運算符與表達式C程序中

常見的符號2.21、標識符:用于標識程序中的函數(shù)、變量等對象的名稱統(tǒng)稱標識符。系統(tǒng)預定義標識符用戶自定義標識符2.2C程序中常見的符號命名規(guī)則:(1)英文字母或下劃線開頭,中間可以是數(shù)字或英文字線、下劃線等。(2)見名知意例:max,a,b,m,sum,_price,my@name,9cd2.2C程序中常見的符號2、關鍵字:又稱保留字,它們是C語言中預先規(guī)定的具有固定含義的標識符。 int表示整數(shù)類型char表示字符類型return表示返回主調函數(shù)。

用戶在自定義標識符不能與關鍵字相同。例如:2.2C程序中常見的符號

3、運算符:C語言的運算符有34種,如加、減、乘、除,分別表示為:+、-、*、/按運算對象分:單目運算符,如求負(-),自增(++)等雙目運算符,如+、-三目運算符,唯一一個,條件運算符?:2.2C程序中常見的符號4、數(shù)據(jù):程序的加工對象,分為常量與變量。常量是指程序運行過程中保持不變的量。如:"Pleaseinputtwointegers:"2.2C程序中常見的符號4、數(shù)據(jù):程序的加工對象,分為常量與變量。變量是指程序運行過程中可以修改的數(shù)據(jù),一般對應內存單元。如:intx,y,z;2.2C程序中常見的符號5、分隔符與其它符號空格、回車、逗號、分號都是有效的分隔符。{、}、/*和*/等具有特定含義的符號塊注釋則包含在“/*”與“*/”之間。2.2C程序中常見的符號1.下列選項中不是C語言合法的自定義標識符的是()。sum01Flagpriceofbeef_priceABCD提交單選題5分主要內容C程序基本結構C程序中常見的符號數(shù)據(jù)類型常量與變量運算符與表達式數(shù)據(jù)類型2.3處理輸入設備輸出設備數(shù)據(jù)數(shù)據(jù)2.3數(shù)據(jù)類型(1)將牛肉切成大小適中的小塊(2)將每個土豆均勻切成4小塊(3)倒入50ml油,大火加熱…數(shù)據(jù)處理步驟2.3數(shù)據(jù)類型2.3數(shù)據(jù)類型基本數(shù)據(jù)類型和構造數(shù)據(jù)類型整數(shù)型、浮點型、字符型、字符串型和布爾型。數(shù)據(jù)類型決定了:該變量能夠存放數(shù)據(jù)的類型該變量占用內存占用的空間大小能夠對該變量執(zhí)行的操作為何要區(qū)分數(shù)據(jù)類型?2.3數(shù)據(jù)類型圖2-5炊具和餐具的類型決定了其功能與用途2.3數(shù)據(jù)類型高級語言中的同一種數(shù)據(jù)類型又根據(jù)需要存儲數(shù)據(jù)的范圍區(qū)分成了不同的類別。如,在C語言中整型可分為:基本整型(int)短整型(shortint)長整型(longint)2.3數(shù)據(jù)類型2.3數(shù)據(jù)類型int整數(shù),在目前絕大多數(shù)機器上占4個字節(jié)float單精度浮點數(shù),4個字節(jié)double雙精度浮點數(shù),8個字節(jié)2.3數(shù)據(jù)類型char字符,1個字節(jié),表示256個ASCII字符,或0~255的整數(shù)shortshortint,簡寫為short,短整數(shù),2個字節(jié)2.3數(shù)據(jù)類型longlongint,簡寫為long,長整數(shù),4個字節(jié)Longlongint,8個字節(jié)longdouble,長雙精度(高精度)浮點數(shù),10個字節(jié)unsigned用來修飾char、int、short和long無符號整數(shù)(正整數(shù)和0)2.3數(shù)據(jù)類型類型名范圍存儲大小char0~2551個字節(jié)shortint-215(-32768)~215-1(32767)2個字節(jié)int-231(-2147483648)~231-1(2147483647)4個字節(jié)unsignedint0~232-14個字節(jié)longlonglong-231(-2147483648)~231-1(2147483647)-263~263-14個字節(jié)8個字節(jié)float-3.4×10-38~3.4×1038精度為6位有效數(shù)字4個字節(jié)double-1.7×10-308~1.7×10308精度為15位有效數(shù)字8個字節(jié)如何知道變量占用的內存大???2.C語言中,錯誤的int類型的常數(shù)是()。1E500370xafABCD提交單選題5分sizeof是C語言的運算符,并非函數(shù),用于計算類型占用的字節(jié)數(shù)用法:sizeof(類型)結果為類型占用的字節(jié)數(shù)sizeof(變量名)結果為表達式值所屬類型占用的字節(jié)數(shù)2.3數(shù)據(jù)類型#include<stdio.h>intmain(){ printf("數(shù)據(jù)類型

字節(jié)\n"); printf("char%d\n",sizeof(char)); printf("short %d\n",sizeof(short)); printf("int %d\n",sizeof(int)); printf("unsigned %d\n",sizeof(unsigned)); printf("long %d\n",sizeof(long)); printf("longlong%d\n

",sizeof(longlong)); printf("float %d\n",sizeof(float)); printf("double %d\n",sizeof(double)); return0;}【例2.2】測試各種數(shù)據(jù)類型占用的內存空間數(shù)據(jù)類型

字節(jié)char 1short 2int 4unsigned 4long 4longlong 8float 4double 82.3數(shù)據(jù)類型主要內容C程序基本結構C程序中常見的符號數(shù)據(jù)類型常量與變量運算符與表達式常量2.4整型常量字符型常量實型常量字符串常量2.4常量整型常數(shù)的表示形式(1)十進制整數(shù):

如2008、+1975、-1,18u,123L,140Lu(2)八進制整數(shù):

例如,012表示(12)8,-020表示(-20)8。(3)十六進制整數(shù):

例如,0x20表示十六進制的(20)16,同理0x2A3B表示十六進制數(shù)(2A3B)16整型常量默認為int型2.4.1整型常量實型常量的表示形式(1)十進制小數(shù)表示形式

如.56、3.1415926、-96.25f、20.(2)指數(shù)形式

例如,314.15926e-2、0.031415926E2。注意:e4,2E4.5,.e8都是不合法的表示形式。浮點型常量默認為double型2.4.2實型常量C語言中用單引號括起來的單個字符為字符常量。如‘A’,‘9’等。ASCII碼

b7b6b5b4b3b2b1b001000001附錄B是常用字符的ASCII碼表2.4.3字符常量小寫字母‘a’的ASCII碼為97大寫字母‘A’的ASCII碼為65大寫字母與其對應的小寫字母的ASCII碼相差32。將一個大寫字母的ASCII碼加上32可以將它轉換成對應的小寫字母;數(shù)字字符‘0’的ASCII碼為48。

2.4.3字符常量字符含義字符含義‘\n’換行(Newline)‘\a’響鈴報警提示音(AlertorBell)‘\r’回車(不換行)(CarriageReturn)‘\”’一個雙引號(DoubleQuotationMark)‘\0’空字符,通常用作字符串結束標志‘\’’單引號(SingleQuotationMark)‘\t’水平制表(HorizontalTabulation)‘\\’一個反斜線(Backslash)‘\v’垂直制表(VerticalTabulation)‘\?’問號(QuestionMark)‘\b’退格(Backspace)‘\ddd’1到3位八進制ASCII碼值所代表的字符‘\f’走紙換頁(FormFeed)‘\xhh’1到2位十六進制ASCII碼值所代表的字符轉義字符‘\n’:換行‘\t’:水平制表‘\b’:退格‘\ddd’‘\xhh’3.下列轉義字符中錯誤的是()。'\000''\r''\x111''\2'ABCD提交單選題5分例如:printf(“Hesaid\”Ilikeclanguageverymuch.\”\n”);輸出結果為:Hesaid”Ilikeclanguageverymuch.”轉義字符用雙引號括起來的串如:"Helloworld!","a","中國","3.14159"等。

2.4.4字符串常量可用#define宏定義宏常量例如,若有定義:#definePI3.1415926則area=PI*10.2*10.2;等價于area=3.1415926*10.2*10.2;

注意:后面不需加;號2.4.5宏常量變量2.5變量的本質是內存或CPU中的寄存器,其值可以改變。使用變量前要需根據(jù)存儲的數(shù)據(jù)類型與數(shù)據(jù)范圍選擇相應的變量類型。2.5變量例如:intlength;floatarea,volume;charanswer,selection;ANSIC變量使用基本原則變量必須先聲明,后使用;所有變量必須在第一條可執(zhí)行語句前聲明;聲明的順序無關緊要;一條聲明語句可聲明若干個同類型的變量。2.5.1變量的聲明每一條完整的聲明語句都要以分號結尾;在同一個函數(shù)中,不能聲明同名的多個變量。變量的命名規(guī)則同用戶自定義標識符的命名規(guī)則,同時遵循見名知意的原則。

2.5.1變量的聲明新定義的變量其值為不確定數(shù)據(jù)。inta,b;charc;floatarea;2.5.2變量初始化inta=20,b=30;charc=‘A’;floatarea;2.5.2變量初始化新定義的變量其值為不確定數(shù)據(jù)。簡單賦值語句語法:

變量=

表達式;Don’tforgetthesemicolon!!Everyassignmentexpressionhasavalue2.5.3變量的訪問與使用例如:a=b; 30b=0; c=c+1;0662.5.3變量的訪問與使用對變量進行賦值時,賦值語句右邊的表達式類型應該與賦值語句左邊的變量類型相容。ValidExample: InvalidExample:

intx; charc; x=20; c=“Hello”;2.5.3變量的訪問與使用多重賦值語句語法:變量1=

變量2=

表達式;Don’tforgetthesemicolon!!右結合:從右向左賦值變量1=(變量2=表達式);2.5.3變量的訪問與使用Example:inta,b;intc;a=b=c=0;b??a??

c??0002.5.3變量的訪問與使用多重賦值語句顯示變量的值printf(“a:%d\n”,a);a:30注意:%d僅用于int型變量,如果要顯示字符型,可以用%c來代替%d。如果要顯示float型變量,則需要用%f。默認情況下,%f會顯示出小數(shù)點后6位數(shù)字。2.5.3變量的訪問與使用4.下列選項中正確的變量聲明與初始化語句是()。inta=b=10;chara='我';floata=10;doublea=∞;ABCD提交單選題5分5.下列數(shù)據(jù)中,不是C語言常量的是()。'\n'"a"e-2012ABCD提交單選題5分主要內容C程序基本結構C程序中常見的符號數(shù)據(jù)類型常量與變量運算符與表達式運算符與表達式2.6算術運算符關系運算符邏輯運算符賦值運算符條件運算符逗號運算符指針運算符自增(自減)運算符求字節(jié)運算符和特殊運算符2.6運算符與表達式Example:x+y操作數(shù)(Operand)運算符(Operator)操作數(shù)(Operand)2.6運算符與表達式2.6.1算術運算符Addition(+)Subtraction(-)Multiplication(*)Division(/)Modulus(%)(x+y)/2-(a*b-(a+b))/(x-y)(x+y)/2-(a*b-a-b)/(x-y)2.6.1算術運算符除法/Division浮點數(shù)除法(FloatingDivision)xoryorbotharefloats整數(shù)除法(IntegerDivision)xandyareintegersExample:x/y除法/DivisionExample:anintegeraninteger

theresultisalsoaninteger11/2=5除法/DivisionExample:andoubleaninteger

theresultisalsoandouble11.0/2=5.5求余%(Modulus)操作數(shù)必須為整數(shù)Example:11%3=2anintegeranintegertheresultistheremainderof11/3113392remainderresult求余(Modulus)余數(shù)符號與被除數(shù)同號Example:-26%-8=-2anintegeraninteger-26-83-24-2remainderresulttheresultistheremainderof-26/-8求余(Modulus)Example:15%-4=3anintegeraninteger15-4-3123remainderresulttheresultistheremainderof15/-4余數(shù)符號與被除數(shù)同號#include<stdio.h>intmain(){inta=17,integerResult;floatb=17.0,floatResult;integerResult=a/2;printf("integerResult:%d\n",integerResult);floatResult=b/2;printf("floatResult:%f\n",floatResult);printf("Remainderof(7+79)and24is:%d",(7+79)%24);return0;}integerResult:8floatResult:8.500000Remainderof(7+79)and24is:14【例2.3】寫出下面程序的輸出結果。如何分離個位、十位、百位數(shù)字?個位:153%10

=3十位:153/10%10=5百位:153/100=1【例2.4】利用算術運算符求一個三位整數(shù)的百位數(shù)、十位數(shù)和個位數(shù),并輸出它們和與乘積。#include<stdio.h>intmain(){intx,b0,b1,b2,sum,product;x=153;b0=x%10;

//求個位數(shù)b1=x/10%10;

//求十位數(shù)b2=x/100;

//求百位數(shù)sum=b0+b1+b2;product=b0*b1*b2;printf("b2=%d\tb1=%d\tb0=%d\n",b2,b1,b0);printf("sum=%d\tproduct=%d\n",sum,product);return0;}b2=1b1=5b0=3sum=9product=157.設floatc,f;,將數(shù)學表達式c=(f-32)正確表示成C語言賦值表達式的是()。c=5*(f-32)/9c=5/9(f-32)c=5/9*(f-32)c=5/(9*(f-32))ABCD提交單選題5分2.6.2運算符的優(yōu)先級與結合性當算術表達式包含兩個或兩個以上的算術運算符時

首先要確定運算順序所有的運算符都有一個優(yōu)先級

(OrderofPrecedence)

附錄C——運算符的優(yōu)先級與結合性不同優(yōu)先級時的運算順序:——從高到低

例如:*,/,%

優(yōu)先級大于+、-相同優(yōu)先級時的運算順序:——左結合為從左到右,右結合為從右到左例如:算術運算為左結合,賦值運算為右結合2.6.2運算符的優(yōu)先級與結合性除后置++、--運算符之外的一元運算符和三元運算符均為右結合;除賦值運算符之外的所有二元運算符均為左結合。自增和自減運算符(++和--)用作后綴運算符時(比如x++)具有較高的優(yōu)先級。運算符的優(yōu)先級不需要去死記硬背,編寫程序時可以通過使用()來改變表達式的計算順序。2.6.2運算符的優(yōu)先級與結合性5+2+4*3-6=?例:算術表達式計算順序71219-6=13=135+2+4*(3–6)=?利用()改變計算順序:7-3=-5-12=-572.6.3關系運算符運算符意義范例結果<

小于10<90<=小于或等于8<=201>

大于10>81>=大于或等于8>=100==等于10==101!=不等于9!=90例如,表達式10+30<10+40等價于(10+30)<(10+40)。2.6.3關系運算符注意不要直接判斷兩個浮點數(shù)是否相等。注意區(qū)別C語言的關系表達式與數(shù)學中的關系表達式。在數(shù)學中10<x<20,表示x∈(10,20)在C語言中能用10<x<20表示x∈(10,20)嗎?2.6.4復合賦值運算符Syntax:

變量x=變量x

運算符op

表達式;

變量x

運算符op=表達式;例如:

x=x+10;可寫成:x+=10;2.6.4復合賦值運算符Example:num=num+2;num15

15+2

1717Example:num+=2;similarto

num=num+2shorthandassignmentoperator2.6.4復合賦值運算符運算符復合賦值運算例子計算過程+=num+=2;num=num+2;-=num-=2;num=num–2;*=num*=a+b;num=num*(a+b);/=num/=a-b;num=num/(a-b);%=num%=2;num=num%2;2.6.4復合賦值運算符例如,若有變量定義intx=10;則表達式: x*=2+3;等價于: x=x*(2+3); (x的結果為50)而不是: x=x*2+3;

(x的結果為23)例如,若有變量定義inta=10,b=20,c=30;表達式a+=b+=c;等價于a+=(b+=c); //執(zhí)行完后a的值為60,b的值為50,c的值為30執(zhí)行后,a,b,c的值分別是?2.6.4復合賦值運算符再如,若有變量定義inta=3;表達式 a+=a*=a-=1;的計算順序為:a-=1; //a=2a*=a; //a=4a+=a;

//a=82.6.4復合賦值運算符8.設floatm=4.0,n=4.0;,使m為10.0的表達式是()。m-=n*2.5m/=n+9m*=n-6m+=n+2ABCD提交單選題5分2.6.5++和--運算符x++,x--,++x,--x++讓參與運算的變量加1,--讓參與運算的變量減1作為后綴(postfix)運算符時,先取x的值參與表達式計算,然后x自身加/減1y=x++;y=x;x=x+1;2.6.5++和--運算符x++,x--,++x,--x++讓參與運算的變量加1,--讓參與運算的變量減1作為前綴(prefix)運算符時,先將x的值加1,然后再取x的值參與表達式計算y=++x;x=x+1;y=x;Example:y=x++-2x10similartoy=x–2;x=x+1;后綴(Postfix)增1和減1運算符y??811Example:y=++x-2x10similartox=x+1;y=x–2;y??911前綴(Prefix)增1和減1運算符y=-x++; printf("x:%d,y:%d\n",x,y); x10similartoy=-(x++);后綴(Postfix)增1和減1運算符11y10-10x=x+1;printf(“x:%d,y:%d\n",x,y);x:11,y:-102.6.5++和--運算符良好的程序設計風格提倡:在一行語句中,一個變量只能出現(xiàn)一次增1或者減1運算過多的增1和減1運算混合,不僅可讀性差,而且因為編譯器實現(xiàn)的方法不同,導致不同編譯器產生不同的運行結果9.若定義了inta,x,y;,則下列語句中不正確的是()。x=y=5;++x;x=y+=x*30;a=y+x=30;ABCD提交單選題5分表達式的類型轉換2.72.7表達式的類型轉換賦值表達式的類型轉換char,shortintunsignedlongunsignedlonglonglonglongdoubledoublefloat2.7表達式的類型轉換不當?shù)馁x值將導致溢出2.7表達式的類型轉換例如,有變量定義:inta=2;longb=10;doublec=25;floatsum=0;sum=‘A'+2*a+b*c的計算過程:2.7表達式的類型轉換強制類型轉換

(類型說明符)表達式(float)(x+y) 將x+y的值轉換成float類型。(int)a+b 將a的值取出轉換為int型再與b相加。(double)b 取出變量b的值轉換為double型#include<stdio.h>intmain(){constfloatpi=3.1415926;//定義const常量floatr=5.0;doublelength,area;length=2.0*pi*r; //計算圓的周長area=pi*r*r; //計算圓的面積printf("length=%f\n",length);//輸出圓的周長printf("area=%f\n",area);//輸出圓的面積retu

溫馨提示

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

評論

0/150

提交評論