C語言程序設計 課件 2“學生成績管理系統(tǒng)”中相關數(shù)據(jù)設計及簡單處理_第1頁
C語言程序設計 課件 2“學生成績管理系統(tǒng)”中相關數(shù)據(jù)設計及簡單處理_第2頁
C語言程序設計 課件 2“學生成績管理系統(tǒng)”中相關數(shù)據(jù)設計及簡單處理_第3頁
C語言程序設計 課件 2“學生成績管理系統(tǒng)”中相關數(shù)據(jù)設計及簡單處理_第4頁
C語言程序設計 課件 2“學生成績管理系統(tǒng)”中相關數(shù)據(jù)設計及簡單處理_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設計創(chuàng)建第一個C語言程序項目1“學生成績管理系統(tǒng)”中相關數(shù)據(jù)設計及簡單處理項目2項目中學生成績的等級判定項目3項目中的設計數(shù)據(jù)處理及封面與菜單的初步項目4學生成績的分組匯總程序項目5利用數(shù)組完善項目中數(shù)據(jù)的處理項目6利用函數(shù)進行項目的整體框架設計項目7利用結(jié)構(gòu)體實現(xiàn)項目項目8利用指針優(yōu)化項目項目9利用文件完善項目項目10項目2“學生成績管理系統(tǒng)”中相關數(shù)據(jù)設計及簡單處理目標TARGET知識目標了解C語言的基本字符掌握C語言的標識符、關鍵字理解和掌握數(shù)據(jù)類型、常量和變量掌握運算符與表達式目標TARGET技能目標學會正確的定義變量、使用變量和常量能夠正確的運用各種運算符和表達式“學生成績管理系統(tǒng)”中的相關數(shù)據(jù)設計任務2.1學生成績總分及平均分的計算任務2.2任務2.1“學生成績管理系統(tǒng)”中的相關數(shù)據(jù)設計

任務描述完成“學生成績管理系統(tǒng)”,需要不同數(shù)據(jù)類型的數(shù)據(jù)。假設該系統(tǒng)需要完成學生三門課程的總分及平均分,確定該系統(tǒng)中所需數(shù)據(jù)。任務分析假設三門課程分別為數(shù)學、英語、語文,可以將定義為整型數(shù)據(jù),三門課程的總分也為整型數(shù)據(jù),而三門課程的平均分應該為實型。任務2.1“學生成績管理系統(tǒng)”中的相關數(shù)據(jù)設計

算法設計(1)定義iMath、iEnglish、iChinese為int型,分別存儲數(shù)學、英語、語文成績。(2)定義iSum為int型,存儲三門課程的總分。(3)定義fAverage為float型,存儲三門課程的平均分。任務2.1“學生成績管理系統(tǒng)”中的相關數(shù)據(jù)設計

實現(xiàn)在線測試系統(tǒng)主頁面的布局和美化某班級需要一個學生成績管理系統(tǒng),該系統(tǒng)應具有學生成績的添加、刪除、查詢、修改、插入和排序等處理功能,提供數(shù)字按鍵菜單操作方式,如圖0-1所示。程序代碼#include"stdio.h"/*編譯預處理命令*/voidmain(){intiMath,iEnglish,iChinise;/*定義整型變量iMath、iEnglish、iChinese*/intiSum;/*定義整型變量iSum*/floatfAverage;/*定義單精度實型變量fAverage*/……}/*main()主函數(shù)結(jié)束*/1基本數(shù)據(jù)及其運算Part◎C語言的數(shù)據(jù)類型◎常量和變量◎基本字符、標識符和關鍵字基本字符、標識符和關鍵字

1.基本字符C程序可以看作是由C語言的基本字符按一定的規(guī)則組成的一個序列。C程序中使用的基本字符包括:(1)大小寫英文字母ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz(2)十進制阿拉伯數(shù)字0123456789(3)下面29個符號!"#%&'()*+,-./:;<=>?[\]^_{|}~(4)5種空白符空格、水平制表符、垂直制表符、換行、換頁基本字符、標識符和關鍵字

1.基本字符(5)基本運行字符集還包括四個不可打印的字符:null字符(用做字符串終止符)、警報(alert)、退格(backspace)、回車(carriagereturn)為了在字母和字符串中表示這些字符,輸入反斜杠\加對應的轉(zhuǎn)義序列(escapesequence)即可,例如,\0表示null字符(空字符),\a表示警報,\b表示退格,而\r表示回車。不同的C實現(xiàn)版本中,字符實際對應的數(shù)值(字符碼)可能不同。C語言本身僅規(guī)定了以下規(guī)則:基本字符集中的每個字符必須用一個字節(jié)(byte)表示??兆址且粋€字節(jié),其所有的位(bit)都是0。0之后的每個十進制數(shù)字,編碼都要依次比前者大1?;咀址俗R符和關鍵字

