《C語言程序設計》 課件全套 曾昭江 第1-10章 C語言程序設計基礎 - 位運算_第1頁
《C語言程序設計》 課件全套 曾昭江 第1-10章 C語言程序設計基礎 - 位運算_第2頁
《C語言程序設計》 課件全套 曾昭江 第1-10章 C語言程序設計基礎 - 位運算_第3頁
《C語言程序設計》 課件全套 曾昭江 第1-10章 C語言程序設計基礎 - 位運算_第4頁
《C語言程序設計》 課件全套 曾昭江 第1-10章 C語言程序設計基礎 - 位運算_第5頁
已閱讀5頁,還剩232頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第1章C語言程序設計基礎信息工程學院主講人:XXX內容提要4

程序與程序設計語言12算法及其描述423C語言的發展及其特點42C語言的基本結構425C語言程序的開發環境244411.1程序與程序設計語言軟件=程序+文檔=(數據結構+算法)+文檔計算機程序是軟件開發人員根據用戶需求開發的、用程序設計語言描述的、適合計算機執行的指令序列。布局管理類控制容器中的組件的大小和位置。為解決某一問題而編寫的程序不是唯一的,不同的用戶編寫程序的思路也不會完全一樣,因此,不同程序的執行效率不同,這涉及程序的優化、程序所采用的數據結構和算法等多方面的因素。1.1程序與程序設計語言程序設計語言機器語言匯編語言高級語言1.2算法及其描述算法算法就是為了解決一個具體問題而采取的方法和有限步驟,或者是指對解題方法準確而完整的描述。算法的特征有窮性:有限個步驟之后終止。確切性:算法的每個步驟必須有確切的定義。輸入項:以表示運算對象的初始情況。輸出項:反映對輸入數據加工后的結果可行性:每個計算步驟都可以在有限時間內完成。高效性:執行速度快,占用資源少。健壯性:對數據響應正確。1.2算法及其描述算法可以使用自然語言、偽代碼、流程圖等多種不同的方法來描述通過采用流程圖來表達算法:清晰簡潔,容易表達選擇結構,不依賴于任何具體的計算機語言,有利于不同環境下的程序設計。1.2算法及其描述【例1.2】用流程圖描述以下算法:從鍵盤輸入圓的半徑r,輸出圓的周長l和面積s。算法步驟:

流程圖:輸入半徑r計算圓的周長cl=2*PI*r計算圓的面積cs=PI*r2輸出結果1.3C語言的發展及其特點C語言的發展歷史CPL(CombinedProgrammingLanguage)1963年劍橋大學發明的BCPL(BaseCombinedProgrammingLanguage)-1967年

劍橋的MatinRichards對CPL做了簡化,推出了BCPLB(BProgrammingLanguage)-1969貝爾實驗室的KenThompson(肯?湯普森)對BCPL又做了改進,設計出了簡單的且接近硬件的B語言,并用B語言寫了第一個UNIXOSC(CProgrammingLanguage)-1972年貝爾實驗室的另外一個人DennisMacAlistairRitchie(D.M.Ritchie-DM里奇)在B的基礎上設計出了C語言。C保持了B的優點(精煉、接近硬件),又克服了他的缺點(過于簡單,數據無類型)C++(CplusplusProgrammingLanguage)-1983年還是貝爾實驗室的人,BjarneStroustrup(本賈尼?斯特勞斯特盧普)在C語言的基礎上推出了C++,它擴充和完善了C語言,特別是在面向對象編程方面。一定程度上克服了C語言編寫大型程序時的不足。1.3C語言的發展及其特點C語言的特點(1)C語言簡潔、緊湊,使用方便、靈活。(2)C語言有高級語言的特點,又具有低級語言的一些功能(3)C語言是一種結構化程序設計語言,模塊化的程序設計。(4)C語言的運算符豐富。(5)C語言的數據類型豐富,有現代化語言的各種數據類型。(6)C語言程序中可以使用編譯預處理命令,有利于提高程序質量和軟件開發的效率。(7)C語言生成的代碼質量高。(8)C語言程序的可移植性好。1.4C語言的基本結構(1)#include<…>是一條預編譯命令,聲明該程序使用stdio.h文件中的內容,stdio.h中包含輸出函數printf()。預編譯命令以“#”開頭,<>內是被包含的文件名,<>也可以寫成一對雙引號(""),預編譯通常放在程序的最前面。(2)C程序由函數構成,函數是C程序的基本單位。C程序中有且只有一個main()函數,main()函數也稱主函數,不管main()函數在程序中處在何種位置,C程序都從main()函數處開始執行。用{}括起來的是main()函數的函數體,所有的操作語句都放在{}中。(3)C程序中,每條語句都以“;”結束。1.5C語言程序的開發環境C程序的執行步驟C語言的上機執行過程一般分為以下4個步驟:編輯C語言程序、編譯C語言程序、程序鏈接及運行。1.5.1VisualC++6.0開發C程序1.啟動VisualC++6.02.新建工程,選擇:Win32ConsoleApplication(控制臺程序)1.5.1VisualC++6.0開發C程序3.查看并編輯C語言源程序4.編譯、鏈接工程文件5.運行程序,查看結果1.5.2DevC++開發C程序1.啟動DevC++2.新建工程,選擇:ConsoleApplication1.5.2DevC++開發C程序3.編譯、鏈接工程文件4.運行程序1.6C語言程序舉例【例1.3】在屏幕上打印輸出“九九乘法口決表”。1.6C語言程序舉例【例1.4】在屏幕上打印輸出“等腰三角形”,以8行等腰三角形的輸出為例。1.6C語言程序舉例【例1.5】求一元二次方程ax2+bx+c=0的根。本章小結(1)程序與程序設計語言主要介紹了計算機程序和程序設計語言的基本概念及應用,以及編程語言從機器語言、匯編語言,到高級語言各自的特點。(2)算法及其描述主要介紹了算法的概念及其特征,算法的時間復雜度和空間復雜度;介紹了窮舉法、遞歸法、回溯法、貪心法、分治法等常用算法。(3)C語言的發展及其特點主要介紹了C語言發展的歷程,以及C語言不同于其他語言的特點。(4)C語言的基本結構主要介紹了結構化程序設計的優點及設計思路,同時以實例的方式介紹了C程序的基本語句結構。(5)C語言的開發環境主要介紹了VisualC++6.0及DevC++兩種開發環境,并以實例的方式給出了這兩種編輯器編寫與調試C程序的過程和步驟,最后給出了3個經典C程序的實例。第2章順序結構程序設計信息工程學院主講人:XXX內容提要41數據的表現形式12運算符和表達式423C語句42數據的輸入輸出425順序結構程序設計舉例24442.1順序程序設計舉例【例2.1】輸入三角形的三邊長,求該三角形的面積。解題思路:已知三角形的三邊長a,b,c,則該三角形的面積公式為:area=(s(s-a)(s-b)(s-c))/2其中s=(a+b+c)/2。2.2數據的表現形式-

