中國科技大學(xué)C語言講義.ppt

上傳人:xt****7 文檔編號:16097503 上傳時間:2020-09-19 格式:PPT 頁數(shù):51 大?。?79KB
收藏 版權(quán)申訴 舉報 下載
中國科技大學(xué)C語言講義.ppt_第1頁
第1頁 / 共51頁
中國科技大學(xué)C語言講義.ppt_第2頁
第2頁 / 共51頁
中國科技大學(xué)C語言講義.ppt_第3頁
第3頁 / 共51頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《中國科技大學(xué)C語言講義.ppt》由會員分享,可在線閱讀,更多相關(guān)《中國科技大學(xué)C語言講義.ppt(51頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、數(shù)組是一組有序數(shù)據(jù)的集合,數(shù)組中每一個元素的類型相同。用數(shù)組名和下標(biāo)來唯一確定數(shù)組中的元素。 6.1 1維數(shù)組的定義和引用 6.2 2維數(shù)組的定義和引用 6.3 字符數(shù)組與字符串,第6章 數(shù) 組,1、一維數(shù)組的定義,定義方式:,存儲類型符 數(shù)據(jù)類型符 數(shù)組變量名整型常量表達(dá)式;,數(shù)組中各元素的存儲類別,數(shù)組元素的數(shù)據(jù)類型,合法的標(biāo)識符,表示元素個數(shù) 下標(biāo)從0開始,用分號結(jié)尾,例如: int a10; //定義了有10個數(shù)據(jù)元素的int型數(shù)組a float f20; //定義了有20個數(shù)據(jù)元素的float型數(shù)組f char str110, str220; //定義了有10個

2、和20個數(shù)據(jù)元素的char型 數(shù)組str1和str2,6.1 1維數(shù)組的定義和引用,定義說明:,(1) 數(shù)組定義時,必須指定數(shù)組的大?。ɑ蜷L度),數(shù)組大小必須是整型常量表達(dá)式,不能是變量或變量表達(dá)式。 (2) 數(shù)組定義后,系統(tǒng)將給其分配一定大小的內(nèi)存單元,其所占內(nèi)存單元的大小與數(shù)組元素的類型和數(shù)組的長度有關(guān)。,數(shù)組所占內(nèi)存單元的字節(jié)數(shù) = 數(shù)組大小 sizeof(數(shù)組元素類型),,例如,下面對數(shù)組的定義是錯誤的: int n = 10; int an; //數(shù)組的大小不能是變量 int b10.3; //數(shù)組的大小不能是浮點常量 int cn+10;

3、//數(shù)組的大小不能是變量表達(dá)式,例如:short int a20; 則數(shù)組a所占內(nèi)存單元的大小為:20 * sizeof(short) = 20 * 2 = 40(字節(jié)),2、一維數(shù)組的引用,引用格式:,數(shù)組變量名下標(biāo),引用說明:,(1) 下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。C語言規(guī)定,下標(biāo)的最小值是0,最大值則是數(shù)組大小減1。注意越界問題。 (2) 只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組 (3) 數(shù)組定義以后,數(shù)組中的每一個元素其實就相當(dāng)與一個變量,所以我們有時也把數(shù)組元素稱為下標(biāo)變量。對變量的一切操作同樣也適合于數(shù)組元素。 (4) 數(shù)組必須先定義,后使用,存儲單元有效地址 = 數(shù)

4、組的起始地址 + 下標(biāo) sizeof(數(shù)組元素類型) short int a10; short x = a10; //引用越界,a10的地址為:2000 + 10 * 2 = 2020, 只能引用a0a9,例 int a10; printf (“%d”, a); () 必須 for (j = 0; j < 10; j++) printf (“%dt”, aj); (),例:int a3; a0 = 2; //將數(shù)組a的第1個元素賦值為2 a1 = 4; //將數(shù)組a的第2個元素賦值為4 a2 = a0 + a1; //將數(shù)組a的第