2.標識符和其他高級語言一樣,我們把用來標識變量名、函數(shù)名、符號常量名、數(shù)組名、結(jié)構(gòu)體名等的有效字符序列稱為“標識符”(Identifier),簡單的講,標識符就是一個名字。比如,我們在程序中使用了諸如a、abc、mn123這樣的名字,它們都是程序員自己起的,一般能夠表達出變量的作用,這就是標識符。不過,名字也不能隨便起,要遵守規(guī)范。C語言規(guī)定,標識符的命名規(guī)則為:(1)只能由字母(A~Z,a~z)、數(shù)字(0~9)和下劃線(_)組成;(2)只能以字母或下劃線開頭;(3)不能使用C語言中的關鍵字;(4)標識符的有效長度隨系統(tǒng)而異,但至少前8個字符有效;如果超長,則超長部分被舍棄。基本字符、標識符和關鍵字

根據(jù)C語言中標識符的命名規(guī)則可以做出如下判斷:(1)合法的標識符有:a,x,x3,BOOK_1,sum5,_f23,file_name(2)非法的標識符有:3s,s*T,-3x,bowy-1,int例2-1判斷下面標識符哪些是合法的,哪些是非法的。a,3s,x,x3,BOOK_1,s*T,-3x,sum5,_f23,bowy-1,int,file_name。說明:題目中3s以數(shù)字開頭,-3x出現(xiàn)非法字符*,-3x不能以減號(-)開頭,bowy-1出現(xiàn)非法字符減號(-),int是關鍵字。注意:(1)C語言雖然不限制標識符的長度,但是它受到不同編譯器的限制,同時也受到操作系統(tǒng)的限制。例如在某個編譯器中規(guī)定標識符前128位有效,當兩個標識符前128位相同時,則被認為是同一個標識符。(2)在標識符中,大小寫是有區(qū)別的,例如BOOK和book是兩個不同的標識符。(3)標識符雖然可由程序員隨意定義,但標識符是用于標識某個量的符號,因此,命名應盡量有相應的意義,以便于閱讀和理解,作到“見名知義”。(4)函數(shù)名、變量名一般用小寫,而符號常量一般為大寫。(5)不要使用函數(shù)中的庫函數(shù)名、預處理名等作為自定義的標識符。基本字符、標識符和關鍵字

3.關鍵字關鍵字(Keywords)是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字,例如int、char、long、float、unsigned等。我們定義的標識符不能與關鍵字相同,否則會出現(xiàn)錯誤。你也可以將關鍵字理解為具有特殊含義的標識符,它們已經(jīng)被系統(tǒng)使用,我們不能再使用了?;咀址?、標識符和關鍵字

C語言關鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile說明:根據(jù)關鍵字的作用可以將關鍵字分為數(shù)據(jù)類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它關鍵字四類。(1)數(shù)據(jù)類型關鍵字(11.5個)基本類型:char,int,float,double修飾類型:short,long,signed,unsigned構(gòu)造類型:enum,union,struct其他類型:void(2)控制語句關鍵字(12個):循環(huán)語句:for,do,while,break,continue條件語句:if,else,goto開關語句:switch,case,default返回語句:return說明:(3)存儲類型關鍵字(6個):auto,extern,register,static,const,volatile(4)其它關鍵字(2.5個):void,sizeof,typedef減號(-),int是關鍵字。C語言的數(shù)據(jù)類型

數(shù)據(jù)類型決定數(shù)據(jù)的存儲空間的大小及表現(xiàn)形式、數(shù)據(jù)的取值范圍和運算方式。C語言提供的數(shù)據(jù)類型非常豐富,包括基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型、指針類型和空類型四大類,具體如圖2-1所示。1.

C語言的數(shù)據(jù)類型分類C語言的數(shù)據(jù)類型

基本數(shù)據(jù)類型是C語言系統(tǒng)本身提供的,結(jié)構(gòu)比較簡單。構(gòu)造類型是由基本數(shù)據(jù)類型構(gòu)造而成的。指針類型是一種重要的數(shù)據(jù)類型,可以表示復雜的數(shù)據(jù)類型,使用起來非常靈活。本節(jié)只介紹基本數(shù)據(jù)類型,其余的數(shù)據(jù)類型在后面的章節(jié)中介紹。short、int、long、char、float、double這六個關鍵字代表C語言里的六種基本數(shù)據(jù)類型。在不同的系統(tǒng)上,這些類型占據(jù)的字節(jié)長度是不同的。在32位的系統(tǒng)上,這六種基本數(shù)據(jù)類型的所占字節(jié)長度和取值范圍如表2-2所示,具體可以用sizeof測試一下。1.

C語言的數(shù)據(jù)類型分類C語言的數(shù)據(jù)類型

C語言的數(shù)據(jù)類型的取值范圍名稱標識符占用內(nèi)存取值范圍字符型char1字節(jié)-128~127短整型short2字節(jié)-32768~32767整型int4字節(jié)-2-31~231-1長整型long4字節(jié)-2-31~231-1單精度型float4字節(jié)3.4*10-38~3.4*1038或者-3.4*1038~-3.4*10-38雙精度型double8字節(jié)1.7*10-308~1.7*10308或者-1.7*10308~-1.7*10-308C語言的數(shù)據(jù)類型