2.2.1常量和變量常量:

在程序運行過程中,其值不能被改變的量稱為常量。常量區分為不同的類型:整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a’,‘b’,‘2’字符串‘a’,‘ab’,‘1232’2.2.1常量和變量變量:在程序執行過程中,其值可以發生改變的量稱為變量。變量代表內存中具有特定屬性的一個存儲單元,它用來存放數據,這就是變量的值,在程序運行期間,這些值是可以改變的。變量名實際上是一個以一個名字對應代表一個地址,在對程序編譯連接時由編譯系統給每一個變量名分配對應的內存地址。從變量中取值,實際上是通過變量名找到相應的內存地址,從該存儲單元中讀取數據。2.2.2C語言的數據類型在計算機中,數據是存放在存儲單元中的,它是具體存在的。而且,存儲單元是由有限的字節構成的,每一個存儲單元中存放數據的范圍是有限的。例如用C程序計算和輸出1/3: printf(“%f”,1.0/3.0);得到的結果是0.333333,只能得到6位小數,而不是無窮多位的小數。所謂類型,就是對數據分配存儲單元的安排,包括存儲單元的長度(占多少字節)以及數據的存儲形式。不同的類型分配不同的長度和存儲形式。

2.2.3整型數據基本整型(int型)不同的C編譯系統自動給int型數據分配2個或4個字節。整型數據在內存中的存儲方式是以數值的補碼形式存放

·正數的補碼和原碼相同;

·負數的補碼:將該數的絕對值的二進制形式按位取反再加1。如求-10的補碼:10的原碼:取反:再加1,得-10的補碼:2.2.3整型數據短整型(shortint)類型名為shortint或short。如用VisualC++6.0,編譯系統分配給int數據4個字節,短整型2個字節。存儲方式與int型相同。長整型(longint)類型名為longint或long,編譯系統分配給long數據4個字節。雙長整型(longlongint)類型名為longlongint或longlong,編譯系統分配給longlong數據8個字節。這是新增的一個類型,許多C編譯系統尚未實現。

2.2.3整型數據

整型變量的分類:共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)

注意:括號表示其中的內容是可選的.2.2.3整型數據TurboC整型數據常見的存儲空間和值的范圍:2.2.4實型數據實型常量實型也稱為浮點型。浮點型常量也稱為實數或者浮點數。在C語言中,浮點數采用十進制。它有二種形式:十進制小數形式、指數形式。實型變量實型變量分為:單精度(float型)、雙精度(double型)和長雙精度(longdouble型)三類。2.2.5字符型數據字符常量字符常量是用單引號括起來的單個字符。例如:'x'、'y'、'='、'+'、'?'都是合法的字符常量。字符變量字符變量用來存儲字符常量,即存儲單個字符。字符變量的類型說明符是char。字符變量類型定義的格式和書寫規則與整型變量相同。例如:chara,b;a=’c’;b=’s’;2.2.6字符串型數據字符串常量是由一對雙引號括起的字符序列。例如:"CHINA","Cprogram","$12.5"。

字符串常量和字符常量是不同的。兩者有以下區別:(1)字符常量由單引號括起來,字符串由雙引號括起來。(2)字符常量只能是單個字符,字符串常量則可以含0個或多個字符。(3)字符常量占一個字節的內存空間。字符串常量占的內存字節數等于字符串中字符數加1。增加的一個字節中存放字符'\0'(ASCII碼為0)。這是字符串結束的標志。2.3運算符和表達式C語言中運算符數量非常多,這些豐富的運算符組成的表達式使C語言功能強大。C語言的運算符有優先級之分,同時具有結合性。而在表達式中,各個運算量參與運算的先后順序既要遵守運算符的優先級別,同時也要遵守運算符結合性的制約,以便確定運算的順序。2.3.1C運算符C語言的運算符總共可以分為以下幾類:(1)算術運算符(+-*/%)(2)關系運算符(><==>=<=!=)(3)邏輯運算符(!&&||)(4)位運算符(<<>>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)(8)指針運算符(*和&)(9)求字節數運算符(sizeof)(10)強制類型轉換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])2.3.2算術運算符和算術表達式算術運算符+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。如:5/3)%(模運算符,或稱求余運算符,%兩側均應為整型數據,如:7%4的值為3)。2.3.2算術運算符和算術表達式算術表達式和運算符的優先級與結合性基本的算術運算符:用算術運算符和括號將運算對象(也稱操作數)連接起來的、符合C語法規

則的式子,稱為C算術表達式。運算對象包括常量、變量、函數等。

例如:

a*b/c-1.5+′a′

是一個合法的表達式2.3.3關系運算符和關系表達式關系運算符及其優先次序C語言中有以下關系運算符:(1)<(小于);(2)<=(小于等于);(3)>(大于);(4)>=(大于等于);(5)==(等于);(6)!=(不等于)。關系運算符都是雙目運算符,其結合性均為左結合。2.3.3關系運算符和關系表達式關系表達式

關系表達式的一般形式為:

表達式關系運算符

表達式例如:a+b>c+d、x>5、a+1<c、-i-5*j==k+1都是合法的關系表達式【例2.2】計算以下關系表達式的值。2.3.4邏輯運算符和邏輯表達式邏輯運算符及其優先次序

C語言中提供了3種邏輯運算符:(1)&&,與運算;(2)||,或運算;(3)!,非運算。與運算符“&&”和或運算符“||”均為雙目運算符。具有左結合性。非運算符“!”為單目運算符,具有右結合性。邏輯運算符和其他運算符優先級的關系可表示如下:2.3.4邏輯運算符和邏輯表達式邏輯運算的值邏輯運算的值也有“真”和“假”兩種,用“1”和“0”來表示。(1)與運算(&&):參與運算的兩個量都為“真”時,結果才為“真”,否則為“假”。