5、1個元素的值與第2個元 素的值相加賦給第3個元素(值為6),例 int x = a1; //錯誤,應(yīng)先定義數(shù)組a,再引用 int a10;,例 使數(shù)組元素a0a9的值為09,然后逆序輸出。 #include “stdio.h” void main() int i,a10; for (i=0;i=0; i--) printf(%d ,ai); 運行輸出:9 8 7 6 5 4 3 2 1 0,3、一維數(shù)組的初始化 1、一般初始化, 例、static int a10 = 0,1,2,3,4,5,6,7,8,9; int array10 = 1,2,3,4,5,6

6、,7,8,9,10; 2、部分元素初始化, 例、static int a10 = 0,1,2,3,4; 3、全部元素均初始化為0,不允許簡寫。 例、 static int a10 = 0,0,0,0,0,0,0,0,0,0; 不能簡寫為:static int a10 = 0*10; 4、如果全部元素均指定初值,定義中可以省略元素的個數(shù), 例、static int a = 1,2,3,4,5;,一維數(shù)組在程序中賦值,C語言除了在定義數(shù)組變量時用初值列表對數(shù)組整體賦值以外,無法再對數(shù)組變量進(jìn)行整體賦值。,例 int a5; a = 1, 2, 3, 4, 5; a = 1, 2, 3,

7、4, 5; a5 = 1, 2, 3, 4, 5;,錯誤!,數(shù)組定義后,如何對數(shù)組進(jìn)行賦值呢? 只能通過C語句對數(shù)組中的數(shù)組元素逐一賦值。,使用賦值語句來逐一賦值,例 int a4; a0 = 1; a1 = 2; a2 = 3; a3 = 4; char str80; str0 = b; str1 = y; str2 = e; str3 = 0; //將數(shù)組str賦值為一字符串bye,這種方法是一種簡單而且行之有效的方法,它適用于長度較小的數(shù)組或?qū)﹂L度較大的數(shù)組部分元素賦值,而且可對每個數(shù)組元素賦不同的值。,一維數(shù)組在程序中賦值,使用循環(huán)語句來逐一賦值,例如,將數(shù)組a的各元素賦

8、值成奇數(shù)序列。 int a10, i; for (i = 0; i < 10; i++) ai = 2* i + 1;,例如,接受用戶鍵盤輸入賦值給數(shù)組各元素。 int a10, i; for (i = 0; i < 10; i++) scanf(%d, ,判斷下列賦值是否正確? int a3; scanf (%d%d%d, a);,,這種方法是在編程中普遍使用的一種方法,它適用于對某數(shù)組元素進(jìn)行有規(guī)律的賦值或接受用戶通過鍵盤輸入對數(shù)組元素的賦值 。,4、一維數(shù)組應(yīng)用舉例,【例1】輸入一行字符,統(tǒng)計其中各個大寫字母出現(xiàn)的次數(shù)。,#include void main ( vo

9、id ) char ch; int num26=0, i; while ((ch = getchar( )) != n) //輸入字符串,判斷統(tǒng)計 if (ch = A ,運行結(jié)果: AABBCCxyYzEEE A(2) B(2) C(2) D(0) E(3) F(0) G(0) H(0) I(0) J(0) K(0) L(0) M(0) N(0) O(0) P(0) Q(0) R(0) S(0) T(0) U(0) V(0) W(0) X(0) Y(1) Z(0),4、一維數(shù)組應(yīng)用舉例,【例2】用冒泡排序法將10個整數(shù)按照從小到大的順序排序,排序過程: (1) 比較第一個數(shù)與第

10、二個數(shù),若為逆序a0a1,則交換;然后比較第二個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第n個數(shù)比較為止第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個元素位置上; (2) 對前n-1個數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個元素位置; (3) 重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束,,38,49,76,97,97,97,97,13,27,30,13,76,76,76,27,30,13,65,65,65,27,30,13,49,49,49,27,30,13,38,38,38,27,30,冒泡排序圖示效果,#include #define NUM 10 void main

11、( ) int aNUM, i, j, t; printf (input %d numbers: n, NUM); for (i = 0; i aj+1) //交換aj和aj+1 t = aj; aj = aj+1; aj+1 = t; //輸出排好序的數(shù)據(jù) printf (the sorted numbers:n); for (i = 0; i < NUM; i++) printf (%d , ai); ,運行結(jié)果: input 10 numbers: 10 1 2 7 6 8 9 3 4 5 the sorted numbers: 1 2 3