整型數(shù)據(jù)分為整型、短整型和長整型3大類,其中每一類又分為無符號(unsigned)和有符號(signed)兩種情況。整型數(shù)據(jù)是以二進制補碼的形式存儲的。對有符號數(shù)據(jù),則存儲單元的最高位為符號位,1表示負數(shù),0表示正數(shù)。對無符號數(shù),則沒有符號位,所有的存儲單元均為數(shù)據(jù)位。2.整型數(shù)據(jù)說明:整數(shù)有原碼、反碼和補碼3種表示方法。一個正數(shù)的原碼、反碼和補碼與原碼相同。負數(shù)的原碼就是把符號位數(shù)值化。負數(shù)的補碼就是在反碼的末位(最右端)加1。C語言的數(shù)據(jù)類型

實型數(shù)據(jù)也稱浮點數(shù),指帶有小數(shù)部分的非整數(shù)數(shù)值,在C語言中,實型數(shù)據(jù)分為單精度和雙精度。實型數(shù)據(jù)都是有符號數(shù)據(jù),沒有無符號實型數(shù)據(jù)。實型數(shù)據(jù)在計算機中是以指數(shù)形式存儲的,把它分為小數(shù)和指數(shù)兩個部分,其中小數(shù)部分的位數(shù)越多,數(shù)的有效位就越多,數(shù)的精度就越高,指數(shù)部分的位數(shù)越多,數(shù)的表示范圍就越大。實型數(shù)據(jù)通常在程序中用小數(shù)形式書寫,只是在數(shù)值很大或者很小時,才會使用指數(shù)形式。在用指數(shù)形式表示時,E前必須要有數(shù)字,E后是整數(shù)。3.實型數(shù)據(jù)C語言的數(shù)據(jù)類型

在內(nèi)存中,一個字符型數(shù)據(jù)占用一個字節(jié)(8bite),以ASCII碼的二進制形式存放。比如字符'a'的ASCII碼值是97,則'a'在內(nèi)存中的存放形式如圖2-2所示。4.字符型數(shù)據(jù)注意:常用字符數(shù)據(jù)的ASCII碼值可以參考附錄A“ASCII碼表”,表中列出了標準ASCII字符集128個字符,其編碼為0到127之間。'A'的ASCII碼值是65,'B'的ASCII碼值是66;'a'的ASCII碼值是97,'b'的ASCII碼值是98;其大小寫的ASCII碼相差32。'0'的ASCII碼值是48,'1'的ASCII碼值是49,只要記住'A'、'a'、'0'的ASCII碼值,就可以推算出其他字母和數(shù)字的ASCII碼值。字符型數(shù)據(jù)有時可以和整型數(shù)據(jù)通用,具體表現(xiàn)在:一個字符型變量可以賦以一個字符常量,也可以賦以一個整數(shù)。字符型數(shù)據(jù)在輸出時可以以字符格式輸出,也可以以整數(shù)格式輸出。以整數(shù)格式輸出時,ASCII碼值在1-127之間的字符輸出正數(shù),128-255之間的字符輸出負數(shù)。字符型數(shù)據(jù)可以進行算術運算,運算時以它們的ASCII碼值進行運算?;咀址俗R符和關鍵字

#include"stdio.h"voidmain(){

intc1,c2;

//定義整型變量c1,c2

c1='a';//將字符常量附給變量c1

c2=97;//將97("a"的ASCII碼值)附給變量c2

printf("c1=%c,c2=%c\n",c1,c2);//用字符格式輸出變量c1,c2

printf("c1=%d,c2=%d\n",c1,c2);//用整數(shù)格式輸出變量c1,c2}例2-2字符型數(shù)據(jù)和整型數(shù)據(jù)通用舉例?;咀址?、標識符和關鍵字

運行結(jié)果注意:變量c1、c2在內(nèi)存中的值都是97,輸出什么取決于格式說明符是%d還是%c。常量和變量

1.常量在程序的執(zhí)行過程中,其值不能被改變的量稱為常量。常量一般從其字面形式即可判別,不需要類型說明就可以直接使用,這種常量稱為普通常量或字面常量,其類型是由常量本身隱含決定的;常量也可以用標識符來代表,這種常量稱為符號常量。在C語言中,常量和變量都是可以用來存儲和表示數(shù)據(jù)的,常量值在程序執(zhí)行的過程中是不可變的,而變量是可變的。常量和變量

普通常量在程序的執(zhí)行過程中,其值不能被改變的量稱為常量。常量一般從其字面形式即可判別,不需要類型普通常量有4類:整型數(shù)值常量、實型數(shù)值常量、字符常量和字符串常量。(1)整型數(shù)值常量整型數(shù)值常量有三種表示方法:十進制(0-9十個數(shù)字構(gòu)成,逢10進1),如:1,200,3500十六進制(0-9十個數(shù)字,A-F六個字符構(gòu)成,逢16進1),以0x或0X開頭的數(shù)字序列,如:0x12,0X706A,0xF2B八進制(0-7八個數(shù)字構(gòu)成,逢8進1),以0開頭的數(shù)字序列,如:025,0706常量和變量