如:5>0&&4>2(2)或運算(||):參與運算的兩個量只要有一個為“真”,結果就為“真”。兩個量都為“假”時,結果為“假”。如:5>0||5>8(3)邏輯非運算(!):參與運算量為“真”時,結果為“假”;參與運算量為“假”時,結果為“真”。如:!(5>0)2.3.4邏輯運算符和邏輯表達式邏輯表達式

邏輯表達式的一般形式為:表達式

邏輯運算符

表達式【例2.3】計算以下邏輯表達式的值。

2.4C語句C程序源程序文件1源程序文件2預處理命令數據聲明函數1函數首部函數體數據聲明執行語句函數n源程序文件n2.4.1C語句的作用及分類一個c程序可以有若干個源程序文件組成一個源文件可以有若干個函數和預處理命令以及全局變量聲明部分組成一個函數有函數首部和函數體組成函數體由數據聲明和執行語句組成C語句分為5類控制語句函數調用語句表達式語句空語句復合語句2.4.1C語句的作用及分類

控制語句:完成一定的控制功能

1.if~else

條件語句6.break間斷語句

2.for()循環語句7.

switch()開關語句

3.while()循環語句8.

goto

轉向語句

4.do~while()循環語句9.

return返回語句

5.continue繼續語句2.4.1C語句的作用及分類函數調用語句

有一個函數調用加一個分號構成一個語句

printf(“ThisisaCstatement.”);表達式語句

有一個表達式加一個分號構成一個語句空語句只有一個分號的語句用來做流程的轉向點用來作為循環語句中的循環體

復合語句用一對{}括起來的語句

2.4.2最基本的C語句--賦值語句賦值語句由賦值表達式加上一個分號構成其一般形式為:變量=表達式;

如:a=100賦值表達式

a=100;賦值語句

2.5數據的輸入輸出C程序的數據輸入輸出是以計算機為主體而言的,從計算機向顯示器等設備傳輸信息稱為輸出,從鍵盤等設備向計算機傳輸信息稱為輸入。由于C語言本身不提供輸入輸出語言,所以數據的輸入輸出操作都是由標準函數庫中的函數來實現的。C標準庫提供了一些輸入輸出函數,如常用的格式化輸出printf函數和輸入scanf函數等。需要使用C語言庫函數時,要先用預編譯命令#include將相關的“頭文件”包括到源文件中。數據的輸入輸出庫函數所在的頭文件是”stdio.h”,所以我們要用預編譯指令#include<stdio.h>或者#include“stdio.h”2.5.1printf函數輸出數據printf函數和scanf函數是C程序中主要的輸出輸入函數,兩者都是格式輸出輸入函數,用戶在使用這兩個函數時需要指定輸入輸出數據的格式,不同類型的數據需要指定不同的格式。printf函數主要用來把若干的任意數據輸出到終端顯示器屏幕上,在前面的例題中我們已多次使用過這個函數。printf函數是一個標準庫函數,它調用的一般形式為:printf(“格式控制”,輸出表列);例如:printf(“%d,%c”,i,c);其中括號中包含2個部分:①

格式控制是用來指定輸出格式的一個字符串。②

輸出列表是程序需要輸出的一些數據,可以是常量、變量或表達式。輸出列表的輸出項與格式控制字符串在數量和類型上應該一一對應。2.5.1printf函數輸出數據【例2.4】2.5.2scanf函數輸入數據scanf函數是C語言中常用的格式輸入函數,是用來從鍵盤上把數據按用戶指定的格式輸入到指定的變量之中。scanf函數的一般形式為:scanf(“格式控制”,地址表列)其中,格式控制的作用與printf函數相同。地址表列由若干個變量的地址或者字符串的首地址組成,變量地址是以地址運算符“&”得到。例如: &a,&b分別表示變量a和變量b的地址。

2.5.2scanf函數輸入數據在使用scanf函數時應注意:(1)scanf函數的“地址表列”應該是變量地址,而不是變量名。如若a和b為整形變量,當需要從鍵盤輸入兩者的值時,必須寫成 scanf(“%d%d”,&a,&b)

而不是 scanf(“%d%d”,a,b)(2)如果在“格式控制”字符串中除了格式聲明外還有其他字符,則在輸入數據時需要在對應的位置輸入與這些字符相同的字符,如 scanf(“a=%d,b=%d”,&a,&b);

則在輸入數據時,需要輸入以下字符:

a=1,b=2↙

2.5.3字符數據的輸入輸出C語言中的字符數據同樣可以用printf函數和scanf函數輸出和輸入。除此之外,C函數庫還提供了一些專門用于輸入和輸出字符的函數。下面分別介紹。1.用putchar函數輸出一個字符 putchar函數的一般形式: putchar(c)

作用是從計算機向顯示器輸出字符變量c的值,顯然它是一個字符。

2.5.3字符數據的輸入輸出【例2.5】先后輸出dog三個字符。

解題思路:先定義三個字符變量,分別賦初始值’d’,’o’,’g’,然后用putchar函數輸出這3個變量的值。

2.5.3字符數據的輸入輸出2.用getchar函數輸入一個字符getchar函數的一般形式: a=getchar()

作用是從輸入設備(一般是鍵盤)向計算機輸入一個字符存放在a中【例2.6】實現從鍵盤輸入dog三個字符并將他們輸出顯示在屏幕上