12、4 5 6 7 8 9 10,不足之處:對已排好序的序列仍然要進(jìn)行9輪冒泡操作,盡管不會有任何數(shù)據(jù)交換操作。,如何修改呢?,對冒泡排序的改進(jìn): 當(dāng)一次冒泡過程中發(fā)現(xiàn)沒有交換操作時,表明序列已經(jīng)排好序了,便終止冒泡操作。為了標(biāo)記在比較過程中是否發(fā)生了數(shù)據(jù)交換,在程序中設(shè)立一個標(biāo)志變量flag,在每趟比較前,把flag變量置為0,如果在這趟比較過程中發(fā)生了交換,把變量flag的值置為1。在這一趟比較結(jié)束后判斷如果flag變量取值等于0表示可以結(jié)束排序過程,否則進(jìn)行下一趟比較。,#include #define NUM 10 void main ( ) int aNUM, i, j, t, f

13、lag; printf (input %d numbers: n, NUM); for (i = 0; i aj+1) //交換aj和aj+1 t = aj; aj = aj+1; aj+1 = t; flag = 1; if (flag = = 0) break; printf (the sorted numbers:n); //輸出排好序的數(shù)據(jù) for (i = 0; i < NUM; i++) printf (%d , ai); ,4、一維數(shù)組應(yīng)用舉例,【例3】用選擇排序法將10個整數(shù)按照從小到大的順序排序,排序過程: (1) 首先通過n-1次比較,從n個

14、數(shù)中找出最小的, 將它與第一個數(shù)交換第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個元素位置上; (2) 再通過n-2次比較,從剩余的n-1個數(shù)中找出關(guān)鍵字次小的記錄,將它與第二個數(shù)交換第二趟選擇排序; (3) 重復(fù)上述過程,共經(jīng)過n-1趟排序后,排序結(jié)束。,,,初始: 49 38 65 97 76 13 27 ,i = 1,13,49,一趟: 13 38 65 97 76 49 27 ,i = 2,27,38,二趟: 13 27 65 97 76 49 38 ,三趟: 13 27 38 97 76 49 65 ,四趟: 13 27 38 49

15、 76 97 65 ,五趟: 13 27 38 49 65 97 76 ,六趟: 13 27 38 49 65 76 97 ,,,,選擇排序圖示效果,#include void main( ) int a11, i, j, k, x; printf (Input 10 numbers: n); for (i = 1; i < 11; i++) scanf (%d, ,【例4】 用數(shù)組求Fibonacci數(shù)列 前20個數(shù),#include void main( ) int i; int f20 = 1, 1; for (i = 2; i < 20;

16、 i++) fi = fi-2 + fi-1; for (i = 0; i < 20; i++) if (i % 5 == 0) printf (n); printf (%12d, fi); ,4、一維數(shù)組應(yīng)用舉例,1、 二維數(shù)組的定義 定義方式: 數(shù)據(jù)類型數(shù)組名常量表達(dá)式1常量表達(dá)式2;,數(shù)組元素的存放順序 原因:內(nèi)存是一維的 二維數(shù)組:按行序優(yōu)先 多維數(shù)組:最右下標(biāo)變化最快,,例 int a34; float b25; int c234; int a3,4; (),行數(shù),列數(shù),元素個數(shù)=行數(shù)*列數(shù),,6.2 2維數(shù)組的定義和引用,二維數(shù)組理解,二維數(shù)組a是由