普通常量(2)實型數(shù)值常量實型數(shù)據(jù)也稱浮點數(shù),指帶有小數(shù)部分的非整數(shù)數(shù)值,實型數(shù)值常量有2種表示方法:小數(shù)形式:726.8,97.3,0.529指數(shù)形式:3.23E-5,1.5E2常量和變量

普通常量(3)字符型常量字符型常量有2種表示方法:用單引號引起來的單個字符,如'a','A','$'轉(zhuǎn)義字符表示法,如"\n","\105","\'\n','\105','\X7B'"這里的轉(zhuǎn)義字符是一種特殊的字符常量,通常用來表示一些比較特殊的字符,比如不可視,或者不能通過鍵盤輸入的都可以用轉(zhuǎn)義字符表示。轉(zhuǎn)義字符是以"\"開頭的字符序列,常用的轉(zhuǎn)義字符如表2-3所示。常量和變量

常用轉(zhuǎn)義字符轉(zhuǎn)義字符意義ASCII碼值(十進制)\a響鈴(BEL)007\b退格(BS),將當前位置移到前一列008\f換頁(FF),將當前位置移到下頁開頭012\n換行(LF),將當前位置移到下一行開頭010\r回車(CR),將當前位置移到本行開頭013\t水平制表(HT)(跳到下一個TAB位置)009\v垂直制表(VT)011\\代表一個反斜線字符''\'092\'代表一個單引號(撇號)字符039\"代表一個雙引號字符034\?代表一個問號063\0空字符(NUL)000\ooo1到3位八進制數(shù)所代表的任意字符\xhh十六進制所代表的任意字符說明:(1)表2-3中最后2行是用ASCII碼(八進制或是十六進制)表示一個字符。如:\101代表ASCII碼為65(十進制)的字符'A',\012代表ASCII碼為10(十進制)的字符\n,即換行符,字符\000或者\0代表ASCII碼為0(十進制)的控制符,即空字符。(2)轉(zhuǎn)義字符從書寫上看是一個字符序列,實際上是作為1個字符對待的,存儲時只占1個字節(jié)。常量和變量

普通常量(4)字符串常量字符串常量簡稱字符串,是用一對雙引號括起來的字符序列。例如"china","1","A","123"等。這里的雙引號只起定界的作用,它不屬于字符串中的字符。而且C語言會自動在字符串尾部加上一個轉(zhuǎn)義字符"\0"(空字符,其ASCII碼值為0)作為字符串的結(jié)束標記。因此,字符串在內(nèi)存中占用的存儲字節(jié)數(shù)要比字符串長度多1,即雙引號之間的字符個數(shù)加1,才是字符串存儲時的字節(jié)數(shù)。同時我們可以通過"\0"來判斷字符串是否結(jié)束。以字符串"china"為例,字符串的存儲形式如圖2-3所示。'c''h''i''n''a''\0'常量和變量

符號常量符號常量就是用標識符來表示常量。C語言中,可以用以下兩種方法定義符號常量。(1)使用編譯預處理命令define符號常量可以在文件的開始定義,其定義格式如下:#define常量名常量值如:

#definePI3.1415926#defineN100常量和變量

符號常量2)使用常量說明符constconst是C語言中32個關鍵字之一,可以用來定義符號常量,具體格式如下:const數(shù)據(jù)類型常量名=常量值如:constfloatpi=3.1415926定義了符號常量后,就可以在程序中用符號代替常量出現(xiàn),這不僅提高了程序的可讀性,也同時給程序的修改帶來了極大的方便。常量和變量

#definePI3.1415926/*定義符號常量PI代替圓周率*/#include"stdio.h"voidmain(){floatfR,fArea;fR=10;fArea=PI*fR*fR;printf("theareaofthiscircleis%0.2f\n",fArea);}例2-3符號常量的使用。說明:符號常量一般用大寫字母表示,方便與其他標識符區(qū)分。常量和變量

2.變量—變量的概念在程序執(zhí)行過程中,其值可以改變的量稱為變量。在C語言中,變量相當于存儲數(shù)據(jù)的容器,在內(nèi)存中占據(jù)一定的存儲單元,用于存放數(shù)據(jù),即變量值。我們可以使用變量來保存程序執(zhí)行過程中的輸入數(shù)據(jù)、中間結(jié)果和最終結(jié)果。每個變量都要用一個名字表示,即變量名。這個名字是由程序設計者命名,且一定要遵守標識符的命名規(guī)則。常量和變量

變量的定義變量在程序中負責存儲數(shù)據(jù),而數(shù)據(jù)具有整型、實型、字符型等不同的類型。因此,變量在定義時一定要有相應的類型。變量必須先定義后使用,變量定義時必須提供兩個方面的信息:變量名和變量的類型。變量定義語句的一般形式是:類型標識符變量名列表;例如:inta,b;//定義了2個整型變量a、blongc;//定義了1個長整型變量cfloatr,s;//定義了2個單精度實型變量r、sdoublex;//定義了1個雙精度實型變量xcharch;//定義了1個字符型變量ch常量和變量