本章小結本章主要闡述了順序結構程序設計、C語言中數據的表現形式、運算符和表達式及常用的輸入輸出語句。1.C語言包含的數據類型如下圖所示:本章小結2.在邏輯表達式運算中應注意,如果在某一步已得到了整個表達式結果,則后面的部分3.printf()與scanf()語句是最通用的輸入輸出函數,它們可以在程序設計者的控制下以各種格式分別實現數據的輸出和輸入操作。它們位于stdio.h庫文件中。最簡單的字符輸入輸出函數是getchar()和putchar()。兩者分別從鍵盤讀一個字符或向顯示屏寫一個字符。第3章選擇結構程序設計信息工程學院主講人:XXX內容提要41選擇結構程序舉例2選擇結構和條件判斷423if語句實現選擇結構42選擇結構的嵌套425switch語句多分支選擇結構24443.1選擇結構程序舉例實際的生活中往往存在選擇分支的情況,一般來說,像拋硬幣之類的事件存在著正面和反面兩個分支,像選擇出行路徑之類的事件,往往存在多個分支,分支的不同將決定程序的不同行為表現。在C語言中,存在著兩種選擇語句:(1)if語句。if語句主要應用在判斷條件為一個區間,一般為兩個分支的程序選擇中。(2)switch語句。switch語句主要應用在判別條件為具體值時,常用在具有多個分支的程序選擇中。上面兩個語句都是應用選擇程序結構,后面章節將從簡單的開始,先介紹兩個選擇分支的if語句,再從雙分支程序進行擴展,介紹多個選擇分支的switch語句。3.1選擇結構程序舉例【例3.1】從一元二次方程的求根計算過程,演示選擇程序如何解決實際問題。

要求:編程序求解一元二次方程的根,若無實根則打印說明。

分析:如果要求一元二次方程

的根,則需要判斷

的值,如果

則有實根,如果

則沒有實根,然后再根據求根公式進行計算。

算法流程:(1)獲得鍵盤輸入,得到三個系數a,b,c;(2)計算判斷條件

,若判斷條件

,跳轉到步驟(3),若判斷條件

,跳轉到步驟(4);(3)打印該二元一次方程沒有實根;(4)進行求根公式計算,輸出一元二次方程的實根。3.1選擇結構程序舉例編寫程序:3.2選擇結構和條件判斷一個選擇結構將伴隨著多個分支,這些分支代表著程序的執行在不同條件下表現出不同的行為。假設一個程序需要輸出一個數的絕對值,可以得到如下的算法步驟。步驟一:從程序外輸入整數X步驟二:判斷輸入的整數X是否小于0若小于0執行步驟三否則執行步驟四步驟三:返回-X步驟四:返回X3.2選擇結構和條件判斷代碼實現:3.2選擇結構和條件判斷如上代碼所示,條件判斷對應的代碼為: if(x<0)其雙分支為: if(x<0) return-x; else returnx;當x<0的條件為真,則返回-x,條件為假,則返回x。3.3if語句實現條件判斷-3.3.1if語句處理選擇結構舉例【例3.2】明天不下雨就去郊游(條件為不下雨)算法的步驟:步驟一:獲取天氣輸入,將輸入進來的字符串保存在str_weather變量中;步驟二:判斷str_weather是否不等于“rainday”,若為真則執行步驟三,否則不執行任何操作。

步驟三:打印明天去郊游:Goforanoutingtomorrow!3.3.1if語句處理選擇結構舉例編寫代碼:3.3.1if語句處理選擇結構舉例例3.2中if語句的執行順序流程如下圖3-2:開關型if圖3-2開關型if3.3.1if語句處理選擇結構舉例if語句的三種應用與程序流程圖:簡化的if語句if-else雙分支語句if-else-if雙分支語句3.3.2簡單的if結構if語句的最簡單形式 if(表達式)語句1【例3.3】考試分數低于60分為不及格(條件為分數大小)。3.3.3if-else語句結構if-else分支結構形式 if(表達式)語句1[else語句2]【例3.4】考試分數低于60分為不及格,大于或等于60分為及格(條件以分數超過60為界)。3.3.4if-else-if語句結構【例3.5】考試分數小于60分為不及格,大于或等于60分小于70分為合格,大于或等于70分小于80分為良好,大于80分為優秀(條件為分數大小)這是一個擁有多重判斷條件的問題,思路分析如下:(1)對于分數的評價是與分數的區間有關(2)分數區間的邊界為具體的某個整數(3)分數區間具有左關右開的特征,具體為:[0,60),[60,70),[70,80),[80,100]根據上面的三點,可以理清程序的二分設計思路步驟一:選擇某個數值進行判斷步驟二:將這個數值左邊的視為某一個評價區間,右邊的為多個區間進行混合,重復步驟一、二,最終將分數區間進行判斷。3.3.4if-else-if語句結構編寫代碼:3.4選擇結構的嵌套-3.4.2嵌套if語句與程序流程圖if語句的嵌套。具體的代碼模式如下:if(<!--判斷條件1-->)//外層if{ if(<!--判斷條件2-->)//內層if {/*判斷條件2為真*/} else {/*判斷條件2為假*/}

if(<!--判斷條件3-->)//內層if {/*判斷條件3為真*/} else {/*判斷條件3為假*/}}else{...}3.4.2嵌套if語句與程序流程圖圖3-5:if語句嵌套流程圖3.4.2if語句的嵌套應用【例3.6】比較復雜的行李托運情景:

低于20公斤的行李免托運費,高于20公斤低于40公斤部分收1.5元/公斤,高于40公斤部分則按2.0元/公斤(條件為行李重量)

會員托運消費打八折(條件為會員身份)定義算法步驟:步驟一:獲得用戶輸入的行李重量,保存在整型變量weight中步驟二:創建運費計量變量money,使用整型類型聲明步驟三:創建會員身份標識vip,使用整形類型聲明(1為會員,0不為會員)步驟四:獲取用戶輸入行李重量以及會員身份標識步驟五:判斷weight是否高于20,若為否執行步驟六,否則執行步驟十一步驟六:判斷(weight-20)是否高于20,若為是,執行步驟七,否則執行步驟八步驟七:計算20與1.5的乘積加上(weight-40)與2的乘積并將結果賦值給money步驟八:計算(weight-20)與1.5的乘積并將結果賦值給money步驟九:判斷vip值是否等于1,是執行步驟十,否則執行步驟十一步驟十:計算money與0.8的乘積并將結果賦值給money步驟十一:打印所需要的運費

3.4.2if語句的嵌套應用編寫代碼:

3.4.2if語句的嵌套應用針對上面的結果做簡單的驗證,由于是vip會員身份,可以得到下列的計算公式代入數值為

可以驗算計算結果的正確性。

注意:在這里涉及到整型與浮點數的數據類型的轉換,在c語言中要聲明一個常量的數據類型可以在常量后面加上數據類型相關的縮寫,例如:2.f(單精度常量),123456789012345L(長整形常量)。同時if語句的嵌套特性決定了if語句可以進行多重嵌套,但是在實際應用場景中,應該注意設計程序算法流程,在能夠使用if-else-if解決問題的時候,不建議使用if語句的嵌套,以提高代碼的可讀性。