17、3個元素組成,每個元素ai由包含4個元素 的一維數(shù)組組成,2、二維數(shù)組元素的引用 形式: 數(shù)組名下標(biāo)1下標(biāo)2 3、二維數(shù)組元素的初始化 分行初始化:,存儲類型符 數(shù)據(jù)類型 數(shù)組變量名行常量表達(dá)式列常量表達(dá)式 第0行初值表,第1行初值表,,最后1行初值表;,按元素排列順序初始化,存儲類型符 數(shù)據(jù)類型 數(shù)組變量名行常量表達(dá)式列常量表達(dá)式 初值表 ;,4、二維數(shù)組在程序中賦值,例: 通過鍵盤輸入對二維數(shù)組a各元素賦值 int i, j, a23; for (i = 0; i < 2; i++) for (j = 0; j < 3; j++) scanf (%d, ,5

18、、二維數(shù)組的應(yīng)用舉例,【例1】 輸入多個學(xué)生多門課程的成績,分別求每個學(xué)生的平均成績和每門課程的平均成績。,程序設(shè)計思想: 要滿足上述程序的要求,必須定義一個二維數(shù)組,用來存放學(xué)生各門課的成績。這個數(shù)組的每一行表示某個學(xué)生的各門課的成績及其平均成績,每一列表示某門課的所有學(xué)生成績及該課程的平均成績。因此,在定義這個學(xué)生成績的二維數(shù)組時行數(shù)和列數(shù)要比學(xué)生人數(shù)及課程門數(shù)多1。成績數(shù)據(jù)的輸入輸出以及每個學(xué)生的平均成績、各門課程的平均成績的計算方法比較簡單。,#include #define NUM_std 5 //定義符號常量學(xué)生人數(shù)為5 #define NUM_course 4 //定義符號

19、常量課程門數(shù)為4 void main ( ) int i, j; //定義成績數(shù)組,各元素初值為0 float scoreNUM_std+1NUM_course+1 = 0; for (i = 0; i < NUM_std; i++) for (j = 0; j < NUM_course; j++) printf (input the mark of %dth courseof %dth student: , j+1, i+1); scanf (%f, //輸入第i個學(xué)生的第j門課的成績 ,for (i = 0; i < NUM_std; i++) for (j =

20、 0; j < NUM_course; j++) scoreiNUM_course += scoreij; //求第i個學(xué)生的總成績 scoreNUM_stdj += scoreij; //求第j門課的總成績 scoreiNUM_course /= NUM_course; //求第i個人的平均成績 for (j = 0; j < NUM_course; j++) scoreNUM_stdj /= NUM_std; //求第j門課的平均成績,printf ( NO. C1 C2 C3 C4 AVERn); //輸出每個學(xué)生的各科成績和平均成績 for (i = 0

21、; i < NUM_std; i++) printf (STU%dt, i+1); for (j = 0; j < NUM_course+1; j++) printf (%6.1ft, scoreij); printf (n); printf (---------------------------------------); //輸出1條短劃線 printf (nAVER_C ); for (j = 0; j < NUM_course; j++) //輸出每門課程的平均成績 printf (%6.1ft, scoreNUM_stdj); printf (n); ,【例2】讀入

22、下表中值到數(shù)組,分別求各行、各列及表中所有數(shù)之和,#include void main ( ) int x54, i, j; for (i = 0; i < 4; i++) for (j = 0; j < 3; j++) scanf (%d, ,for (i = 0; i < 5; i++) for (j = 0; j < 4; j++) printf (%5dt, xij); printf (n); ,例 有一個34的矩陣,要求編程序以求出其中值最大的那個元素的值及其所在的行號和列號。 算法: 首先把第一個元素a00作為 臨時最大值max,然后把臨時最 大值ma

23、x與每一個元素aij進(jìn) 行比較,若aijmax, 把aij作為新的臨時最大值, 并記錄下其下標(biāo)i和j。 當(dāng)全部元素比較完后, max是整個矩陣全部元素的最大值。,main() int i,j,row=0,colum=0,max; static int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max = a00; for(i=0; i max ) max = aij;row = i;colum = j; printf(max=%d, row=%d, colum=%dn,max,row,colum); ,6.3 字符數(shù)組與字符串,一、定義字符數(shù)組 例、 char

24、 c10; /* 定義c為字符數(shù)組,包含10個元素 */ c0=I; c1= ; c2=a; c3=m; c4= ; c5=h; c6=a; c7=p; c8=p; c9=y; 注意: 字符型與整型可以通用,但有區(qū)別: char c10; /* 在內(nèi)存中占10字節(jié) */ int c10; /* 在內(nèi)存中占20字節(jié) */,二、字符數(shù)組的初始化 1、逐個字符賦初值 static char c10 = I, ,a,m, ,h,a,p,p,y; static char c10 = c, ,p,r,o,g,r,a,m; /* 9 */ static char c = I, ,a,m, ,h,a,p,p,