變量的初始化在定義變量的同時給變量賦一個初值,稱為變量的初始化。例如:intsum=0;floatf=123.45;charch='A';說明:(1)變量必須先定義再使用,否則程序無法為其分配存儲空間。(2)變量具有三個要素:變量名、類型和當前值。變量的值除了可以通過賦初值的方式獲取,還可以通過賦值的方法獲得和改變。首次使用變量時,變量必須要有確定的值,否則會導致運算錯誤。常量和變量

intiAge=20,iNum=201; charcSex='m';/*f:female(女),m:male(男)*/ floatfScore; fScore=580.5;例2-4按照問題定義適當?shù)淖兞?。新生入學需要保存學生數(shù)據(jù),如年齡、學號、性別、入學分數(shù)?,F(xiàn)在定義整型變量存放年齡、學號,定義字符變量存放性別,定義浮點型變量存放入學分數(shù)。問題分析可以定義整型變量iAge、iNum分別存放年齡、學號,定義字符變量cSex存放性別,定義浮點型變量fScore存放入學分數(shù)。程序段任務2.2學生成績總分及平均分的計算

任務描述計算一名學生數(shù)學、英語、語文三門課程的總分及平均分。這名學生三門課程的成績分別為89、96、82。。任務分析熟悉VisualC++6.0環(huán)境,能夠正確編輯、鏈接、運行C程序已知這名學生的三門課程的成績,成績相加即可獲取該學生的總分,總分除以科目數(shù)即為平均分。任務2.2學生成績總分及平均分的計算

算法設計(1)定義iMath、iEnglish、iChinese和iSum為int型,分別存儲數(shù)學、英語、語文成績和總分,其中將iMath、iEnglish、iChinese分別賦值為89、96、82;定義fAverage為float型,存儲三門課程的平均分。(2)計算總分。(3)計算平均分。(4)輸出學生的總分和平均分。任務2.2學生成績總分及平均分的計算

程序代碼#include"stdio.h"/*編譯預處理命令*/voidmain(){intiMath=89,iEnglish=96,iChinese=82;/*定義整型變量iMath、iEnglish、iChinese,并分別賦值*/intiSum;/*定義整型變量iSum*/floatfAverage;/*定義單精度實型變量fAverage*/iSum=iMath+iEnglish+iChinese;fAverage=iSum/3.0;printf("該學生的總分為:%d,平均分為:%.2f\n",iSum,fAverage);}。任務2.2學生成績總分及平均分的計算

執(zhí)行結(jié)果2運算符和表達式Part◎賦值運算符和賦值表達式◎算術運算符和算術表達式◎逗號運算符和逗號表達式◎數(shù)據(jù)間的混合運算與類型轉(zhuǎn)換運算符和表達式

C語言運算符是說明不同運算的符號,運算符的操作對象稱為操作數(shù)或者運算數(shù)。運算符根據(jù)操作對象的個數(shù)可以分為單目運算符、雙目運算符和三目運算符。由運算符把操作數(shù)連接起來的一個有意義的式子叫做表達式。每種表達式都按照運算符所規(guī)定的運算規(guī)則進行運算,最終會得到一個結(jié)果,該結(jié)果被稱為表達式的值。C語言的運算符異常豐富,除了控制語句和輸入輸出以外的幾乎所有的基本操作都為運算符處理。運算符和表達式

優(yōu)先級運算符的運算優(yōu)先級共分為15級。15級最高,1級最低。在表達式中,優(yōu)先級較高的先于優(yōu)先級較低的進行運算。而在一個運算量兩側(cè)的運算符優(yōu)先級相同時,則按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理。本書中附錄B“C語言運算符的優(yōu)先級和結(jié)合性”中的運算符表可以看到運算符的優(yōu)先級從1到15,15級優(yōu)先級最高,1級優(yōu)先級最低,(表中從上到下)依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu)先級。

結(jié)合性各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。算術運算符和算術表達式

1.基本算術運算符運算符名稱例子運算功能+加法運算x+y求x與y的和-減法運算x-y求x與y的差*乘法運算x*y求x與y的積/除法運算x/y求x除以y的商%模運算x%y求x除以y的余數(shù)說明:(1)對于除法運算符(/),如果兩個操作數(shù)全是整數(shù),結(jié)果為整數(shù);如果其中一個操作數(shù)為浮點數(shù),結(jié)果為浮點數(shù)。如3/5的值為0,5/3的值為1,3/5.0的值為0.6。(2)對于模運算符(%),兩個操作數(shù)必須為整數(shù)。如8%5的值是3,10%2的值是0,-14%5的值是-4。算術運算符和算術表達式

以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。2.算術表達式以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。算術運算符和算術表達式