3.5switch語句實現多分支選擇結構由于在邏輯結構上,分支的形式不止雙分支。在C語言中可以通過switch關鍵字進行多分支結構的實現。例如,監控用戶的輸入,如果輸入為大寫’A’,’B’,’C’則替換為小寫,否則直接返回。

3.5.1多分支結構一般形式switch語句的一般形式如下:switch(表達式){ case常量1:語句1 case常量2:語句2 case常量3:語句3 ……… case常量n:語句n default:語句n+1}3.5.1多分支結構一般形式switch語句的一般形式如下:switch(表達式){ case常量1:語句1 case常量2:語句2 case常量3:語句3 ……… case常量n:語句n default:語句n+1}3.5.1多分支結構一般形式(5)每個case后面的常量必須互不相同,否則會出現矛盾的現象(同值不同的入口沖突)。(6)case標號只起標記作用,在執行switch語句時,根據switch表達式的值找到入口,在執行一個case語句后會順序執行下去,直到遇到break語句跳出順序執行。(7)在case語句中如果包含了一個以上的執行語句,可不必加花括號,程序執行的時候會順序執行。當然加花括號括起來也不會有影響。(8)多個case語句可以共用一個執行語句,例如:case‘A’:case‘B’:case‘C’:b++;3.5.1多分支結構一般形式使用switch應注意以下問題:要注意以下幾點switch括號內的“表達式”,應該為整形(包括字符型)。(2)switch下面的花括號是一個復合語句。意味著包含若干語句,它是switch語句的語句體。語句體內包括多個以關鍵字case開頭的語句行和一個以default開頭的語句行,case后面跟著一個常量或常量表達式,在表達式后面需要跟一個冒號。如case’A’:,case0:等。(3)switch語句執行的時候,先計算括號內表達的值,將這個值與case后面的常量作匹配,如果匹配成功,則進入該case所表3.5.2多分支語句的實際應用示的分支。(4)如果沒有與任何case后面的常量相匹配,則執行default后面的(n+1)語句。可以沒有default標號及后面的(n+1)語句,此時如果沒有與任何case后面的常量相匹配,則不執行任何語句。3.5.2多分支語句的實際應用在前面的章節中曾經用if語句介紹過成績分段評價的例子,以下程序的目的是輸入一個成績然后判斷該成績的區間段位。由于成績的分段之間不存在層級的邏輯關系,同時分段為多段分段,可以采用多分支結構來編程。if語句適合于區間分段,而switch只適合以點分段。但仔細觀察分數分段的結構[0,60),[60,70),[70,80),[80,100],會發現分段的邊界都是10的整數倍,利用整數除法的性質做歸一化處理,得出判斷表達式以及入口常量。3.5.2多分支語句的實際應用【例3.7】下面是使用switch解決問題的代碼:本章小結本節闡述了選擇結構控制語句:if、if-else、if-else和switch語句的具體用法。

1.在if語句中,應該注意if語句中的表達式可以為所有的合法的表達式。

例如:

inta=1;

if(a=0)printf(“Yes”);

elseprintf(“No”); 2.在if語句3種形式中,如果要想在滿足條件是執行一組語句,必須使用{}括起來一個復合語句,但在{}后面不能加分號。

3.在使用switch()語句時應注意:在case后的各個常量表達式值都不能相同;case后允許有多個語句,可以不用{}括起來;若每個分支后,都有break語句,則各case和default子句先后順序可以變動而不影響程序結果;default子句可以省略不用。第4章循環結構程序設計信息工程學院主講人:XXX內容提要41

循環結構程序舉例2while語句實現循環結構423do-while語句實現循環結構42for語句實現循環結構45幾種循環結構的比較244442循環的嵌套2427改變循環執行的狀態424464.1循環結構程序舉例首先,考慮這樣一個問題:在屏幕上依次輸出整數1~20,每兩個整數中間空一個格。使用順序結構,可以這樣解決這個問題:毫無疑問,這個程序的語法是正確的,編譯、運行后可解決問題。但是這并不是一個好的程序,因為這樣的程序有一定的局限性。如果題目要求輸出整數1~2000,那又該如何編寫呢?這時就可以運用循環結構程序設計的思想。4.1循環結構程序舉例在程序設計中,但凡是重復性的工作,都要想辦法用循環語句來實現。比如,在這個問題上,解決的思路就應該是從輸出1開始,每次輸出一個比前一個數大1的整數,重復循環20次。使用循環結構來解決問題,首先要定義一個循環變量i,從1到20,循環剛好進行20次。i的初值是1,當i小于等于20時,循環結構做兩件事:輸出i值,以及將i增加1。由于每次循環使i增加1,i將逐漸增加,增加到21時,便不再滿足i小于等于20的循環條件,則循環結束。4.1循環結構程序舉例通過上述實例可知,在程序中僅僅使用順序結構和選擇結構是遠遠不夠的,還需要用到循環結構。因為在日常生活中或者是處理程序問題時,經常會出現許多需要重復處理的問題。在例4.1中,可以看到,使用循環結構(如while語句)可以更加方便簡潔地輸出1~20的整數。雖然這個問題使用順序結構也可以解決,但是使用順序結構存在一個很大的弊端,那就是如果問題中需要輸出一個更大范圍的整數,如1~20000,使用順序結構程序就會非常冗長,工作量也會明顯增大,且不便于閱讀與維護。4.2while語句實現循環結構

while語句的一般形式如下:

while(表達式)語句

while語句的功能:

首先計算表達式的值,如果表達式的值非零(真),那么執行“語句”,然后再次計算表達式的值,重復執行此過程,直到表達式的值為零(假),循環結束。重復執行的語句稱為循環體,表達式稱為循環判別表達式。while語句的流程圖如圖4-3所示。4.2while語句實現循環結構【例4.2】用while語句求1+2+3+…+100的值。算法分析:

(1)此題有一個明顯的特征,即重復執行加法動作,是將100個數進行累加的問題。那么就可以想到使用循環結構來解決,通過循環執行加法運算,執行100次。(2)接下來分析累加的數值有什么變化規律。通過觀察,可以發現累加的數都有一個規律,就是后一個數等于前一個數加1。所以,可以在每次循環加法運算的同時,對累加的數進行自加1操作,得到下一個數。