25、y; 注意: 初始化數(shù)據(jù)少于數(shù)組長度,多余元素自動為“空”(0,二進(jìn)制0)。 指定初值時,若未指定數(shù)組長度,則長度等于初值個數(shù)。 花括號中字符的個數(shù)數(shù)組長度,語法錯,以字符串常量賦初值 static char c11 = I am happy; static char c11 = I am happy; 注意: 數(shù)組長度字符串中的字符數(shù) 若數(shù)組長度字符串中的字符數(shù),則出錯 若數(shù)組長度字符串中的字符數(shù),則后加 數(shù)組長度可省略,static char c = I am happy; static char c = I, ,a,m, ,h,a,p,p,y; 這兩種初始化不等價為何? 字符數(shù)組本身不

26、要求最后是 而字符串常量一定最后是,三、引用 引用一個元素,得到一個字符。 例:c2,,四、字符數(shù)組的輸入輸出 1、用“%c”格式符逐個輸入輸出。 2、用“%s”格式符按字符串輸入輸出 注意: %c 輸出,常用于字符數(shù)組中無標(biāo)記的情況 %s輸出,用于字符數(shù)組中有標(biāo)記的情況,。,void main() char c10; int i ; for( i =0; i<10; i++ ) scanf(“%c”, */ ,scanf(“%s”, c);,,,printf(“%s”, c);,例 輸出一個鉆石圖形。 void main() static char diamond5= , ,*, ,*,

27、 ,*, *, , , ,*, ,*, ,*, , ,* ; int i, j; for(i=0;i<5;i++) for(j=0;j<5;j++) printf(%c,diamondij); printf(n); ,void main() static char diamond= “ *n**n **n **n *n”; printf(“%s”,diamond); ,案例 字符數(shù)組的整體輸入與輸出。 /*功能:將2維字符數(shù)組進(jìn)行初始化,并在屏幕上輸出*/ void main() int i; char name59= 張三山, 李四季, 王五魁, 劉六順

28、, 趙七巧; for(i=0;i<5;i++) printf(n%st,namei); /*namei代表該行數(shù)組元素的首地址*/ ,字符串的輸入,格式:gets(字符數(shù)組) //應(yīng)包含的.h文件為stdio.h 功能:從鍵盤輸入一以回車結(jié)束的字符串放入字符數(shù)組中, 并自動加0 說明:輸入串長度應(yīng)小于字符數(shù)組維數(shù),例:char str80; gets (str); 當(dāng)輸入:Ilovechina!(表示空格,表示回車)時,str中的字符串將是:I love china!,gets函數(shù),scanf函數(shù),格式:scanf(%s, 字符數(shù)組) //應(yīng)包含的.h文件為stdio.h

29、功能:從鍵盤輸入一以空格或回車結(jié)束的字符串放入字符數(shù) 組中,并自動加0 說明:輸入串長度應(yīng)小于字符數(shù)組維數(shù),例:char str80; scanf (%s, str); 當(dāng)輸入:hellochina時,str將是:hello,注意與gets的區(qū)別!,常用的字符串處理函數(shù),scanf函數(shù)的使用:,例:利用scanf函數(shù)可以連續(xù)輸入多個字符串,輸入時,字符串間用空格分隔。 char str140, str240, str40; scanf (%s%s%s, str1, str2, str3); 輸入:Ilovechina! str1:I,str2:love,str3:china

30、!。,例:使用%ns格式控制符 限制輸入的字符個數(shù)。 char str10; scanf (%9s, str); //最多可讀入9個非空格字符到str中,字符串的輸出,格式:puts(字符串地址) //應(yīng)包含的.h文件為stdio.h 功能:向顯示器輸出字符串(輸出完,換行) 說明:如果是字符數(shù)組,則必須以0結(jié)束,puts函數(shù),printf函數(shù),格式:printf(%s, 字符串地址) //應(yīng)包含的.h文件為stdio.h 功能:依次輸出字符串中的每個字符直到遇到字符0 (0不會被輸出),例: char name = John Smith; printf (The name i

31、s: %sn, name); printf (Last name is: %sn, ,輸出結(jié)果: The name is: John Smith Last name is: Smith First name is: John,3、字符及字符串操作的常用函數(shù),字符串的長度,格式:strlen(字符串地址) //應(yīng)包含的.h文件為string.h 功能:計算字符串長度 返值:返回字符串實際長度,不包括0在內(nèi),strlen函數(shù),例: char str = 0123456789; printf (%d, strlen(str)); //輸出結(jié)果為10 printf (%d, strlen(

32、 //輸出結(jié)果為5,3、字符及字符串操作的常用函數(shù),字符串的復(fù)制,格式:strcpy (字符數(shù)組1,字符串2) //應(yīng)包含的.h文件為string.h 功能:將字符串2拷貝到字符數(shù)組1中去 返值:返回字符數(shù)組1的首地址 說明:字符數(shù)組1必須足夠大 拷貝時0一同拷貝 不能使用賦值語句為一個字符數(shù)組賦值,strcpy函數(shù),例: char str120, str220; scanf (%s, str2); strcpy (str1, str2);,例: char str120, str220; str1 = Hello!; () str2 = str1; ()

33、,3、字符及字符串操作的常用函數(shù),字符串比較,格式:strcmp (字符串1, 字符串2) //應(yīng)包含的.h文件為string.h 功能:比較兩個字符串 比較規(guī)則:對兩串從左向右逐個字符比較(ASCII碼), 直到遇到不同字符或0為止 返值:返回int型整數(shù)。a. 若字符串1 字符串2, 返回正整數(shù) c. 若字符串1== 字符串2, 返回零 說明:字符串比較不能用“==”,必須用strcmp,strcmp函數(shù),例: strcmp (“abcd”, “abCD”); //將返回一正整數(shù); strcmp (“1234”, “12345”); //將返回一負(fù)整數(shù);

34、 strcmp (hello, hello); //將返回0。,例:下面的程序要求用戶輸入密碼,如果輸入正確,則進(jìn)行相應(yīng)的程序運行,否則返回。 char password20; printf (input the password: ); scanf (%15s, password); if ( strcmp(password, administrator) != 0 ) return; ,,不能寫成 if (password==administrator),3、字符及字符串操作的常用函數(shù),字符串的連接,格式:strcat (字符數(shù)組1, 字符數(shù)組2) //應(yīng)包含的.h文件

35、為string.h 功能:把字符數(shù)組2連到字符數(shù)組1后面 返值:返回字符數(shù)組1的首地址 說明:字符數(shù)組1必須足夠大 連接前,兩串均以0結(jié)束;連接后,串1的0取 消,新串最后加0,例:char str120 = 12345, str2 = 6789; strcat (str1, str2); printf (%s, str1); //將輸出123456789,將字符串中大寫字母轉(zhuǎn)換成小寫strlwr()函數(shù) (1)調(diào)用方式:strlwr(字符串) (2)函數(shù)功能:將字符串中的大寫字母轉(zhuǎn)換成小寫,其它字符(包括小寫字母和非字母字符)不轉(zhuǎn)換。 將字符串中小寫字母轉(zhuǎn)換成大寫stru

36、pr()函數(shù) (1)調(diào)用方式:strupr(字符串) (2)函數(shù)功能:將字符串中小寫字母轉(zhuǎn)換成大寫,其它字符(包括大寫字母和非字母字符)不轉(zhuǎn)換。,【例】輸入一行字符,統(tǒng)計其中單詞的個數(shù),單詞之間用空格間隔。,設(shè)計分析: 按照題義,連續(xù)的一段不含空格類字符的字符串就是單詞。將連續(xù)的若干個空格作為出現(xiàn)一次空格,那么單詞的個數(shù)可以由空格出現(xiàn)的次數(shù)(連續(xù)的若干個空格看作一次空格,一行開頭的空格不統(tǒng)計)來決定。如果當(dāng)前字符是非空格類字符,而它的前一個字符是空格,則可看作是“新單詞”開始,累計單詞個數(shù)的變量加1;如果當(dāng)前字符是非空格類字符,而前一個字符也是非空格類字符,則可看作是“舊單詞”的繼續(xù),累計單詞

37、個數(shù)的變量取值保持不變。,#include #define IN 1 #define OUT 0 void main ( ) char string80, c; int i, num=0, word = OUT; gets (string); for (i = 0; (c = stringi) != 0; i++) if (c == ) //判斷c是否為空格 word = OUT; else if (word == OUT) word = IN; num++; printf (There are %d words in the line.n,

38、 num); ,運行結(jié)果: I am a student There are 4 words in the line,2維字符數(shù)組存放字符串,例:char city 10 = BeiJing, ShangHai, TianJin, GuangZhou, WuHan ;,字符串結(jié)束標(biāo)志,多余空位補0,【例2】輸入多個城市的名字,按升序排列輸出 。,#include #include #define CITYNUM 10 void main ( ) int i, j, k, num; char cityCITYNUM20; char str80; num = 0;