例2-5從鍵盤輸入一個3位數(shù),求該數(shù)個位、十位、百位上的數(shù)的和。問題分析首先需要有一個變量存儲3位數(shù),在通過算術運算分別計算出這個3位數(shù)的個位、十位、百位,最后計算它們的和。算術運算符和算術表達式

算法設計(1)定義1個整型變量iNum存儲從鍵盤輸入的3位數(shù);(2)定義整型變量i1、i2、i3、iSum分別存儲個位、十位、百位上的數(shù)字及其和;(3)從鍵盤輸入一個3位整數(shù)存入變量iNum中;(4)用iNum%10求得個位上的數(shù)存入i1中;(5)用iNum/10%10求得十位上的數(shù)存入i2中;(6)用iNum/100求得百位上的數(shù)存入i3中;(7)求i1、i2、i3的和存入iSum中;(8)輸出iSum的值。算術運算符和算術表達式

#include"stdio.h" voidmain() { intiNum; inti1,i2,i3,iSum; printf("pleaseinputainteger(100-999):"); scanf("%d",&iNum); i1=iNum%10;/*求個位數(shù)*/ i2=iNum/10%10;/*求十位數(shù)*/ i3=iNum/100;/*求百位數(shù)*/ iSum=i1+i2+i3; printf("thesumis:%d\n",iSum); }程序段算術運算符和算術表達式

執(zhí)行結(jié)果說明:(1)兩個整數(shù)相除的結(jié)果為整數(shù),即7/2的結(jié)果為3,而不是3.5。(2)C語言中所有的實數(shù)在運算過程中都是按double型數(shù)據(jù)處理的,如果參加+、-、*、/運算的兩個操作數(shù)據(jù)中有一個是實型數(shù)據(jù),則運算結(jié)果一定為double型數(shù)據(jù)。如7/2.0或者7.0/2的值為3.5,8+2.0的值是10.0。(3)%運算的兩個操作數(shù)必須是整數(shù)。算術運算符和算術表達式

3.自增、自減運算符自增、自減運算符是C語言中很有特色的兩個運算符。它們是單目運算符,而且操作數(shù)必須是變量。使用時,運算符可以放在變量的前面,也可以放在變量的后面,如表2-5所示。運算符名稱例子等價于++加1x++或++xx=x+1--減1x--或--xx=x-1自增、自減運算的作用是使變量的值自行加1或者減1。從上表可見,這兩個運算符有兩種用法,一種是前置式,運算符放在變量之前;一種是后置式,運算符放在變量之后。算術運算符和算術表達式

3.自增、自減運算符(1)前置式自增、自減運算先使變量的值加1(或者減1),然后再以變化的后的值參加運算,即先自增1,再運算。例如:intx=1,y;y=++x;等價于x=x+1;y=x;所以,x=2,y=2。前置式自減運算與之類似。(2)后置式自增、自減運算變量先參與表達式的運算,然后再使變量的值加1(或者減1)。例如:intx=1,y;y=x++;等價于y=x;x=x+1;所以,x=2,y=1。后置式自減運算與之類似。自增、自減運算符的優(yōu)先級比較高,是14級,高于基本算術運算符,其結(jié)合性是右結(jié)合。算術運算符和算術表達式

例2-6自增自減運算符和其表達式的用法演示的。程序代碼#include"stdio.h"voidmain(){inta=5,b;b=a++*2;/*變量a與2相乘后自加1*/printf("a=%d,b=%d\n",a,b);a=5;b=++a*2;/*變量a自加1后與2相乘*/printf("a=%d,b=%d\n",a,b);}算術運算符和算術表達式

執(zhí)行結(jié)果說明:(1)自增(++)、自減(--)運算符只能用于簡單變量,常量和表達式是不能做這兩種運算的,如8++,(a+b)++都是錯誤的。(2)++a和a++是不同的,其中++a是先自身加1在使用變量,而a++是先使用變量,再自身加1。(3)同樣,--a和a--是不同的,其中--a是先自身減1在使用變量,而a--是先使用變量,再自身減1。(4)自加自減運算多用于循環(huán)結(jié)構(gòu)中。賦值運算符和賦值表達式

依次進行計算。所謂賦值,指的是將一個數(shù)據(jù)存儲到某個變量對應的內(nèi)存存儲單元的過程。賦值運算符可分為基本賦值運算符和復合賦值運算符兩種類型。以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。1.基本賦值運算符“=”是賦值運算符,其一般形式為:<變量名>=<表達式>該表達式的處理過程是:先計算“=”右側(cè)表達式的值,然后將該值賦給左側(cè)的變量,整個賦值表達式的值就是被賦值變量的值。例如:a=5;/*將右邊的5賦值給左邊的變量a,整個表達式的值也為2*/b=a+8;/*將右邊表達式a+8的13賦值給左邊的變量b,整個表達式的值也為13*/賦值運算符和賦值表達式