4.2while語句實現循環結構流程圖:代碼如下:

4.2while語句實現循環結構使用while語句時,需要注意以下問題。(1)循環次數的控制要正確。使用循環結構時,可以通過循環變量來控制循環次數,例4.1和例4.2都是通過循環變量i來控制循環次數的,前者是20次,后者是100次。(2)循環體包含一個以上的語句時,一定要用{}括起來,否則,程序只將第一條語句作為循環體。(3)在循環體內要有使循環趨于結束的語句,否則,可能導致無限循環。4.3do-while語句實現循環結構do-while語句的一般形式如下:while語句的功能:先執行“語句”,再計算表達式的值。如果表達式的值為非零(真),繼續執行“語句”,直到表達式的值為零(假),循環結束。流程圖:4.3do-while語句實現循環結構注意:do-while語句與while語句的區別在于,do-while語句先執行一次循環體,再進行表達式的判斷,因此循環體中的語句至少要執行一次。在設計程序時,如果不知道重復執行的次數,而且第一次必須執行時,常采用do-while語句。理解了do-while語句與while語句之間的區別之后,可以將例4.1和例4.2采用do-while語句的形式進行編寫。4.3do-while語句實現循環結構【例4.3】用do-while語句解決“在屏幕上輸出整數1~20”的問題。4.3do-while語句實現循環結構【例4.4】用do-while語句求1+2+3+…+100的值。4.3do-while語句實現循環結構使用do-while語句時,需要注意以下問題。(1)為了避免誤讀,do-while語句的循環體中即使只有一條語句,也要用{}括起來。(2)使用do-while語句時切勿忘記while(表達式)后需要添加“;”。4.4for語句實現循環結構for語句一般形式如下:流程圖:

4.4for語句實現循環結構通過流程圖可以看出,for語句實際等價于下面的while語句:4.4for語句實現循環結構for語句中,3個表達式的作用如下。表達式1:設置初始條件,只執行一次。可以為0個、1個或者多個變量設置初值。表達式2:是循環條件判別表達式,用來判斷是否繼續循環。每次執行循環體前,先執行此表達式,決定是否繼續執行循環體。表達式3:作為循環中的調整,用來設置循環變量的變化方式并修改循環變量。因此,for語句的功能可以用下面的過程來描述。(1)計算表達式1。(2)計算表達式2,判斷表達式2是否為真,若為真,則執行循環體中的“語句”,跳轉到(3)執行。若為假,則循環結束,退出循環。(3)計算表達式3。(4)跳轉到(2)執行。4.4for語句實現循環結構【例4.5】用for語句求1+2+3+…+100的值。4.4for語句實現循環結構使用for語句時,需要注意以下問題。(1)for循環中的表達式1(循環變量賦初值)、表達式2(循環條件)、表達式3(循環變量增量)都是選擇項,可以省略,但“;”不能省略。(2)省略表達式1(為循環變量賦初值),表示不對循環控制變量賦初值。(3)省略表達式2(循環條件),表示不對循環控制變量檢測,注意可能成為死循環。例如:for(i=1;;i++)sum=sum+i;相當于:i=1;while(1){sum=sum+i;i++;}4.4for語句實現循環結構4)省略表達式3(循環變量增量),則不對循環控制變量進行修改,這時可在語句體中加入修改循環控制變量的語句。例如:for(i=1;i<=100;){sum=sum+i;i++;}(5)省略表達式1(為循環變量賦初值)和表達式3(循環變量增量)。例如:for(;i<=100;){sum=sum+i;i++;}相當于:

while(i<=100) {sum=sum+i; i++;}4.4for語句實現循環結構(6)3個表達式都省略。例如:for(;;)相當于:while(1)(7)表達式1可以是設置循環變量初值的賦值表達式,也可以是其他表達式。例如:for(sum=0;i<=100;i++)sum=sum+i;(8)表達式1和表達式3可以是一個簡單表達式,也可以是逗號表達式。(9)表達式2一般是關系表達式或邏輯表達式,但也可是數值表達式或字符表達式,只要其值非零,就執行循環體。例如:for(i=0;(c=getchar())!=’\n’;i+=c);又如:for(;(c=getchar())!=’\n’;)printf("%c",c);4.5幾種循環結構的比較首先,3種循環結構可以用來處理同一個問題,一般情況下,它們是可以相互替換的。但是,具體的語法結構仍然有些不同,比如在while循環和do-while循環中,只在while后面的圓括號內指定循環條件,若想要使循環能夠正常結束,避免出現死循環現象,則應該在循環體中包含可以使循環趨于結束的語句(如i++,i??等)。但是for循環語句便無須此類操作,因為for語句中的表達式3就包含了使循環趨于結束的操作。在用while和do-while循環時,循環變量的初始化操作必須在while語句和do-while語句之前完成。而for語句可以在表達式1中實現循環變量的初始化。4.6循環結構的嵌套循環的嵌套又稱多重循環,就是在一個循環體內包含另外一個循環體。3種循環結構(while循環、do-while循環和for循環),不僅可以實現自身循環嵌套,還可以相互嵌套。下面,來看一下常見的幾種循環嵌套形式,如圖4-12所示。4.6循環結構的嵌套幾種常見的循環嵌套形式:4.7改變循環執行的狀態以上介紹的各種循環結構的例子都是根據事先指定的循環條件正常執行及終止的循環。但是在某種情況下,必須提前結束正在執行的循環操作,又該如何處理呢?4.7.1break語句提前終止循環break語句在前面介紹switch語句時出現過,它也可以用于循環語句。break語句的語法格式為:break;break語句用于switch語句時,將直接跳出switch語句。break語句用于循環體時,將終止語句所在的循環,從包含它的循環語句(while、do-while、for)中退出,執行循環語句后的下一條語句。4.7.1break語句提前終止循環【例4.6】全系1000名學生進行慈善募捐,當總額達到10萬元時結束,統計此時捐款的人數,以及平均每人捐款的數額。4.7.2continue語句提前結束本次循環循環結構中不單單只有希望終止整個循環的操作,有時是希望可以提前結束當前的循環,而緊接著繼續執行下一次循環操作。這時就需要用到continue語句。continue語句一般形式如下:continue;continue語句的功能:使continue語句所在的循環立即結束本輪循環而開始下一輪循環(即本次循環中continue后面的語句不再執行)。continue語句用在while和do-while語句中與用在for語句中略有不同,在for語句中將終止本次循環體運行,但是仍要計算表達式3。4.7.2continue語句提前結束本次循環【例4.7】要求輸出100~200之間不能被3整除的數。4.7.3break語句和continue語句的區別根據以上分析可知,continue語句只結束本次循環,而不終止整個循環。而break語句是終止整個循環,不再執行循環體。通過流程圖可以更加直觀地看到兩者之間的區別,如圖4-15所示。本章小結(1)while語句語法格式如下:while(表達式)語句執行過程:先計算表達式的值,若值為真(非0),則執行循環體語句,否則退出循環。(2)do-while語句語法格式如下:do語句while(表達式);執行過程:先執行一次循環體語句,然后判斷表達式的值,若值為真(非0),則繼續執行循環,否則終止循環。do-while語句的循環體至少被執行一次。本章小結(3)for語句語法格式如下:for(表達式1;表達式2;表達式3)語句執行過程:先處理表達式1,然后判斷表達式2,如果表達式2為真(非0),則執行循環體語句,然后執行表達式3,再重新判斷表達式2,如果表達式2為假(0),則跳出循環。(4)break語句和continue語句break語句在switch語句中用來使流程跳出switch結構,執行switch后面的語句,在循環體內,能使所在循環體立即終止,即跳出所在循環體,轉向執行循環體后面的語句。continue語句的功能是:結束本次循環,即不執行循環體中continue后面尚未執行的語句,接著進行下一次是否執行循環的判定。第5章數組信息工程學院主講人:XXX內容提要41一維數組的定義和引用12二維數組的定義和引用423字符數組42數組的應用42524445.1一維數組的定義和引用一維數組的定義數組中的每個元素只帶有一個下標時,這樣的數組稱為一維數組。