39、//實際輸入的城市數(shù)初始化為0 //輸入城市名字符串(長度不能超過19) for (i = 0; i 19) //城市名字符串超過19時,重輸 i--; continue; strcpy (cityi, str); //將輸入的城市名保存到字符串?dāng)?shù)組中 num++; //實際輸入的城市數(shù)增1 ,for (i = 0; i 0) k = j; if (k != i) //將最小城市名的字符串cityk與cityi交換 strcpy (str, cityi); strcpy (cityi, cityk); strcpy (cityk, str);

40、 for (i = 0; i < num; i++) //顯示排序后的結(jié)果 printf (%s , cityi); printf (n); ,運行結(jié)果: 輸入為:beijing wuhan shanghai guangzhou tianjin beijing guangzhou shanghai tianjin wuhan,常見錯誤,int a10,i ; for(i=1;i<=10;i++) .,下標(biāo)越界,上機(jī): 教材:P168-169, 1,7,8,9 實驗:P144, 7,補充,求解幻方問題。 幻方是一種古老的數(shù)字游戲,n階幻方就是把整數(shù)1n2排成nn的方陣,使得每行中的各元素

41、之和,每列中各元素之和,以及兩條對角線上的元素之和都是同一個數(shù)S,S稱為幻方的幻和。在中世紀(jì)的歐洲,對幻方有某種神秘的概念,許多人配戴幻方以圖避邪,奇數(shù)階幻方的構(gòu)造方法很簡單,我們先來看一個三階幻方:,各數(shù)在方陣中的位置可以這樣確定: 首先把1放在最上一行正中間的方格中,然后把下一個整數(shù)放置到右上方,如果到達(dá)最上一行,下一個整數(shù)放在最后一行,就好象它在第一行的上面,如果到達(dá)最右端,則下一個整數(shù)放在最左端,就好象它在最右一列的右側(cè)。當(dāng)?shù)竭_(dá)的方格中填上數(shù)值時,下一個整數(shù)就放在剛填寫上數(shù)碼的方格的正下方,照著三階幻方,從1至9走一下,就可以明白它的構(gòu)造方法。,#include #define MA

42、X 15 void main ( ) int m, mm, i, j, k, ni, nj; int magicMAXMAX = 0; printf (Enter the number you wanted: ); scanf (%d, ,for (k = 1; k <= mm; k++) magicij = k; //求右上方方格的坐標(biāo) if (i = = 0) //最上一行 ni = m - 1; //下一個位置在最下一行 else ni = i - 1; if (j = = m - 1) //最右端 nj = 0; //下一個位置在最左端 else nj = j + 1; //判斷右上方方格是否已有數(shù) if (magicninj == 0) //右上方無值 i = ni; j = nj; else //右上方方格已填上數(shù) i++; ,for (i = 0; i < m; i++) //顯示填充的結(jié)果 for (j = 0; j < m; j++) printf (%4d, magicij); printf (n); ,

展開閱讀全文
溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