簡介:項目四,項目要點數(shù)組的定義和使用數(shù)組的存儲結構數(shù)組的輸入輸出字符串處理函數(shù)學習目標使用數(shù)組處理同一類型的大批數(shù)據(jù)使用字符數(shù)組處理字符串使用二維數(shù)組處理字符串,C語言程序設計,工作任務導入,工作任務一個班上50位學生參與考試,考了3門課程,現(xiàn)要求按總成績的高低輸出成績單引導問題1、課程的成績如何存儲2、學生信息如何存儲3、如何對成績進行排序,任務1輸入/輸出多個學生一門課程的成績,MAIN{INTI,X,S0FORI0I50I{SCANF“D”,SX}PRINTF“F\N”,S/500},只用了三個變量就解決了問題,但數(shù)據(jù)沒有保存。,如果需要把成績按從高到低的順序全部打印出來,怎么辦,計算50個學生成績的平均分,,任務1輸入/輸出多個學生一門課程的成績,一維數(shù)組的定義,數(shù)據(jù)類型數(shù)組名常量表達式;,數(shù)組元素的數(shù)據(jù)類型,遵循C語言標識符規(guī)則,數(shù)組長度幾個數(shù)組元素,任務1輸入/輸出多個學生一門課程的成績,411一維數(shù)組,例如INTA5;,說明常量表達式表示元素的個數(shù),即數(shù)組長度。常量表達式中可以包括常量和符合常量,不能包含變量。,任務1輸入/輸出多個學生一門課程的成績,411一維數(shù)組,INTI5INTAI/數(shù)組長度為變量/,任務1輸入/輸出多個學生一門課程的成績,411一維數(shù)組,以下對一維整型數(shù)組A的正確定義的是A、INTA10B、INTN10,ANC、INTNINTAND、DEFINESIZE10SCANF“D”,NINTASIZE,任務1輸入/輸出多個學生一門課程的成績,412一維數(shù)組的引用,表示引用數(shù)組A中的第2個元素,數(shù)組名下標表達式;,表示引用數(shù)組A中的第6個元素,表示引用數(shù)組A中的第16個元素,,,,若一個數(shù)組長度為N,其下標值范圍是0~N1,C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。,任務1輸入/輸出多個學生一門課程的成績,412一維數(shù)組的引用,輸入5個學生的數(shù)學成績,計算平均分,將平均分輸出到屏幕上。VOIDMAIN{INTI,MATHSCORE5,SUM0FLOATAVERAGEFORI0I5I{SCANF“D“,}FORI0I5I{SUMSUMMATHSCOREI}AVERAGESUM/50PRINTF“F“,AVERAGE},數(shù)組元素的地址也是通過“修改為AVERAGESUM/5結果如何2、練習從鍵盤輸入5個學生的成績,求出并輸出分數(shù)最高的學生序號及最高成績。。,數(shù)組的賦值只能逐個對數(shù)組元素賦值,不能直接對數(shù)組名賦值。因數(shù)組在內存占一片連續(xù)的存儲空間,可用循環(huán)語句處理數(shù)組。,任務1輸入/輸出多個學生一門課程的成績,412一維數(shù)組的引用,(1)在定義數(shù)組時,對全部數(shù)組元素賦初值此時可以省略數(shù)組的長度,任務1輸入/輸出多個學生一門課程的成績,413一維數(shù)組的初始化,C語言程序設計,任務1輸入/輸出多個學生一門課程的成績,413一維數(shù)組的初始化,(2)在定義數(shù)組時,對部分數(shù)組元素賦初值,C語言程序設計,任務1輸入/輸出多個學生一門課程的成績,413一維數(shù)組的初始化,(3)當初值的個數(shù)多于數(shù)組元素的個數(shù)時,編譯出錯,任務1輸入/輸出多個學生一門課程的成績,412一維數(shù)組的引用,例用初始化方法,把10個學生的數(shù)學成績存儲在數(shù)組中,再從鍵盤輸入一個考分,查找該分數(shù)是否在數(shù)組中,如果是,則輸出它是第幾名學生的成績。。VOIDMAIN{INTI,A10{56,65,76,68,92,37,87,51,73,48}INTFINDPRINTF“請輸入要查找的分數(shù)\N“SCANF“D“,FORI0I10I{IFAIFIND/查找到了/{PRINTF“D“,I1BREAK}}},任務1輸入/輸出多個學生一門課程的成績,413一維數(shù)組,練習一個班50位同學參加了一次C語言程序設計考試,現(xiàn)要輸入全班同學的成績,并按逆序輸出。,任務2排序學生成績,任務1中已經輸入了50個同學的成績到數(shù)組中,現(xiàn)在需要確定如何對學生成績從低到高進行排序。,,兩層循環(huán)結構外層循環(huán)每次把操作范圍內最大的數(shù)放到最后位置內層循環(huán)每次把較大的數(shù)放到靠后的位置,任務2排序學生成績,有數(shù)組A,其元素值為7、1、5、6、9、3,現(xiàn)要把該數(shù)組按從小到大的順序排列并輸出。,MAIN{INTA{7,1,5,6,9,3}INTI,J,TPRINTF“THESORTEDNEMBERS\N”FORI0I6IPRINTF“\N”,XI},FORI0IXJ1{TXJXJXJ1XJ1T},任務2排序學生成績,任務2排序學生成績,421冒泡法排序,1、上例中,如果要按從大到小的順序排序,該如何修改程序呢2、練習一個班50位同學參加了一次C語言程序設計考試,現(xiàn)要輸入全班同學的成績,并按從低到高排序并輸出。,任務3處理多位學生多門課程的成績,一個班上50位學生參與考試,考了3門課程,現(xiàn)要求按總成績的高低輸出成績單。如果僅僅使用一維數(shù)組進行上述處理,是很困難的,此時需要使用二維數(shù)組。,X00X01X02X10X11X12,數(shù)據(jù)類型數(shù)組名常量表達式1常量表達式2;,,行,列,,INTA3,4,B3,4;INTC,D34,任務3處理多位學生多門課程的成績,431二維數(shù)組,二維數(shù)組的定義,數(shù)組名行下標列下標,A343A1,21,引用,/下標越界/,/A121/,任務3處理多位學生多門課程的成績,432二維數(shù)組的引用,任務3處理多位學生多門課程的成績,練習輸入5個同學三門課程的成績并輸出,計算各門課的總分及平均分,并輸出。,432二維數(shù)組的引用,1分行對二維數(shù)組初始化,INTA23{{1,2,3},{4,5,6}}初始化后123456,任務3處理多位學生多門課程的成績,433二維數(shù)組的初始化,INTA23{1,2,3,4,5,6}初始化后123456,2按數(shù)組排列的順序初始化,任務3處理多位學生多門課程的成績,433二維數(shù)組的初始化,任務3處理多位學生多門課程的成績,433二維數(shù)組的初始化,3對全部數(shù)組元素初始化,INTA3{1,2,3,4,5,6}初始化后123456,省略行號,用二層循環(huán)語句處理數(shù)組,通常外循環(huán)控制行,內循環(huán)控制列。,FOR(I0;I3I)FOR(J0;J4J)AIJIJ;,二維數(shù)組的賦值,0123234345,任務3處理多位學生多門課程的成績,433二維數(shù)組的初始化,二維數(shù)組的輸入輸出,INTB34,I,JFORI0I3IFORJ0J4JSCANF“D”,FORI0I3IFORJ0J4JPRINTF“”,BIJ,任務3處理多位學生多門課程的成績,433二維數(shù)組的初始化,任務3處理多位學生多門課程的成績,練習用初始化方法,把5個同學三門課程成績存儲在二維數(shù)組中,計算每位同學的總成績和平均分,輸出總分最高的同學的總成績。,433二維數(shù)組初始化,練習,下列程序有哪些錯誤請解釋錯誤原因。(1)MAIN{INTX,A10;FORX0;X10;XSCANF“D”,,任務4輸入/輸出學生,一個班上50位學生參與考試,需要輸入/輸出學生的姓名信息。這個任務需要解決多個字符的存放問題。,任務4輸入/輸出學生,441字符數(shù)組,CHAR數(shù)組名常量表達式;,二維字符數(shù)組,CHAR數(shù)組名常量表達式1常量表達式2;,一維字符數(shù)組STR,,,二維字符數(shù)組S1,1用字符常數(shù)初始化,CHARC{‘C’,’H’,’I’,’N’,’A’,’\0’}初始化后,任務4輸入/輸出學生,441字符數(shù)組,任務4輸入/輸出學生,441字符數(shù)組,CHARC{“CHINA”}CHARC“CHINA”初始化后,2直接用字符串常量初始化,任務4輸入/輸出學生,441字符數(shù)組,1用字符常數(shù)初始化,CHARLAN58{{‘B’,‘A’,‘S’,‘I’,‘C’,‘\0’},{‘F’,‘O’,‘R’,‘T’,‘R’,‘A’,‘N’,‘\0’},{‘P’,‘A’,‘S’,‘C’,‘A’,‘L’,‘\0’},{‘C’,‘\0’},{‘J’,‘A’,‘V’,‘A’,‘\0’}},二維字符數(shù)組的初始化,每行存放一個字符串,任務4輸入/輸出學生,441字符數(shù)組,二維字符數(shù)組的初始化,CHARA310{“BASIC“,“PASCAL“,“C“},2直接用字符串常量初始化,練習1、給字符數(shù)組初始化為“HAPPY”,并輸出各個數(shù)組元素。2、輸出一個鉆石圖形。如圖所示。,任務4輸入/輸出學生,441字符數(shù)組,任務4輸入/輸出學生,442字符串,字符串是用雙引號括起來的若干有效字符序列,字符串可以包括字母、數(shù)字、轉義字符等,C語言中,將字符串作為字符數(shù)組來處理。,任務4輸入/輸出學生,442字符串,C語言規(guī)定了一個“字符串結束標志”,以字符‘\0’代表。在處理字符數(shù)組的過程中,一旦遇到結束符‘\0’,就表示已達到字符串末尾。,數(shù)組的長度是6,而不是5。,練習1、分析以下程序,其運行結果是什么VOIDMAIN{CHARC5{’A’,’B’,’\0’,’C’,’\0’}PRINTF“S\N“,C}2、有字符串“ABCABCDEFDEF”,把該字符串中的小寫字母轉換為大寫字母后輸出。,任務4輸入/輸出學生,442字符串,任務4輸入/輸出學生,443字符串輸入/輸出,1字符數(shù)組的元素逐個輸入和輸出,用格式輸入輸出函數(shù)SCANF和PRINTF,使用“C”格式符,或用字符輸入輸出函數(shù)GETCHAR和PUTCHAR。每次輸入或輸出一個字符。,FORI0I10ISCANF“C”,,FORI0I10ICIGETCHAR,注GETCHAR和PUTCHAR定義在標題文件“STDIOH”中,使用前要用INCLUDE把它們包含進來,任務4輸入/輸出學生,443字符串輸入/輸出,2字符數(shù)組整體輸入和輸出,用格式輸入輸出函數(shù)SCANF和PRINTF,使用“S”格式符,輸入和輸出字符串。,(1)一維字符數(shù)組,SCANF“S”,字符數(shù)組名;PRINTF“S”,字符數(shù)組名;,CHARS110SCANF“S”,S1;PRINTF“S”,S1;,不用加SCANF“S”,STR1;PRINTF“S”,STR1;,任務4輸入/輸出學生,443字符串輸入/輸出舉例,MAIN{CHARSS310INTIFORI0I3ISCANF“S”,SSI;FORI0I3IPRINTF“S”,SSI;},注意在SCANF和PRINTF的“S”是直接控制字符串的,只要求某個字符串的起始地址作為參數(shù)。輸入時,SCANF會自動把用戶輸入的回車符、空格或制表符轉換成“\0”加在字符串的末尾,PRINTF則在遇到“\0”就結束輸出,但不能自動換行。,MAIN{CHARSTR14SCANF“S”,STRPRINTF“\NS”,STRPRINTF“STRING”},輸入HOWAREYOU↙輸出HOWAREYOU,輸入HOWAREYOU↙輸出HOWSTRING,練習1、輸入一行字符串,統(tǒng)計其中大寫字母、小寫字母、數(shù)字以及其他字符的個數(shù)。,任務4輸入/輸出學生,443字符串輸入/輸出,任務5任務拓展,451字符串處理函數(shù),①程序中如果調用下面介紹的4個字符串處理函數(shù),在程序的開始應該寫預處理命令INCLUDE②在字符串處理函數(shù)中,凡是用數(shù)組名或字符串首地址作參數(shù)的地方,都可以用指針變量作參數(shù)。指針變量的概念在第6章介紹。,說明,任務5任務拓展,451字符串處理函數(shù),1求字符串長度函數(shù)STRLEN,格式STRLENSTR,功能測試字符串長度。函數(shù)值就是STR中字符的個數(shù)不包含字符串的結束符“\0”。,任務5任務拓展,451字符串處理函數(shù),1求字符串長度函數(shù)STRLEN,CHARSTR10“CHINA“PRINTF“D“,STRLENSTR或PRINTF“D“,STRLEN“CHINA“,輸出結果5,任務5任務拓展,451字符串處理函數(shù),2字符串復制函數(shù)STRCPY,格式STRCPYSTR1,STR2,功能將STR2中的字符串復制到STR1數(shù)組中。,任務5任務拓展,451字符串處理函數(shù),2字符串復制函數(shù)STRCPY,CHARS110,S2“BEIJING“STRCPYS1,S2或STRCPYS1,“BEIJING“,S1的結果,S1必須足夠大,STRCPYS1,S2,3,表示將S2中的前3個字符復制到S1中。,任務5任務拓展,451字符串處理函數(shù),3字符串比較函數(shù)STRCMP,格式STRCMPSTR1,STR2,任務5任務拓展,451字符串處理函數(shù),3字符串比較函數(shù)STRCMP,任務5任務拓展,451字符串處理函數(shù),4字符串連接函數(shù)STRCAT,格式STRCATSTR1,STR2,功能把STR2中的字符串連接到STR1字符串的后面,結果放在STR1數(shù)組中,函數(shù)值是STR1的值。,任務5任務拓展,451字符串處理函數(shù),4字符串連接函數(shù)STRCAT,CHARSTR121“BEIJINGAND“CHARSTR2“SHANGHAI“PRINTF“S“,STRCATSTR1,STR2,輸出結果BEIJINGANDSHANGHAI,STR1必須足夠大,練習1、輸出如下的楊輝三角形,要求一共有10行10列。2、從鍵盤輸入5個字符串,將其中最大的字符串輸出。3、輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。,任務5任務拓展,
下載積分: 4 賞幣
上傳時間:2024-01-06
頁數(shù): 57
大?。?0.75(MB)
子文件數(shù):
簡介:C語言程序設計,第四章函數(shù)41庫函數(shù)42自定義函數(shù)43函數(shù)的參數(shù)傳遞與返回值44遞歸函數(shù)45局部變量、全局變量與變量作用域46函數(shù)綜合應用,學習目標理解函數(shù)在程序設計中的作用和地位掌握函數(shù)的定義、原型聲明和調用方法熟練掌握函數(shù)的參數(shù)傳遞與返回值理解局部變量、全局變量、靜態(tài)變量和變量的作用域掌握遞歸函數(shù)的編寫技術理解和掌握結構設計和模塊化程序設計方法了解地址和指針的概念,了解地址做函數(shù)參數(shù)的特點和作用,為什么要用函數(shù),問題如果程序的功能比較多,規(guī)模比較大,把所有代碼都寫在MAIN函數(shù)中,就會使主函數(shù)變得龐雜、頭緒不清,閱讀和維護變得困難有時程序中要多次實現(xiàn)某一功能,就需要多次重復編寫實現(xiàn)此功能的程序代碼,這使程序冗長,不精煉,解決的方法用模塊化程序設計的思路采用“組裝”的辦法簡化程序設計的過程可以使用庫函數(shù)事先編好一批實現(xiàn)各種不同功能的函數(shù),把它們保存在函數(shù)庫中,需要時直接用可以使用自己編寫的函數(shù)在設計一個較大的程序時,往往把它分為若干個程序模塊,每一個模塊包括一個或多個函數(shù),每個函數(shù)實現(xiàn)一個特定的功能,函數(shù)的名字應反映其代表的功能C程序可由一個主函數(shù)和若干個其他函數(shù)構成,主函數(shù)調用其他函數(shù),其他函數(shù)也可以互相調用,同一個函數(shù)可以被一個或多個函數(shù)調用任意多次在程序設計中要善于利用函數(shù),可以減少重復編寫程序段的工作量,同時可以方便地實現(xiàn)模塊化的程序設計,,導例平方根表1.問題描述輸出100以內整數(shù)的平方根表,要求每行輸出10個。2.問題分析C語言提供了一個庫函數(shù)SQRT,使用時直接調用該庫函數(shù)就可以計算出平方根值。,,3.算法描述(1)定義兩個整型變量M,N。(2)輸出平方根表時,要注意格式。首先輸出表頭,輸出0~9的整數(shù)。(3)然后按照格式要求輸出平方根表,M為行數(shù)0~9,N為列數(shù)0~9,則表內對應第M行第N列的表值為SQRTM10N,每行10個。,1,1,INCLUDEINCLUDE//數(shù)學類頭文件INTMAIN{INTM,N,FORN0NYZXELSEZYRETURNZ},定義函數(shù)時,形參調用函數(shù)時,實參,函數(shù)的調用,函數(shù)調用的形式,對于實現(xiàn)計算功能的函數(shù),函數(shù)調用通常出現(xiàn)在兩種情況賦值語句VOLUMECYLINDERRADIUS,HEIGHT輸出函數(shù)的實參PRINTF“F”,CYLINDERRADIUS,HEIGHT,函數(shù)調用的過程,計算機在執(zhí)行程序時,從主函數(shù)MAIN開始執(zhí)行,如果遇到某個函數(shù)調用,主函數(shù)被暫停執(zhí)行,轉而執(zhí)行相應的函數(shù),該函數(shù)執(zhí)行完后,將返回主函數(shù),然后再從原先暫停的位置繼續(xù)執(zhí)行。函數(shù)遇RETURN返回主函數(shù),分析函數(shù)調用的過程,INCLUDEINTMAINVOID{DOUBLEHEIGHT,RADIUS,VOLUMEDOUBLECYLINDERDOUBLER,DOUBLEHPRINTF“ENTERRADIUSANDHEIGHT“SCANF“LFLF“,VOLUMECYLINDERRADIUS,HEIGHTPRINTF“VOLUME3F\N“,VOLUMERETURN0}DOUBLECYLINDERDOUBLER,DOUBLEH{DOUBLERESULTRESULT31415926RRHRETURNRESULT},調用函數(shù),,,實參?形參,執(zhí)行函數(shù)中的語句,返回調用它的地方,,,,,參數(shù)傳遞,函數(shù)定義時的參數(shù)被稱為形式參數(shù)(簡稱形參)DOUBLECYLINDERDOUBLER,DOUBLEH;函數(shù)調用時的參數(shù)被稱為實際參數(shù)(簡稱實參)VOLUMECYLINDERRADIUS,HEIGHT參數(shù)傳遞實參?形參在參數(shù)傳遞過程中,實參把值復制給形參。形參和實參一一對應數(shù)量一致,類型一致,順序一致形參變量,用于接受實參傳遞過來的值實參常量、變量或表達式,單向傳遞,函數(shù)結果返回,完成確定的運算,將運算結果返回給主調函數(shù)。函數(shù)結果返回的形式RETURN表達式;RETURN表達式;,,,,,在執(zhí)行函數(shù)調用時,實參把值計算出來,拷貝給相應位置的形參;函數(shù)執(zhí)行完后,通過RETURN,可返回一個結果值。實參與形參有多個實參時形參的改變個數(shù)相同、類型一致后面的先計算不影響實參變量的值只能返回一個結果,類型與函數(shù)定義時一致,,,要調用函數(shù),必須先要聲明,,,小結,43函數(shù)的參數(shù)傳遞與返回值431導例爬動的蠕蟲432導例日K蠟燭圖433函數(shù)的參數(shù)傳遞434函數(shù)的返回值,從函數(shù)是否有參數(shù)和返回值的角度,可以將函數(shù)分為①有參數(shù)有返回值函數(shù)②有參數(shù)無返回值函數(shù)③無參數(shù)有返回值函數(shù)④無參數(shù)無返回值函數(shù),導例判斷素數(shù)的函數(shù),求100以內的全部素數(shù),每行輸出10個。素數(shù)就是只能被1和自身整除的正整數(shù),1不是素數(shù),2是素數(shù)。要求定義和調用函數(shù)PRIMEM判斷M是否為素數(shù),當M為素數(shù)時返回1,否則返回0。算法描述對2~100之間的每個數(shù)進行判斷,若是素數(shù),則輸出該數(shù)。FORM2M1,,采用非遞歸方法,程序片段如下FIRST1,SECOND1SCANF“D“,FORI0I1FACTNNFACTN1遞歸公式,,,,實現(xiàn)階乘遞歸算法的遞歸函數(shù)LONGFACTINTN{IFN0RETURN1ELSERETURNNFACTN1},YFACT3,遞歸函數(shù)的調用過程,,遞歸程序的內部執(zhí)行過程函數(shù)的遞歸調用類似于多個函數(shù)的嵌套調用,只不過調用函數(shù)和被調用函數(shù)是同一個函數(shù)。遞歸調用的內部執(zhí)行過程如下①運行開始時,系統(tǒng)設立工作棧來保存每次調用的運行環(huán)境,包括形參、局部變量和返回地址;②遞歸調用前,將調用函數(shù)的形參、局部變量以及調用后的返回地址進棧;③調用結束后,將棧頂數(shù)據(jù)出棧,恢復調用前的運行環(huán)境,使相應的形參和局部變量恢復為調用前的值,然后從返回地址指定的位置繼續(xù)執(zhí)行調用函數(shù)。,,444遞歸函數(shù)的效率分析遞歸函數(shù)如果很緩慢地逼近到遞歸結束條件,會使性能大大下降。遞歸增加了系統(tǒng)開銷,時間上,執(zhí)行調用與返回的額外工作要占用CPU時間??臻g上,隨著每遞歸一次,棧內存就多占一塊,即要分配相應的存儲空間,并完成參數(shù)的傳遞、函數(shù)的返回等,在程序的執(zhí)行效率和所消耗的存儲空間上,和非遞歸相比沒有任何優(yōu)勢。一般的遞歸都可以通過相應的方法轉化為非遞歸的,所以不推薦使用遞歸,特別是不推薦使用遞歸層次較多的遞歸。,45C局部變量、全局變量與變量作用域451導例富翁與騙子452導例簡易庫存存取貨管理453局部變量和全局變量454變量的作用域和生存期,分別輸入2個復數(shù)的實部與虛部,用函數(shù)實現(xiàn)計算2個復數(shù)之和與之積。,分析若2個復數(shù)分別為C1X1Y1I,C2X2Y2I,則C1C2X1X2Y1Y2IC1C2X1X2Y1Y2X1Y2X2Y1I,復數(shù)運算,INCLUDEFLOATRESULT_REAL,RESULT_IMAG/全局變量,用于存放函數(shù)結果/INTMAINVOID{FLOATIMAG1,IMAG2,REAL1,REAL2/兩個復數(shù)的實、虛部變量//函數(shù)聲明/VOIDCOMPLEX_PRODFLOATREAL1,FLOATIMAG1,FLOATREAL2,FLOATIMAG2VOIDCOMPLEX_ADDFLOATREAL1,FLOATIMAG1,FLOATREAL2,FLOATIMAG2PRINTF“ENTER1STCOMPLEXNUMBERREALANDIMAGINARY“SCANF“FF“,/輸入第一個復數(shù)/PRINTF“ENTER2NDCOMPLEXNUMBERREALANDIMAGINARY“SCANF“FF“,/輸入第兩個復數(shù)/COMPLEX_ADDREAL1,IMAG1,REAL2,IMAG2/求復數(shù)之和/PRINTF“ADDITIONOFCOMPLEXISFFI\N“,RESULT_REAL,RESULT_IMAGCOMPLEX_PRODREAL1,IMAG1,REAL2,IMAG2/求復數(shù)之積/PRINTF“PRODUCTOFCOMPLEXISFFI\N“,RESULT_REAL,RESULT_IMAGRETURN0},運行結果ENTER1STCOMPLEXNUMBERREALANDIMAGINARY11ENTER2NDCOMPLEXNUMBERREALANDIMAGINARY23ADDITIONOFCOMPLEXIS10000004000000IPRODUCTOFCOMPLEXIS50000001000000I,VOIDCOMPLEX_ADDFLOATREAL1,FLOATIMAG1,FLOATREAL2,FLOATIMAG2{RESULT_REALREAL1REAL2RESULT_IMAGIMAG1IMAG2},VOIDCOMPLEX_PRODFLOATREAL1,FLOATIMAG1,FLOATREAL2,FLOATIMAG2{RESULT_REALREAL1REAL2IMAG1IMAG2RESULT_IMAGREAL1IMAG2REAL2IMAG1},局部變量在函數(shù)內定義的變量(包括形參)作用范圍本函數(shù)內部定義在復合語句內的變量作用范圍復合語句內部全局變量在函數(shù)以外定義的變量,不從屬于任一函數(shù)。作用范圍從定義處到源文件結束(包括各函數(shù)),453局部變量和全局變量,在復合語句中定義局部變量,INCLUDEINTMAINVOID{INTAA1{/復合語句開始/INTB2BABAAB}/復合語句結束/PRINTF“D“,ARETURN0},B小范圍內的臨時變量,,,輸出4,改成B會如何,全局變量定義,INCLUDE“STDIOH“INTX/定義全局變量X/INTF{INTX4/X為局部變量/RETURNX}INTMAINVOID{INTA1XA/對全局變量X賦值/AF/A的值為4/{INTB2BAB/B的值為6/XXB/全局變量運算/}PRINTF“DD“,A,XRETURN0},若局部變量與全局變量同名,局部變量優(yōu)先,,,,,輸出4,7,變量作用范圍示例,INTX1VOIDMAIN{INTA2{INTB3}F}INTT4VOIDF{INTX5,B6}INTA7,XAB,B,X5B6T4A沒定義,,,,,,,XBTA,用函數(shù)實現(xiàn)財務現(xiàn)金記賬。先輸入操作類型1收入,2支出,0結束,再輸入操作金額,計算現(xiàn)金剩余額,經多次操作直到輸入操作為0結束。要求定義并調用函數(shù),其中現(xiàn)金收入與現(xiàn)金支出分別用不同函數(shù)實現(xiàn)。分析設變量CASH保存現(xiàn)金余額值,由于它被主函數(shù)、現(xiàn)金收入與現(xiàn)金支出函數(shù)共用,任意使用場合其意義與數(shù)值都是明確和唯一的,因此令其為全局變量。,財務現(xiàn)金記賬,INCLUDEFLOATCASH/定義全局變量,保存現(xiàn)金余額/INTMAINVOID{INTCHOICEFLOATVALUEVOIDINCOMEFLOATNUMBER,EXPENDFLOATNUMBER/函數(shù)聲明/CASH0/初始金額0/PRINTF“ENTEROPERATECHOICE0END,1INCOME,2EXPEND“SCANF“D“,/輸入操作類型/WHILECHOICE0{/若輸入類型為0,循環(huán)結束/IFCHOICE1||CHOICE2{PRINTF“ENTERCASHVALUE“/輸入操作現(xiàn)金額/SCANF“F“,IFCHOICE1INCOMEVALUE/函數(shù)調用,計算現(xiàn)金收入/ELSEEXPENDVALUE/函數(shù)調用,計算現(xiàn)金支出/PRINTF“CURRENTCASH2F\N“,CASH}PRINTF“ENTEROPERATECHOICE0END,1INCOME,2EXPEND“SCANF“D“,/繼續(xù)輸入操作類型/}RETURN0},
下載積分: 4 賞幣
上傳時間:2024-01-07
頁數(shù): 97
大小: 1.85(MB)
子文件數(shù):