定義格式如下:數據類型說明符數組名[常量表達式];例如:inta[8];它表示定義了一個整型數組,數組名為a,數組中有8個元素。說明如下:(1)數據類型說明符用來說明數組的類型,即數組中元素值的類型,可以是整型、符點型,或是其它的數據類型,本例中數據類型說明符表明數組a中8個元素的數據類型是整型。(2)數組名的命名規則遵循標識符的命名規則,和變量名的命名規則相同。(3)在定義數組時,需要指定數組元素的個數,其中方括號中的內容只能是整型常量或整型常量表達式,方括號中的值指定數組元素的個數。(4)數組名不能與其它變量名相同。5.1一維數組的定義和引用一維數組的引用數組元素引用的格式:數組名[下標]其中,“下標”是個整型表達式。如x[0],x[j],x[i+k]都是對數組元素的合法引用。但數組下標表達式的值必須大于等于0,并且小于等于數組上界的值。另外一個數組元素就是一個變量名,代表內存中一個存儲單元。【例5.1】對數組元素的引用#include<stdio.h>voidmain(){inti,a[8];for(i=0;i<=7;i++)a[i]=i;for(i=7;i>=0;i--)printf("%d",a[i]);}運行結果:5.1一維數組的定義和引用一維數組的初始化定義數組時給數組元素賦值就是一維數組的初始化。格式如下:數據類型說明符數組名[數組長度]={值1,值2,值3,......,值n};例如:inta[8]={0,1,2,3,4,5,6,7};(1)所賦的值放在等號后的一對花括號中,數值類型必須與所說明的數據類型一致,所賦值之間用逗號隔開,系統會按賦值順序自動進行分配。(2)當在賦值時花括號中的值的個數少于賦值元素的個數時,將自動給后面的元素賦值0。5.1一維數組的定義和引用一維數組的初始化(3)可以通過賦初值來指定數組的大小,這時數組名后的一對方括號中可以不指定數組的大小,但方括號不能省略。例如:inta[5]={1,1,1,1,1};可以寫成inta[]={1,1,1,1,1};(4)數組初始化時,初始值的個數不能大于數組元素的個數,否則會出現錯誤。例如:inta[5]={1,1,1,1,1,1,1,1};//這是錯誤的(5)數組元素只能逐個賦值,不能對數組整體賦值。5.1一維數組的定義和引用【例5.3】編寫一個程序,通過鍵盤給數組a中的5個元素賦初值。#include<stdio.h>voidmain(){inta[5];inti;for(i=0;i<5;i++){scanf("%d",&a[i]);printf("a[%d]=%d",i,a[i]);}}運行結果:一維數組程序舉例5.1一維數組的定義和引用【例5.4】用數組求Fibonacci數例的前20項(1,1,2,3,5,8,13,21,.....)。#include<stdio.h>voidmain(){inti;intf[20]={1,1};//定義并初始化一維數組,使f[0]=1,f[1]=1,其余元素為0for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];//數例中的每i項等于i-2項加上i-1項的和for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%8d",f[i]);}printf("\n");}運行結果:一維數組程序舉例5.1一維數組的定義和引用【例5.5】輸入5個整數,輸出其中的最大值和最小值。#include<stdio.h>voidmain(){intmax,min,a[5],i;printf("請輸入5個數:\n");for(i=0;i<5;i++)scanf("%d,",&a[i]);max=min=a[0];for(i=0;i<5;i++){if(a[i]>max)max=a[i];if(a[i]<min)min=a[i];}printf("最大值max=%d\n",max);printf("最小值min=%d\n",min);}運行結果:一維數組程序舉例5.2二維數組的定義和引用二維數組的定義數組中的每個元素有兩個下標時,這樣的數組稱為二維數組。定義格式如下:數據類型說明符數組名[常量表達式1][常量表達式2];其中兩個方括號中的常量表達式只能是正整數。如果將二維數組看做表格,那么常量表達式1就代表行數,常量表達式二就代表列數。例如:inta[3][4];說明如下:(1)定義了一個數組名為a的二維數組。(2)數組中的每個元素都是整型變量。(3)數組a中共有3×4=12(3行4列)個元素。(4)數組a的邏輯結構是一個具有3行4列的矩陣。5.2二維數組的定義和引用二維數組的引用二維數組元素引用的格式:數組名[下標1][下標2]其中,第1個下標表示行下標,第2個下標表示列下標,通過行下標和列下標確定數組元素在二維數組中的位置。例如:inta[3][4];說明如下:(1)引用二維數組元素時,要把二維數組的下標分別放在兩個方括號內。不可以把a[0][1]寫成a[0,1]。(2)二維數組元素的下標值應該在已經定義的數組大小的范圍之內。(3)二維數組名a表示二維數組的首地址。(4)二維數組元素可以參加表達式運算,也可以賦值。5.2二維數組的定義和引用【例5.7】二維數組元素的使用。程序如下:#include<stdio.h>voidmain(){inta[2][3];inti,j;for(i=0;i<2;i++)for(j=0;j<3;j++)scanf(“%d”,&a[i][j]);for(i=0;i<2;i++){for(j=0;j<3;j++)printf(“%3d”,a[i][j]);printf(“\n”);}}運行結果:二維數組的引用舉例5.2二維數組的定義和引用二維數組的初始化同一維數組一樣,C語言允許在定義二維數組時對二維數組進行初始化,對二維數組初始化可以通過下面的方式實現。(1)通過分行賦初值給二維數組,所賦值的個數與二維數組元素的個數相同。如:inta[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};(2)通過分行賦初值給二維數組,所賦值的個數與二維數組元素的個數不相同。(3)對二維數組賦初值時可以省略內花括號對。(4)對全部數組元素賦初值時,可以省略第一個方括號中的常量表達式,不能省略第二個方括號中的常量表達式,即第一維的長度可以不指定,但第二維的長度不能省略。5.2二維數組的定義和引用5.2.4二維數組的程序舉例【例5.8】將二維數組的行列元素互換,存到另外一個二維數組中。例如:析如下:(1)通過外層循環控制行,讓變量i依次等于0,1,.....,行長度-1。(2)通過內層循環控制列,讓變量j依次等于0,1,.....,列長度-1。(3)內層循環的循環體為:將a[i][j]的值賦給b[j][i]。二維數組程序舉例5.2二維數組的定義和引用程序如下:#include<stdio.h>voidmain(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf(“數組a:\n”);for(i=0;i<=1;i++){for(j=0;j<=2;j++){printf(“%5d”,a[i][j]);b[j][i]=a[i][j];}printf(“\n”);}printf(“數組b:\n”);for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf(“%5d”,b[i][j]);printf(“\n”);}}二維數組程序舉例運行結果:5.2二維數組的定義和引用【例5.9】通過鍵盤輸入3行4列的數組元素,求出數組中的最大值及所在行、列的下標。#include<stdio.h>voidmain(){inta[3][4],max,row,col,i,j;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j]);max=a[0][0];row=col=0;for(i=0;i<3;i++)for(j=0;j<4;j++)if(max<a[i][j]){max=a[i][j];row=i;col=j;}printf(“max=a[%d][%d]=%d\n”,row,col,max);}運行結果:二維數組程序舉例5.3二維數組的定義和引用二維數組的定義數組中的每個元素有兩個下標時,這樣的數組稱為二維數組。定義格式如下:數據類型說明符數組名[常量表達式1][常量表達式2];其中兩個方括號中的常量表達式只能是正整數。如果將二維數組看做表格,那么常量表達式1就代表行數,常量表達式二就代表列數。例如:inta[3][4];說明如下:(1)定義了一個數組名為a的二維數組。(2)數組中的每個元素都是整型變量。(3)數組a中共有3×4=12(3行4列)個元素。(4)數組a的邏輯結構是一個具有3行4列的矩陣。5.3字符數組字符數組的定義