以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。2.復合賦值運算符在是賦值運算符前面加上其他運算符號構(gòu)成復合賦值運算符。其一般形式為:<變量名><雙目運算符><表達式>它等價于:<變量名>=<變量名><雙目運算符><表達式>在程序中,使用這種復合運算符,既可以簡化程序,又可以提高編譯效率,產(chǎn)生質(zhì)量較高的目標代碼。在C語言中,大部分的雙目運算符都可以和賦值運算符結(jié)合成復合賦值運算符,常見的幾種復合運算符如表2-6所示。以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。

常見復合賦值運算符運算符例子等價于運算符例子等價于+=x+=5x=x+5-=x-=5x=x-5*=x*=5x=x*5/=x/=5x=x/5%=x%=5x=x%5

賦值運算符和賦值表達式

以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。3.賦值表達式由賦值運算符把一個變量和一個表達式連接起來的式子稱為賦值表達式,其一般形式為:<變量名><賦值運算符><表達式>賦值運算符的優(yōu)先級比較低,是2級,僅高于逗號運算符,低于算術運算符,其結(jié)合性是右結(jié)合。賦值運算符和賦值表達式

例2-7賦值運算符和賦值表達式用法演示。程序代碼#include"stdio.h"voidmain(){inta,b,c;a=5;c=b=a*2+8;/*將表達式a*2+8同時賦值給變量b和c*/printf("b=a*2+8is%d\n",b=a*2+8);/*輸出賦值表達式b=a*2+8的值*/ printf("b=%d\n",b);/*輸出變量b的值*/ printf("c=%d\n",c);/*輸出變量c的值*/}賦值運算符和賦值表達式

執(zhí)行結(jié)果說明:(1)賦值表達式的結(jié)合方向是從右至左。(2)可以把一個賦值表達式賦值給一個變量,例如語句中的c=b=a*2+8,可以看成是將賦值表達式b=a*2+8賦給變量c,因此變量c的值就是賦值表達式b=a*2+8的值。(3)賦值表達式b=a*2+8的值就是表達式a*2+8的值。(4)可以用賦值表達式對多個變量賦同樣的值,如上面例題中的c=b=a*2+8,即同時給變量b和變量c賦同樣的值a*2+8。逗號運算符和逗號表達式

依次進行計算。逗號運算符“,”也被稱為順序求值運算符,是C語言中一種比較特殊的運算符。其作用是將多個表達式用逗號分開。用逗號運算符將多個表達式連接起來構(gòu)成的式子稱為逗號表達式。它的一般形式為:<表達式1>,<表達式2>,…,<表達式n>其求解過程是:按照從左到右的順序依次計算各表達式的值,整個表達式的值就是最后一個表達式的值。逗號運算符的優(yōu)先級最低,其結(jié)合性是左結(jié)合,即按照從左到右的順序進行計算。賦值運算符和賦值表達式

例2-8逗號運算符和逗號表達式用法演示。程序代碼#include"stdio.h"voidmain(){inta=3,b=4,x,y;x=(a*5+1,y=b+3,3.5*b,a*y);/*逗號表達式賦值給變量x*/printf("x=%d,y=%d\n",x,y);/*x的值就是x*y的值,y的值就是b+3的值*/}賦值運算符和賦值表達式

執(zhí)行結(jié)果說明:(1)例題中語句x=(a*5+1,y=b+3,3.5*b,x*y);的作用是將逗號表達式a*5+1,y=b+3,3.5*b,x*y的值賦值給變量x。應依次計算各個表達式的值,最后一個表達式x*y的值即為變量x的值。(2)逗號表達式中各個表達式的數(shù)據(jù)類型可以不同。比如在例2-6中,表達式3.5*b,的值是實型,而其他表達式的類型均為整型。數(shù)據(jù)間的混合運算與類型轉(zhuǎn)換

依次進行計算。在C語言中,在程序中經(jīng)常會遇到不同類型的數(shù)據(jù)進行運算,需要進行類型轉(zhuǎn)換。C語言的類型轉(zhuǎn)換方式有兩種:自動類型轉(zhuǎn)換和強制轉(zhuǎn)換。以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。1.自動類型轉(zhuǎn)換在C語言中,若一個運算符兩側(cè)的數(shù)據(jù)類型不同,則先自動進行類型轉(zhuǎn)換,使兩者具有同一類型,然后進行運算,自動類型轉(zhuǎn)換需遵循以下規(guī)則,如圖2-3所示。數(shù)據(jù)間的混合運算與類型轉(zhuǎn)換

以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。1.自動類型轉(zhuǎn)換(1)若參與運算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進行運算。(2)轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉(zhuǎn)成long型后再進行運算。若兩種類型的字節(jié)數(shù)不同,轉(zhuǎn)換成字節(jié)數(shù)高的類型。若兩種類型的字節(jié)數(shù)相同,且一種有符號,一種無符號,則轉(zhuǎn)換成無符號類型。(3)所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉(zhuǎn)換成double型,再作運算。(4)char型和short型參與運算時,必須先轉(zhuǎn)換成int型。(5)在賦值運算中,賦值號兩邊量的數(shù)據(jù)類型不同時,賦值號右邊量的類型將轉(zhuǎn)換為左邊量的類型。如果右邊量的數(shù)據(jù)類型長度左邊長時,將丟失一部分數(shù)據(jù),這樣會降低精度,丟失的部分按四舍五入向前舍入。數(shù)據(jù)間的混合運算與類型轉(zhuǎn)換

