版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
會計學(xué)1程序設(shè)計語言初步2提綱標識符 數(shù)據(jù)類型 變量常量輸入和輸出表達式語句函數(shù)本章向大家介紹結(jié)構(gòu)化程序設(shè)計語言的基本概念第1頁/共101頁3數(shù)據(jù)總線
控制路線
輸入設(shè)備輸出設(shè)備存儲器中央處理器(CPU)運算部件控制部件地址總線
實例:編一個程序,從鍵盤讀入兩個整數(shù),要求在屏幕上輸出相乘運算結(jié)果。處理步驟:1.控制部件發(fā)命令從鍵盤讀取數(shù)據(jù)并存儲到內(nèi)存儲器中(輸入)。2.控制部件發(fā)命令從內(nèi)存儲器中取出這兩個數(shù)置入運算部件的寄存器中,讓運算器執(zhí)行加法運算,運算結(jié)果寫回存儲器中(處理)。3.控制部件發(fā)命令將存儲在內(nèi)存儲器中的結(jié)果輸出到顯示器上(輸出)。需要考慮的問題:1.輸入:如何從鍵盤讀取這兩個數(shù)并將其存放到內(nèi)存中?程序如何約束輸入的必須是整數(shù)?2.處理:計算時如何讀取內(nèi)存中的這兩個數(shù)?如何實現(xiàn)計算?計算結(jié)果如何寫回內(nèi)存?3.輸出:如何將內(nèi)存中的計算結(jié)果輸出到顯示器?第2頁/共101頁4數(shù)據(jù)總線
控制路線
輸入設(shè)備輸出設(shè)備存儲器中央處理器(CPU)運算部件控制部件內(nèi)存中數(shù)據(jù)的存取:變量數(shù)據(jù)類型輸入:輸入語句輸出:輸出語句地址總線
計算的實現(xiàn):運算符表達式語句函數(shù)程序控制流程第3頁/共101頁5標識符是由程序員定義的單詞,用來給程序中的數(shù)據(jù)、函數(shù)和其他用戶自定義對象命名。程序設(shè)計語言本身會定義一些專用名稱,稱之為保留字或關(guān)鍵字,他們具有特定含義,程序員不能另做他用。如:C語言規(guī)定了32個關(guān)鍵字。3.1標識符第4頁/共101頁6#include<stdio.h>main(){
int
number1;/*變量聲明*/
intnumber2;
intresult;
printf(“pleaseinputthetwonumbers:\n”);/*顯示提示信息*/scanf(“%d%d”,&number1,&number2);/*從鍵盤讀取2個整數(shù)*/result=number1*number2;/*賦值運算*/
printf(“theresultis:%d\n”,result);/*輸出結(jié)果*/
return0;}用戶自定義標識符C語言關(guān)鍵字3.1標識符第5頁/共101頁7不同的程序設(shè)計語言標識符格式可能不同。C語言規(guī)定:標識符由大寫字母A到Z、小寫字母a到z、數(shù)字0到9和下劃線組成,且第一個字符必須是字母或下劃線,隨后的字符必須是字母、數(shù)字或下劃線。且大小寫敏感,如age和Age是兩個不同的標識符。PASCAL語言規(guī)定:和C語言類似,只是要求第一個字符只能是字母(比C語言約束更強)。3.1標識符思考:以下哪些是合法標識符age,_class_no,
name1,name1%,2name,#age第6頁/共101頁8數(shù)據(jù)是程序處理的對象。數(shù)據(jù)依據(jù)其本身的特點可以歸為不同的類:整數(shù)、小數(shù)、字符、字符串等。(高級程序語言特點:按照人對于數(shù)據(jù)的表達方式)
數(shù)據(jù)類型:定義了一系列的值(數(shù)據(jù)特點、范圍)以及能應(yīng)用于這些值上的一系列操作(數(shù)據(jù)操作)。3.2數(shù)據(jù)類型程序設(shè)計語言一般包含四種標準數(shù)據(jù)類型:整型、字符型、浮點型和布爾型。第7頁/共101頁9整數(shù)是由符號和一個或多個數(shù)字組成的正數(shù)或負數(shù),又稱為帶符號的自然數(shù)
,如+12,-38。在數(shù)學(xué)中,整數(shù)是一個無限集合,但對于計算機來說,只能表示它的一個有限子集(決定于存儲空間的大?。U?.2數(shù)據(jù)類型第8頁/共101頁103.2數(shù)據(jù)類型-整型整型數(shù)據(jù)占用的內(nèi)存單元數(shù):C語言中整型數(shù)據(jù)細分為三類:shortint、int和longint。C語言標準沒有規(guī)定每一種整數(shù)類型占用的內(nèi)存空間大小,只是約束到:shortint和int至少要占據(jù)16位(2字節(jié)),而long數(shù)據(jù)至少要有32位(4字節(jié));且數(shù)據(jù)長度上,shortint<=int<=long
int。每一種整數(shù)類型占用的字節(jié)數(shù)取決于所用的機器以及C編譯器。第9頁/共101頁11整型所允許的運算包括:
二目算術(shù)運算:+、-、*、/、%(取余); 兩個整數(shù)進行二目運算后的結(jié)果還是整數(shù), 如:125/10=12(余數(shù)5被舍棄), 125%10=5
單目算術(shù)運算:取負值等;
關(guān)系運算:<,<=,>,>=,==(相等), !=(不相等)
3.2數(shù)據(jù)類型-整型第10頁/共101頁12字符型字符數(shù)據(jù)包括26*2個字母(大小寫)+10個數(shù)字+其它顯示符號,總共95種;還有33種控制符號,總共128種符號;字符型數(shù)據(jù)在內(nèi)存中的存儲:實際存放的是一個整數(shù)值。多數(shù)計算機系統(tǒng)采用ASCII(AmericanStandardCodeforInformationInterchange)標準編碼模式來對字符進行編碼。每個字符占用8位內(nèi)存(1個字節(jié));3.2數(shù)據(jù)類型第11頁/共101頁13ASCII表LH000000010010001101000101011001110000NULDLESP0@P‘p
0001SOHDC1!1AQaq
0010STXDC2“2BRbr
0011ETXDC3#3CScs
0100EOTDC4$4DTdt
0101ENQNAK%5EUeu
0110ACKSYN&6FVfv
0111BELETB,7GWgw
1000BSCAN)8HXhx
1001HTEM(9IYiy
1010LFSUB*:JZjz
1011VTESC+;K[k{
1100FFFS’<L\l|
1101CRGS-=M]m}
1110SORS.>N^n~
1111SIUS/?O_oDEL2000H2002H2004H2003H2001H01000001存儲空間該存儲區(qū)存放字符‘A’思考:若從鍵盤上輸入字符存儲到內(nèi)存,字符到二進制數(shù)的轉(zhuǎn)換是誰來實現(xiàn)的?第12頁/共101頁14ASCII(‘A’)=65 ASCII(‘a(chǎn)’)=97大寫字母的ASCII編碼+32=小寫字母的ASCII編碼
字符型所允許的運算包括(將字符型數(shù)據(jù)當(dāng)作整數(shù)對待):
算術(shù)運算:ch2=ch1-32(ch1值為‘b’,則ch2=‘B’)
ch2=ch1-1(ch1值為‘b’,則ch2=‘a(chǎn)’)
ch2=ch1+1(ch1值為‘b’,則ch2=‘c’)
3.2數(shù)據(jù)類型-字符型第13頁/共101頁153.2數(shù)據(jù)類型-字符型關(guān)系運算(按照ASCII大?。?<,<=,>,>=,==,!= 例如:‘A’<‘a(chǎn)’
結(jié)果為真(非零),因為‘A’的ASCII是65,‘a(chǎn)’的ASCII是97,65<97第14頁/共101頁16浮點型浮點型是帶小數(shù)部分的數(shù)字類型,如3.14,1.575E5(科學(xué)計數(shù)法,即1.575*)。C語言支持三種不同長度的浮點數(shù)據(jù)類型:float、double和longdouble。其中float一般占32位(4字節(jié));double一般占64位(8字節(jié)),longdouble占96位(12字節(jié))。三者區(qū)別:越后面的類型運算精度越高,但占用的內(nèi)存單元越多。3.2數(shù)據(jù)類型第15頁/共101頁17浮點型所允許的運算包括:
二目算術(shù)運算:+、-、*、/; 浮點型數(shù)據(jù)進行二目運算結(jié)果還是浮點型。如:12.0/5.0=2.4
單目算術(shù)運算:取負值
關(guān)系運算:<,<=,>,>=,==,!=
3.2數(shù)據(jù)類型-浮點型第16頁/共101頁183.2數(shù)據(jù)類型-布爾型程序中往往需要測試某個條件是否成立。這個條件往往用一個表達式來定義,這個表達式的值要么為真,要么為假。布爾類型數(shù)據(jù):取值只有兩種,真(True)或者假(False)。允許的運算包括:與、或、非。絕大多數(shù)程序設(shè)計語言中有布爾類型這種數(shù)據(jù)類型。如Pascal語言。但是C語言沒有定義這種數(shù)據(jù)類型。第17頁/共101頁19標準類型是原子的、不可再分的。程序員可以以標準類型為基本構(gòu)件,構(gòu)造出復(fù)雜的數(shù)據(jù)類型。如C語言有:結(jié)構(gòu)、數(shù)組、聯(lián)合、文件等這些我們將來會學(xué)到的復(fù)雜類型,PASCAL語言有:結(jié)構(gòu)、數(shù)組、集合、文件等復(fù)雜數(shù)據(jù)類型。3.2數(shù)據(jù)類型-復(fù)雜數(shù)據(jù)類型第18頁/共101頁203.3變量數(shù)據(jù)總線
控制路線
輸入設(shè)備輸出設(shè)備存儲器中央處理器(CPU)運算部件控制部件輸入數(shù)據(jù)、中間運算結(jié)果、最終結(jié)果程序需要將輸入數(shù)據(jù)、中間運算結(jié)果以及最終結(jié)果暫時保存在內(nèi)存單元中。地址總線
程序如何實現(xiàn)從內(nèi)存單元存取數(shù)據(jù)?第19頁/共101頁213.3變量當(dāng)程序要讀寫內(nèi)存中的數(shù)據(jù)時,可以直接使用內(nèi)存地址來讀取,但這樣太麻煩!如果用名字來代替地址,在程序中出現(xiàn)的是代表內(nèi)存空間的名字,讓編譯器來跟蹤數(shù)據(jù)實際存放的物理內(nèi)存地址,就可以簡化編程--變量第20頁/共101頁22變量是內(nèi)存中存儲空間的名字,該存儲空間用來存放被加工的數(shù)據(jù)或處理的結(jié)果。變量用來代表內(nèi)存存儲空間。程序中對變量的操作(讀和賦值)實際上是對存儲空間的讀寫操作。2000H2002H2004H2005H2007H2006H2003H2001Hsexagescore內(nèi)存用sex代表地址為2000H的內(nèi)存單元,score代表地址為2004H~2007H的一片內(nèi)存空間。用變量來實現(xiàn)對這些內(nèi)存空間數(shù)據(jù)的存取。3.3變量第21頁/共101頁23一、變量定義
使用變量來對內(nèi)存數(shù)據(jù)進行存取前,必須先定義變量,目的是建立變量和存儲空間的對應(yīng)關(guān)系。變量定義指明變量的名稱和數(shù)據(jù)類型(變量代表的存儲空間存放的數(shù)據(jù)的類型)。要求變量的名稱遵循標識符命名原則。不同語言中變量定義的寫法不一樣,C語言格式: 數(shù)據(jù)類型變量名1[,變量名2,…];3.3變量思考:變量定義時要指明哪些內(nèi)容?charsex;intage1,age2;floatscore;數(shù)據(jù)類型變量名分號必須多個變量用逗號分割第22頁/共101頁24注意,變量定義僅引起內(nèi)存存儲空間分配,但此時變量中存儲的值是無意義的!變量定義引起存儲分配。定義后,變量就用來代表內(nèi)存中的一片存儲單元。3.3變量2000H2002H2004H2005H2007H2006H2003H2001Hsexagescore存儲空間charsex;intage;floatscore;第23頁/共101頁25二、變量賦值3.3變量C語言示例:charsex;intage;floatscore;變量賦值:把一個值寫入變量代表存儲空間。C語言變量賦值格式:變量名=表達式sex=‘F’;age=18;score=89.5;2000H2002H2004H2005H2007H2006H2003H2001Hsexagescore存儲空間ASCII(‘F’)=77)771889.5變量的值第24頁/共101頁263.3變量變量使用特點先定義,后使用。
intage; 定義一個變量為整數(shù)類型。如未定義,則在編譯時被查出,認為非法。變量未被賦值前,值是無意義的。對變量賦值過程是“覆蓋”過程,用新值去替換舊值。讀取變量代表的存儲空間數(shù)據(jù)(又稱讀取變量的值):age=age+1;讀出變量的值,該變量保持不變。
第25頁/共101頁273.3變量試解釋下列操作的含義讀取變量內(nèi)容寫入變量給變量賦值修改變量內(nèi)容第26頁/共101頁28C語言允許變量在定義時進行初始化。初始化語句用來給變量賦初始值。例如:charsex;intage=16;floatscore;
3.3變量2000H2002H2004H2005H2007H2006H2003H2001H16存儲空間sexagescore第27頁/共101頁29#include<stdio.h>main(){
intnumber1;/*變量聲明*/
intnumber2;
intresult;
printf(“pleaseinputthetwonumbers:\n”);/*顯示提示信息*/scanf(“%d%d”,&number1,&number2);/*從鍵盤讀取2個整數(shù)*/result=number1*number2;/*賦值運算*/
printf(“theresultis:%d\n”,result);/*輸出結(jié)果*/
return0;}3.3變量第28頁/共101頁303.3變量找出下述變量定義的錯誤:
floatfchar‘A’,‘B’;第29頁/共101頁31charsex;intage;floatscore變量類型變量名總結(jié):變量三要素:變量名(存儲空間)、數(shù)據(jù)類型(存儲空間存放的數(shù)據(jù)的類型)、變量值(存儲內(nèi)容)3.3變量2000H2002H2004H2005H2007H2006H2003H2001H701889.5存儲空間變量的值sexagescore第30頁/共101頁32一、文字常量文字常量是指在程序中未被命名的值。例:circumference=2*length*width;其中2就是一個文字常量,length和width是變量三類常量:文字常量、命名常量、符號常量3.4常量第31頁/共101頁33二、命名常量 和變量類似,命名常量也是內(nèi)存存儲空間的名字,代表一片內(nèi)存存儲空間,但一般不允許程序去改變該存儲空間中的數(shù)據(jù)。C語言中定義一個命名常量:
main() {
constfloatpi=3.14;
……}3.4常量2000H2002H2004H2005H2007H2006H2003H2001H3.14存儲空間pi第32頁/共101頁34#include<stdio.h>main(){
constfloatpi=3.14;/*常量定義*/
floatradius;/*變量定義*/
floatarea;
printf(“pleaseinputtheradius:\n”);/*顯示提示信息*/scanf(“%f”,&radius);/*從鍵盤讀取半徑*/
area=pi*radius*radius;/*賦值運算*/
printf(“theareais:%f\n”,area);/*輸出結(jié)果*/system(“pause”);
return0;}第33頁/共101頁35符號常量是僅含有符號名稱的值,不存儲在內(nèi)存。 C語言中符號常量定義:#defineAVESCORE85
if(score<AVESCORE)……編譯時,預(yù)處理程序能夠?qū)⑺谐霈F(xiàn)該符號名稱的地方用值替換:if(score<85)……使用符號常量的好處:使程序易讀性好、容易維護。三、符號常量3.4常量第34頁/共101頁363.4常量#include<stdio.h>#definePI3.14//常量定義,注意結(jié)束處無分號main(){floatradius;/*變量定義*/
floatarea;
printf(“pleaseinputtheradius:\n”);/*顯示提示信息*/scanf(“%f”,&radius);/*從鍵盤讀取半徑*/area=PI*radius*radius;/*賦值運算*/
printf(“theareais:%f\n”,area);/*輸出結(jié)果*/system(“pause”);
return0;}
第35頁/共101頁37四、常量的類型 和變量一樣,常量也有類型。大多數(shù)程序設(shè)計語言使用整型、浮點型、字符型和字符串型常量。 C語言中四種常量: 15 整型常量 15.4 浮點型常量 ‘A’ 字符型常量 “Hello”字符串型常量文字常量和符號常量的值體現(xiàn)了常量的類型3.4常量第36頁/共101頁38如果整型常量以0開頭,C編譯器會認為該常量是八進制數(shù)。如040即十進制的32。如果整型常量以0x開頭,C編譯器會認為該常量是十六進制數(shù)。如0xFF即十進制的255。#include<stdio.h>#defineX040#defineY0XFFmain(){printf(“X=%d,Y=%d”,X,Y);
system("pause");return0;}3.4常量X=32,Y=255請按任意鍵繼續(xù)...第37頁/共101頁39常量小測試下述常量定義哪些是錯誤的?為什么?#defineratio=1/3 #defineratio1/3;#define1st_character'$'#defineif7不能有=號;不能有語句結(jié)束符;號標識符只能以字符或者下劃線開頭If是C語言規(guī)定的關(guān)鍵字,有特定含義,用戶不能隨便使用第38頁/共101頁40數(shù)據(jù)總線
控制路線
輸入設(shè)備輸出設(shè)備存儲器中央處理器(CPU)運算部件控制部件地址總線
3.5輸入和輸出(I/O)一個真正有用的程序一般會從輸入設(shè)備接收數(shù)據(jù)、并將運算結(jié)果輸出到輸出設(shè)備中。為了實現(xiàn)和輸入輸出設(shè)備的通信,程序必須要有輸入和輸出語句。一個既無輸入又無輸出的程序是沒有用的。第39頁/共101頁41輸入和輸出語句最基本的功能在于從外界環(huán)境將值讀入一個變量,或者將一個值寫出到外界環(huán)境中。
3.5輸入和輸出(I/O)第40頁/共101頁42一、輸入通過語句或者預(yù)先定義的函數(shù)可以從外界接收值。C語言輸入函數(shù)舉例:
scanf(格式控制,輸入項地址表);如:scanf(“%d”,&number1);用于從鍵盤讀取一個整數(shù)并存儲在變量number1中。
3.5輸入和輸出(I/O)第41頁/共101頁43scanf(“%d”,&number1);當(dāng)程序遇到該指令時,程序等待用戶從鍵盤輸入一個整數(shù),然后將值存儲到變量number1中。%d:格式指示符(formatcode),用于告訴程序 鍵入的將是一個整數(shù);&:取變量地址運算符,&number1表示變量 number1的首地址。注意:書寫程序時不要遺漏&.3.5輸入和輸出(I/O)第42頁/共101頁44用scanf語句從鍵盤同時讀入年齡和性別:scanf(“%d%c”,&age,&sex);scanf(“%d,%c”,&age,&sex);3.5輸入和輸出(I/O)10S10,S從鍵盤輸入的內(nèi)容要和格式控制串匹配。如果在“格式控制”字符串中除了格式指示以外還有其它字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。如:空格scanf(“age=%d,sex=%c”,&age,&sex);age=10,sex=S第43頁/共101頁45二、輸出通過語句或者預(yù)先定義的函數(shù)可以將值輸出到外界。C輸出函數(shù)舉例:printf(格式控制,輸出項表);功能:將字符串顯示在顯示器上。程序員可以將一個或多個變量作為待輸出字符串的一部分。輸出項表:可以是常量、變量、表達式、函數(shù)調(diào)用。3.5輸入和輸出(I/O)第44頁/共101頁46如: printf(”Yourageis:%d”,age);注意,在輸出時%d不輸出,而是被變量age的值代替。假設(shè)變量age的值是18,則顯示器上將輸出字符串“Yourageis:18”
注意:此處變量age前面沒有&!3.5輸入和輸出(I/O)上機練習(xí):如果上述語句改寫成printf(”Yourageis:”,age);輸出將是怎樣?第45頁/共101頁473.5輸入和輸出(I/O)可以用printf語句輸出常量、變量、表達式、函數(shù)調(diào)用的值:printf(“theageragescoreis%d”,SCORE);//輸出常量printf(“yourageis%d”,age);//輸出變量printf(“thevalueof(2+3)<10is:%d\n”,(2+3)<10);//輸出表達式的值printf(“thesizeofintis:%d”,sizeof(int));//輸出函數(shù)返回值第46頁/共101頁48若想同時輸出年齡和性別,則語句可寫為:printf(
“Yourageis:%d,yoursexis:%c”,age,sex);顯示器上將輸出字符串“Yourageis:18,yoursexis:F”
3.5輸入和輸出(I/O)常用的輸入輸出語句格式控制中的格式指示符:%d:整型;%c:字符型;%f:浮點型輸入輸出后面會再詳細講解,有興趣的同學(xué)可參見《C程序設(shè)計教程》的9.3和9.11。第47頁/共101頁49找出以下程序的錯誤main(){ printf(“inputiandj\n”);scanf(“i=%d”,i);scanf(“%d”,j);printf(“i=%d,j=%d”,i);system(“pause”);}變量i和j未定義就使用;scanf(“%d”,&i);或者scanf((“i=%d”,&i)scanf(“%d”,&j);3.printf(“i=%d,j=%d”,i,j);第48頁/共101頁50#include<stdio.h>main(){
intnumber1;/*存放整數(shù)1*/
intnumber2;/*存放整數(shù)2*/
intresult;/*存放結(jié)果*/
printf(“pleaseinputthetwonumbers:\n”);/*顯示提示信息*/
scanf(“%d%d”,&number1,&number2);/*讀取整數(shù)*/result=number1*number2;/*賦值運算*/
printf(“theresultis:%d\n”,result);/*輸出結(jié)果*/
return0;}2000H2004Hresult2002H2005H2007H2006H2003H2001H存儲空間number1number21020pleaseinputthetwonumbers:theresultis:2001020200任務(wù)描述:輸入兩個整數(shù),求兩數(shù)之積并輸出。/**/:注釋main()函數(shù)變量定義部分操作部分編譯后,源程序中出現(xiàn)number1、number2和result的地方將會用內(nèi)存相對地址(非真正物理地址)替換,真正的物理地址由操作系統(tǒng)分配。指令執(zhí)行時用相應(yīng)的尋址方式去取變量中存儲的操作數(shù)。編譯程序怎么處理變量?操作系統(tǒng)怎么分配內(nèi)存?指令中有哪幾種尋址方式?深入學(xué)習(xí):《編譯原理》+《操作系統(tǒng)》+《計算機組成原理》假設(shè)操作系統(tǒng)已經(jīng)分配如下內(nèi)存空間用于存放操作數(shù)和結(jié)果程序運行過程演示第49頁/共101頁51輸入輸出練習(xí):定義三個變量,分別是整型、浮點型、字符型。要求從鍵盤輸入三個值存放到這三個變量里,并且輸出這三個變量。main(){inti;floatf;charc;scanf(“%d,%f,%c”,&i,&f,&c);printf(“theresultis:\n”);printf(“i=%d,f=%f,c=%c”,i,f,c);system(“pause”);return0;}第50頁/共101頁52main(){inti;floatf;charc;printf("inputi,f\n");scanf("%d,%f",&i,&f);printf("inputc\n");scanf("%c",&c);printf("theresultis:結(jié)果是\n");printf("i=%d,f=%f,c=%c",i,f,c);system("pause");return0;}請同學(xué)們看看本程序的輸出是什么?inputi,f10,3.14inputctheresultis:i=10,f=3.140000,c=請按任意鍵繼續(xù)...程序并沒有給用戶輸入字符數(shù)據(jù)的機會。為什么?第51頁/共101頁53解決方法:用getchar函數(shù)來“消耗掉”回車符main(){inti;floatf;charc;printf("inputi,f\n");scanf("%d,%f",&i,&f);printf("inputc\n");getchar();scanf("%c",&c);printf("theresultis:結(jié)果是\n");printf("i=%d,f=%f,c=%c",i,f,c);system("pause");}inputi,f10,3.14inputcytheresultis:i=10,f=3.140000,c=r請按任意鍵繼續(xù)...結(jié)果正確!第52頁/共101頁54表達式是由運算符、操作數(shù)和括號組成的、計算求值的基本單位。 如:3+5就是一個值為8的表達式。典型的幾類運算符和表達式: 算術(shù)運算符和算術(shù)表達式; 關(guān)系運算符和關(guān)系表達式; 邏輯運算符和邏輯表達式; 賦值運算符和賦值表達式;3.6表達式操作數(shù):可以為常量、變量、函數(shù)或表達式第53頁/共101頁553.6表達式一、算術(shù)運算符和算術(shù)表達式算術(shù)運算符:+、-、×、/、%(取余)等;算術(shù)表達式:由算術(shù)運算符、操作數(shù)和括號構(gòu)成的表達式。如:(2+8.2/3)*4,10%4(余數(shù)為2)+(加)-(減)*(乘)/(除,取商)%(取模)++(自加,加1)--(自減,減1)第54頁/共101頁563.6表達式-算術(shù)表達式(b*b-4*a*c)/(2*a)要注意編程序式,對算術(shù)表達式的書寫和平時的書寫方式可能是不一樣的:第55頁/共101頁57在C語言中,算術(shù)運算的操作數(shù)可以是整數(shù)、字符或者浮點數(shù)。如果表達式中的操作數(shù)全是整數(shù),則表達式的值為整數(shù);如果操作數(shù)至少有一個是浮點數(shù),則表達式的值為浮點數(shù)。3.6表達式-算術(shù)表達式求以下表達式的值:1)102/202)102%203)1/24)1.0/25)x=‘A’+32(x是整型變量)求以下表達式的值:1)102/20=52)102%20=23)1/2=04)1.0/2=0.55)x=‘A’+32x=97思考:如果表達式的操作數(shù)有整數(shù)和字符,運算結(jié)果是什么類型?第56頁/共101頁583.6表達式-算術(shù)表達式C語言中,整型、字符型、浮點型數(shù)據(jù)可以進行混合運算.如:5+1.0+'A'=71.000000 混合運算涉及到數(shù)據(jù)類型的轉(zhuǎn)換,具體將在以后介紹。自加運算符++和自加運算符—是C語言特有的運算符,將在以后介紹。第57頁/共101頁593.6表達式二、關(guān)系運算符和關(guān)系表達式關(guān)系運算符:用于比較兩個數(shù)據(jù)的大小關(guān)系。關(guān)系表達式:用關(guān)系運算符將兩個表達式連接起來構(gòu)成的表達式,如(2+3)<10;運算結(jié)果是邏輯值真或者假。在C語言中,若運算結(jié)果是邏輯“真”,則關(guān)系表達式的值為1;若為邏輯“假”,則值為0。
<(小于)<=(小于等于)>(大于)>=(大于等于)==(等于)?。剑ú坏扔冢┑?8頁/共101頁603.6表達式-關(guān)系表達式思考:以下語句的輸出結(jié)果是什么?printf("thevalueof(2+3)<10is:%d\n",(2+3)<10);printf("thevalueof(2+3)==10is:%d\n",(2+3)==10);thevalueof(2+3)<10is:1thevalueof(2+3)==10is:0第59頁/共101頁613.6表達式三、邏輯運算符和邏輯表達式邏輯運算符:與、或、非
&&(與)a&&b:當(dāng)且僅當(dāng)兩個運算量a和b的值都為“真”時,運算結(jié)果為“真”,否則為“假”(如何判斷運算量值是否為真?)||(或)a||b:當(dāng)且僅當(dāng)兩個運算量a和b的值都為“假”時,運算結(jié)果為“假”,否則為“真”。?。ǚ牵?a:當(dāng)運算量a的值為“真”時,運算結(jié)果為“假”;當(dāng)運算量a的值為“假”時,運算結(jié)果為“真”C語言中,只要運算量值為非零,即為真。值為0,即為假第60頁/共101頁623.6表達式-邏輯表達式運算量a和b可以是常量、變量、表達式、函數(shù)。邏輯表達式:用邏輯運算符將簡單的關(guān)系表達式 連接起來構(gòu)成的表達式;運算結(jié)果 是邏輯值真或者假;
第61頁/共101頁633.6表達式-邏輯表達式intmain(){inta=1,b=2,c=4,f;printf(“a=%d,b=%d,c=%d\n",a,b,c);f=(a<b)&&(b<c);
printf("f=(a<b)&&(b<c),f=%d\n",f);f=(a>b)||(b>c);
printf("f=(a>b)||(b>c),f=%d\n",f);printf("!(a>b)is:%d\n",!(a>b));
printf("!ais:%d\n",!a));system("pause");}輸出結(jié)果?a=1,b=2,c=4f=(a<b)&&(b<c),f=1f=(a>b)||(b>c),f=0!(a>b)is:1!ais:0思考:printf("thevalueofa<b<cis:%d\n",a<b<c);第62頁/共101頁64四、賦值運算符和賦值表達式
賦值運算符:用于將值存儲到變量中;賦值表達式:帶有賦值運算符的表達式;3.6表達式第63頁/共101頁653.6表達式運算符優(yōu)先級問題: 表達式a>20&&a%5==0的值?優(yōu)先級:算術(shù)運算符>關(guān)系運算符>邏輯運算符>賦值運算符
如:i=a>20&&a%5==0相當(dāng)于: i=((a>20)&&((a%5)==0)) 如何理解:對算術(shù)運算結(jié)果進行關(guān)系運算,關(guān)系運算結(jié)果進行邏輯運算,以上運算結(jié)果賦值給變量(賦值運算)。后續(xù)會詳細介紹。
第64頁/共101頁66表達式小測試寫出下列表達式:1)i被j整除;2)m是偶數(shù);3)y[-100,-10],且y[10,100];4)判斷x年是否是閏年的條件: a)能被4整除但不能被100整除;或b)能被100整除且能被400整除;5)將整型變量i和j相除后的結(jié)果賦值給整型變量t;i%j==0m%2==0y<-100||(y>-10&&y<10)||y>100(x%4==0&&x%100!=0)||(x%100==0&&x%400=0)(x%4==0&&x%100!=0)||(x%400=0)5.t=i/j第65頁/共101頁67字符型數(shù)據(jù)操作測試#include<stdio.h>main(){charch1=’A’,ch2=’S’;/*‘A’的ASCII是 65,'a'的ASCII是97,'S'的ASCII是83*/printf("\n%c,%d",ch1,ch1);printf("\n%c,%d",ch2,ch2);printf("\n%c,%d",ch1+32,ch1+32);printf("\n%d",ch1<ch2);printf("\n%d%c",ch1-ch2,ch1-ch2); system(“pause”);} 請寫出程序運行結(jié)果A65S83a971-18由于ch1-ch2得到的結(jié)果是負數(shù),所以以字符形式輸出時無對應(yīng)字符!第66頁/共101頁68請寫出判斷一個字符c是否是字母的邏輯表達式(c>‘a(chǎn)’&&c<‘z’)||(c>‘A’&&c<‘Z’)字符型數(shù)據(jù)操作測試第67頁/共101頁69語句用于向計算機發(fā)出操作指令。一條語句經(jīng)編譯后產(chǎn)生一條或多條機器指令。一個實際的程序可能包括若干條語句。C語言規(guī)定了6類語句:
表達式語句、復(fù)合語句、選擇語句、 循環(huán)語句、標記語句、跳轉(zhuǎn)語句3.7語句第68頁/共101頁70一、表達式語句
表達式:算術(shù)表達式、關(guān)系表達式、邏輯表達式、 賦值表達式。
表達式語句:在一個表達式末尾加上分號“;”(分號是C語言中語句的結(jié)束符)。i<j;(無意義)i=i+10*j;(賦值表達式語句)3.7語句第69頁/共101頁71如果表達式涉及到賦值(存在賦值運算符或運算符++或--,如i=i+10*j;),則將計算得到的值保存到變量中。如果不涉及賦值(如語句i<j;)
,則值將被丟棄3.7語句第70頁/共101頁72二、復(fù)合語句
復(fù)合語句是包含零個或多個語句的代碼單元,使得一組語句成為一個整體,也被稱為塊。在C語言中,復(fù)合語句由一個左大括號、可選語句段、一個右大括號組成。如:
{
i=1; j=2*i; }3.7語句第71頁/共101頁73三、選擇語句
3.7語句在寫程序時,有時往往需要測試某一個條件是否成立,然后根據(jù)檢測結(jié)果來控制程序后續(xù)執(zhí)行路徑。此時要用到選擇語句。C語言中選擇語句有:
1)if-else語句2)switch語句(以后再講)第72頁/共101頁741)if-else
實現(xiàn)雙路選擇if(表達式){語句組1}else{語句組2}b)C語句a)流程圖表達式語句組1語句組2真(非0)假(為0)表達式可以是任一種表達式;表達式的值為非零時,表示表達式為真;否則為假。3.7語句第73頁/共101頁753.7語句(1)if語句中的“表達式”必須用“(”和“)”括起來。(2)else子句(可選)是if語句的一部分,必須與if配對使用,不能單獨使用。(3)當(dāng)if和else下面的語句組,僅由一條語句構(gòu)成時,也可不使用復(fù)合語句形式(即去掉花括號)。第74頁/共101頁76if(表達式){
語句1;語句2;
…}else{語句n;語句n+1;
…}表達式:一般是關(guān)系表達式和邏輯表達式語句:輸入輸出語句;賦值語句;if語句;第75頁/共101頁77例3.3輸入一個整數(shù),判別它是否能被3整除。若能被3整除,輸出YES;若不能被3整除,輸出NO。
#include<stdio.h>main(){intn;/*定義變量n*/printf(“inputn:”);/*輸入提示*/scanf(“%d”,&n);/*輸入整數(shù)到變量n中*/
if(n%3==0)printf(“n=%dYES\n”,n);/*若n能被3整除,則輸出“YES”*/elseprintf(“n=%dNO\n”,n);/*若n不能被3整除,則輸出“NO”*/system(“pause”);return0;}inputn:20n=20NO第76頁/共101頁78main(){intn;/*定義變量n*/printf("inputn:");/*輸入提示*/scanf("%d",&n);/*輸入整數(shù)到變量n中*/if(n<=0)printf("\nerrorinput!thenumbershouldbepositive");else{if(n%3==0)printf("\nn=%d,YES",n);/*若n能被3整除,則輸出“YES”*/elseprintf("\nn=%d,NO",n);/*若n不能被3整除,則輸出“NO”*/}system("pause");}改動:輸入一個正整數(shù),判別它是否能被3整除。若輸入的不是正整數(shù),則提示出錯信息;否則,若能被3整除,輸出YES;若不能被3整除,輸出NO。
{}內(nèi)可以有多條語句;如果只有一條語句,則{}可以省略通過縮進來更好地展示代碼結(jié)構(gòu)第77頁/共101頁79main(){intn;/*定義變量n*/printf("inputn:");/*輸入提示*/scanf("%d",&n);/*輸入整數(shù)到變量n中*/if(n<=0)printf("\nerrorinput!thenumbershouldbepositive");elseif(n%3==0)printf("\nn=%d,YES",n);/*若n能被3整除,則輸出“YES”*/elseprintf("\nn=%d,NO",n);/*若n不能被3整除,則輸出“NO”*/system("pause");}else和離它最近的if匹配第78頁/共101頁80main(){intn;/*定義變量n*/printf("inputn:");/*輸入提示*/scanf("%d",&n);/*輸入整數(shù)到變量n中*/if(n<=0)printf("\nerrorinput!thenumbershouldbepositive");elseif(n%3==0)printf("\nn=%d,YES",n);/*若n能被3整除,則輸出“YES”*/elseprintf("\nn=%d,NO",n);/*若n不能被3整除,則輸出“NO”*/system("pause");}嵌套的if-else語句的另外一種寫法第79頁/共101頁81練習(xí)1:輸入一個字符,如果是小寫字母,則輸出為:thisisalower-caseletter;如果是大寫字母,則輸出為:thisisaupper-caseletter;如果是數(shù)字,則輸出為:thisisadigit;若是其他,則輸出為:thisisneitheraletternoradigit.第80頁/共101頁822)switch
實現(xiàn)多路選擇常量表達式的值必須是C語言中的整型、字符型或者枚舉類型。switch(表達式){case常量表達式1:語句組1;[break;]case常量表達式3:語句組2;[break;]······case常量表達式n:語句組n;[break;]default:語句組n+1;}方括號表示其內(nèi)的語句可選圖3.5switch語句3.7語句第81頁/共101頁83switch(sex){case0:printf(“hello,boy!");break;case1:printf("hello,girl");break;default:printf(“invalidsex”);}switch語句實例:3.7語句第82頁/共101頁84四、循環(huán)結(jié)構(gòu)語句
3.7語句有時程序中需要多次運行同一段代碼。這種控制結(jié)構(gòu)稱為循環(huán)結(jié)構(gòu)。C語言提供了三類用于實現(xiàn)循環(huán)結(jié)構(gòu)的語句:1)while2)do-while3)for(以后再講)第83頁/共101頁851)while
語句組表達式真(非0)假(為0)圖3.6while語句while(表達式){語句1;語句2·····}a)流程圖b)C語句3.7語句此處的表達式可以為任意一種表達式;如果表達式值為真(非0),則執(zhí)行語句組;執(zhí)行完后再測試表達式,如果仍為真(非0),則再次執(zhí)行語句組;直到表達式為假(為0)。第84頁/共101頁86#include<stdio.h>#defineN10main(){ inti=0;
while(i<=N){ printf("%d",i);i=i+1;}system(“pause”);return0;}while語句實例:輸出0~N之間的整數(shù)(N>0)程序運行結(jié)果是什么?2000H2002H2004H2003H2001H存儲空間i注意此處沒有分號012…第85頁/共101頁87練習(xí):輸入一個正整數(shù),判別它是否能被3整除。若輸入的不是正整數(shù),則提示出錯信息,并請用戶重新輸入,直到輸入一個正整數(shù)。若該正整數(shù)能被3整除,輸出YES;若不能被3整除,輸出NO。程序主體:
scanf(“%d”,&n); while(n<=0){ printf(“……”); scanf(“%d”,&n); }第86頁/共101頁88#include<stdio.h>main(){intn;/*定義變量n*/printf("inputn(n>0):");/*輸入提示*/scanf("%d",&n);/*輸入整數(shù)到變量n中*/while(n<=0){printf("\nerrorinput!thenumbershouldbepositive");printf("\ninputn(n>0):");scanf("%d",&n);}if(n%3==0)printf("\nn=%d,YES",n);/*若n能被3整除,則輸出“YES”*/elseprintf("\nn=%d,NO",n);/*若n不能被3整除,則輸出“NO”*/system("pause");return0;}練習(xí):輸入一個正整數(shù),判別它是否能被3整除。若輸入的不是正整數(shù),則提示出錯信息,并請用戶重新輸入;否則,若能被3整除,輸出YES;若不能被3整除,輸出NO。第87頁/共101頁89練習(xí)2:輸入起止年份,輸出這兩年之間的閏年。用while結(jié)構(gòu)實現(xiàn)。閏年的條件是: a)能被4整除但不能被100整除;或b)能被100整除且能被400整除;第88頁/共101頁9
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同管理培訓(xùn)合同:上海項目實踐與招投標(2025版)
- 二零二五年度智慧城市建設(shè)名義合伙人合同3篇
- 2025年度農(nóng)民工勞動合同電子化管理方案及實施細則3篇
- 二零二五年度農(nóng)業(yè)產(chǎn)業(yè)鏈金融服務(wù)創(chuàng)新合同-@-1
- 2025版企業(yè)內(nèi)部設(shè)備維修承包合同規(guī)范文本4篇
- 2025年度排洪渠項目監(jiān)理合同模板3篇
- 二零二五年度人工智能核心算法軟件知識產(chǎn)權(quán)獨家轉(zhuǎn)讓合同3篇
- 二零二五年度全新品牌專賣店開設(shè)服務(wù)合同范本4篇
- 2025年度票據(jù)代理業(yè)務(wù)委托合同范本6篇
- 2025年度苗圃技術(shù)員崗位聘用合同修訂版
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2024-2025學(xué)年八年級上學(xué)期1月期末物理試題(含答案)
- 商場電氣設(shè)備維護勞務(wù)合同
- 《妊娠期惡心嘔吐及妊娠劇吐管理指南(2024年)》解讀
- 2025年高考語文作文滿分范文6篇
- 2023年國家公務(wù)員錄用考試《行測》真題(行政執(zhí)法)及答案解析
- 全國教學(xué)設(shè)計大賽一等獎英語七年級上冊(人教2024年新編)《Unit 2 Were Family!》單元教學(xué)設(shè)計
- 2024智慧醫(yī)療數(shù)據(jù)字典標準值域代碼
- 年產(chǎn)12萬噸裝配式智能鋼結(jié)構(gòu)項目可行性研究報告模板-立項備案
- 【獨家揭秘】2024年企業(yè)微信年費全解析:9大行業(yè)收費標準一覽
- 醫(yī)療器械經(jīng)銷商會議
評論
0/150
提交評論