字符數組是用來存放字符數據的數組。字符數組的每一個元素中存放一個字符。字符數組的定義格式同前面介紹的數值型數組方法類似,例如:charc[8];說明如下:(1)它表示定義了一個字符型數組,數組名為a,數組有8個元素,它們都為字符型數據。(2)由于字符型和整型是相互通用的,所以上面的定義也可以寫成:intc[8];只是char型占用1個字節,int型占用4個字節,這樣容易造成空間浪費。(3)二維字符數組的定義同前,不再贅述。5.3字符數組字符數組的初始化字符數組允許在定義時對其進行初始化,一維數組的初始化有以下幾種方式:(1)用字符常量對字符數組初始化charc[8]={‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’,‘\0’};賦值后各元素如圖5-11所示。5.3字符數組字符數組的初始化(2)用字符串對字符數組初始化

通過字符串(C語言規定用“”括起來的多個字符叫字符串)給字符數組賦值時,編譯系統會自動在字符串尾部加字符串結束標志‘\0’。‘\0’在字符數組中也占一個元素的空間,因些,在聲明字符串長度時要預留出結束標志的空間。例如:charc[6]={“Happy”};charc[6]=“Happy”;charc[]=“Happy”;charc[6]={‘H,‘a’,‘p’,‘p’,‘y’,‘\0’};charc[]={‘H,‘a’,‘p’,‘p’,‘y’,‘\0’};charc[6]={‘H,‘a’,‘p’,‘p’,‘y’};

上面的語句都是定義字符數組c,數組的長度都為6;字符數組的值為字符串Happy,字符串本身的長度為5。5.3字符數組字符數組的引用可以通過引用字符數組中的一個元素得到一個字符,字符數組的引用和前面一維數組和二維數組類似。【例5.10】通過字符數組輸出一個字符串。#include<stdio.h>voidmain(){charc[14]={‘I’,‘’,‘a’,‘m’,‘’,‘a’,‘’,‘s’,‘t’,‘u’,‘d’,‘e’,‘n’,‘t’};inti;for(i=0;i<14;i++)printf(“%c”,c[i]);printf(“\n”);}運行結果:5.3字符數組字符數組的引用【例5.11】通過字符數組輸出一個菱形。#include<stdio.h>voidmain(){chara[][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*'}};inti,j;for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%c",a[i][j]);printf("\n");}}運行結果:5.3字符數組字符串處理函數1、puts函數其一般形式:puts(字符數組)該函數的作用是將一個字符串(以‘\0’為結束標志的字符序列)輸出。2、gets函數其一般形式:gets(字符數組)該函數的作用是從鍵盤上輸入一個字符串給字符數組,然后得到一個函數值。該函數的值是字符數組的地址。5.3字符數組字符串處理函數3、strcat

溫馨提示

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

評論

0/150

提交評論