以上6種基本算術運算符都是雙目運算符,也就是需要2個操作數(shù)。其優(yōu)先級為13級和12級,由高到低為:“*、/、%”高于“+、-”。其結(jié)合性為左結(jié)合,即從左向右進行計算。用算術運算符將操作數(shù)連接起來,構(gòu)成算術表達式。在算術表達式中應該先計算乘除模運算,再計算加減,若遇到同一級別的,則從左向右依次進行計算。2.強制類型轉(zhuǎn)換在C語言中,有一種運算符可以把表達式的數(shù)據(jù)類型轉(zhuǎn)換成指定的類型,即強制類型轉(zhuǎn)換運算符,其一般格式如下:

(類型名)(表達式)如:inta=3,b=4;(float)(a+b);這里(float)(a+b)將表達式a+b強制轉(zhuǎn)換成float型,整個表達式的結(jié)果是實數(shù)7.0,而不是7。說明:(1)要進行類型轉(zhuǎn)換的表達式一定要用括號括起來。如(float)(a+b)和(float)a+b是不一樣的,前者是將a+b轉(zhuǎn)換成float型,而后者是將a的值轉(zhuǎn)換成float型再和b做加法運算。(2)強制類型轉(zhuǎn)換操作并不改變操作數(shù)本身的類型。如變量f=2.34為float型,則在執(zhí)行語句(int)f+5;時,是用f的整數(shù)部分2進行運算,而變量f的值仍為float型數(shù)據(jù)2.34。(3)在將實型數(shù)據(jù)強制轉(zhuǎn)換成整型數(shù)據(jù)時,可能會造成數(shù)據(jù)丟失。拓展案例案例2-1輸出表達式a+=a-=a*=a/5的值。問題描述運用復合賦值運算符,計算表達式a+=a-=a*=a/5的值,假設a的值為12。表達式的值應該為14。拓展案例

算法設計復合賦值運算符的結(jié)合方向是自右向左,因為“/”運算符的優(yōu)先級高于復合賦值運算符的優(yōu)先級,所以先計算除法,然后從右向左依次計算,即:表達式a+=a-=a*=a/5等價于表達式a+=(a-=(a*=a/5)),計算結(jié)果為14,a的值為14。拓展案例

程序代碼#include"stdio.h"voidmain(){inta=12;a+=a-=a*=a/5;/*復合賦值表達式語句*/printf("表達式a+=a-=a*=a/5的值為:%d,a=%d\n",a+=a-=a*=a/5,a);/*輸出表達式a+=a-=a*=a/5的值和變量a的值*/}拓展案例執(zhí)行結(jié)果拓展案例案例2-2將十進制25轉(zhuǎn)換成二進制數(shù)。問題描述十進制數(shù)轉(zhuǎn)換為二進制數(shù)使用“除2取余法”。拓展案例

算法設計將十進制數(shù)25轉(zhuǎn)換為二進制數(shù)的步驟為:(1)用25除以2余數(shù)是1,商是12,(2)對商12再除以2得余數(shù)是0,商是6,(3)對商6再除以2得余數(shù)是0,商是3,(4)對商3再除以2得余數(shù)1,商1,(5)對商1再除以2得余數(shù)1,商0,(6)當商為0時停止。此時十進制數(shù)25的二進制數(shù)為:11001,即把以上每步所得的余數(shù)按從右到左的順序?qū)懗鰜砭涂梢粤?。如果是?位表示這個二進制數(shù),則高位部分補0.即可。比如25的8位二進制數(shù)為00011001。說明:(1)二進制轉(zhuǎn)十進制二進制數(shù)轉(zhuǎn)換為十進制數(shù)比較簡單,比如100110對應的十進制數(shù)為:

1*25+0*24+0*23+1*22+1*21+0*20=32+4+2=38(2)二進制轉(zhuǎn)八進制二進制數(shù)轉(zhuǎn)換為八進制數(shù)時,將二進制數(shù)從低位按3位一組進行劃分,高位不足三位的補0,將每三位二進制數(shù)轉(zhuǎn)換為一個十進制數(shù),即為該二進制數(shù)的八進制數(shù)。比如1100110,將其分組如下:

001100110則對應的八進制數(shù)為146(3)二進制轉(zhuǎn)十六進制二進制數(shù)轉(zhuǎn)換為十六進制數(shù)時,將二進制數(shù)從低位按4位一組進行劃分,高位不足4位的補0,將每4位二進制數(shù)轉(zhuǎn)換為一個十進制數(shù),即為該二進制數(shù)的十六進制數(shù)。比如111100100,將其分組如下:

000111100100則對應的十六進制數(shù)為1E4拓展案例案例2-3交換兩個整型變量的值。問題描述有2個整型變量a和b,將兩個變量中的值互相交換。

溫馨提示

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

最新文檔

評論

0/150

提交評論