一維數(shù)組的應(yīng)用_第1頁
一維數(shù)組的應(yīng)用_第2頁
一維數(shù)組的應(yīng)用_第3頁
一維數(shù)組的應(yīng)用_第4頁
一維數(shù)組的應(yīng)用_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、CONTENTS 目 錄提出問題 引入新課自主學(xué)習(xí) 明確考點(diǎn)案例分析 交流提升仿真演練 體驗(yàn)探索提出問題 引入新課PART 011、對(duì)數(shù)組的操作其實(shí)是建立 在對(duì)各個(gè)數(shù)組元素操作的基礎(chǔ)上,每個(gè)數(shù)組元素實(shí)際是形式上較為特殊的單個(gè)變量,擁有統(tǒng)一的名稱和按規(guī)律變化的下標(biāo)號(hào)。數(shù)組實(shí)質(zhì)是一個(gè)有序的集合體,是把一批數(shù)據(jù)組織在一起的,它們之間存在邏輯上的聯(lián)系,因此在對(duì)數(shù)組元素進(jìn)行處理時(shí),要利用 其名稱變化及取值的規(guī)律,與循環(huán)語句結(jié)合,實(shí)現(xiàn)對(duì)數(shù)組元素的連續(xù)、有規(guī)律的操作。2、C語言在程序設(shè)計(jì)中,引用數(shù)組的前提條件是具有相同數(shù)據(jù)類型的元素。思考提出問題 引入新課自主學(xué)習(xí) 明確考點(diǎn)PART 02#include s

2、tdio.hvoid main()int i,a10; int b6=0,0,0,0,0,0; printf(enter the score:n); for (i=0; i10; i+) scanf(“%d”, &ai); switch (ai/10) case 6:b0+; break; case 7:b1+; break;程序代碼如下:將10個(gè)人員的考試成績進(jìn)行分段統(tǒng)計(jì),考試成績放在a數(shù)組中,各分?jǐn)?shù)段的人數(shù)存到b數(shù)組中:成績?yōu)?0到69的人數(shù)存到b0中,成績?yōu)?0到79的人數(shù)存到b1,成績?yōu)?0到89的人數(shù)存到b2,成績?yōu)?0到99的人數(shù)存到b3,成績?yōu)?00的人數(shù)存到b4,成績?yōu)?/p>

3、60分以下的人數(shù)存到b5中。案例一 case 8:b2+; break; case 9:b3+; break; case 10:b4+;break; default:b5+; printf(the result is: ); for (i=0; i6; i+) printf(%dt , bi); #define N 10 /* 定義符號(hào)常量N為10 */#include main ( ) int aN, k; printf(enter the oraginal number:n); for ( ) ; printf(the new order is:n); for ( ) printf (%d

4、 , );將輸入的10個(gè)數(shù)按輸入次序相反的順序輸出。程序部分語句代碼已給出如下,請(qǐng)補(bǔ)充完整程序運(yùn)行結(jié)果:enter the oraginal number:1 2 3 4 5 6 7 8 9 10 the new order is:10 9 8 7 6 5 4 3 2 1案例二1、排序的含義及作用:排序是數(shù)據(jù)處理過程中一種重要運(yùn)算,其作用是將無序的數(shù)據(jù)按從大到?。ń敌颍┗驈男〉酱螅ㄉ虻捻樞蚺帕?。2、C語言程序設(shè)計(jì)中常用的方法方法有冒泡排序法、選擇法、插入法、希爾法,這時(shí)首先介紹冒泡排序法、選擇法。案例三:數(shù)組的排序3、冒泡法排序的基本過程(按從小到大):假設(shè)有5個(gè)數(shù)問題分析:(1)先定義一個(gè)

5、空間容量為5的一維數(shù)組a,通過鍵盤輸入5個(gè)數(shù)進(jìn)行初始化。(2)將5個(gè)數(shù)按冒泡法思想進(jìn)行排序。(3)輸出排序后的結(jié)果。(1)第1輪,從頭到尾把數(shù)據(jù)中的兩個(gè)相鄰的數(shù)據(jù)進(jìn)行比較,如果前1個(gè)數(shù)a0小于第2個(gè)數(shù)a1,則交換這兩個(gè)數(shù)的位置,依次進(jìn)行一直將該序列中最小的數(shù)沉到序列的最后位置。if(ajaj+1) temp=aj; aj=aj+1; aj+1=temp; (2)第2輪,先去掉第1輪排在最后的那個(gè)數(shù)據(jù),然后將剩下的數(shù)再從頭到尾依次比較,以將數(shù)列中次小的數(shù)沉到最小數(shù)前面的位置。(3)依此類推最終將該序列排好。至此,5個(gè)原本雜亂無章的數(shù)就排序完畢。設(shè)置變量i代表比較輪數(shù),變量j代表該輪數(shù)組的下標(biāo)值,

6、則0=i5 ;0=j5-i 4、冒泡法的主要思想:案例三:數(shù)組的排序案例三:數(shù)組的排序算法介紹:將相鄰的兩個(gè)數(shù)比較將小的調(diào)到前面。以5個(gè)數(shù)為例說明排序的過程。設(shè)int a5=9,7,5,6,8;則a0 97777a1 79555a2 55966a3 66698a4 88889 第一次 第二次 第三次 第四次 結(jié)果案例三:數(shù)組的排序可以看出通過第一輪的比較和交換,最大值沉到了底部,這正是我們所希望的,所以a4 不需要再參與第二輪的比較。a0 7555a1 5766a2 6677a3 8888 第一次 第二次 第三次 結(jié)果如此通過四輪后,就可以將5個(gè)數(shù)排好序。案例三:數(shù)組的排序程序代碼如下:方式1

7、:冒泡法下面對(duì)N個(gè)數(shù)(以5個(gè)數(shù)為例)按從小到大順序進(jìn)行排列(9,7,5,6,8)#include #define N 5main() int i,j,k,temp; int aN; /*定義變量*/ for(i=0;iN;i+) scanf(%d,&ai);/*初始化數(shù)組*。 for(i=0;i=N;i+) /*排序進(jìn)行*/ for(j=0;jaj+1) temp=aj; aj=aj+1; aj+1=temp; for(i=0;iN;i+) printf(%5d,ai); /*輸出結(jié)果*/ 方法2:選擇法排序:(對(duì)10個(gè)整數(shù)排序(從大到?。┧惴ń榻B:設(shè)有10個(gè)元素a0到a9,將a0與a

8、1到a9比較,若a0比a1到a9都大則不進(jìn)行交換。a1到a9中有一個(gè)以上比a0大,則用最大的一個(gè)和a0交換,此時(shí),a0中存放了10個(gè)數(shù)中最大的。第二輪將a1與a2到a9比較,將剩下的9個(gè)數(shù)中最大的與a1對(duì)換。此時(shí)a1中存放的是10個(gè)數(shù)中次大的。依此類推,共進(jìn)行9輪比較,a0到a9就已按由小到大順序存放。案例三:數(shù)組的排序案例三:數(shù)組的排序程序如下:#include #define N 7main() int i,j,k,temp; int aN; for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN-1;i+) k=i; for(j=i+1;jaj) k=j

9、; if(i!=k) temp=ai; ai=ak; ak=temp; for(i=0;iN;i+) if(i%10=0) printf(n); printf(%5d,ai); 利用數(shù)組,求斐波拉契數(shù)列的前20項(xiàng),并按一行5個(gè)數(shù)輸出。案例四斐波拉契數(shù)列是指某個(gè)元素等于其相鄰的前兩個(gè)元素之和。具體算法請(qǐng)看書本P83頁。#include#define N 5main() int a20=1,1; int i; for(i=2;i20;i+) ai=ai-1+ai-2; for(i=0;i20;i+) if(i%5=0) printf(n); printf(%5d ,ai); 案例分析 交流提升PA

10、RT 03【例1】、分析以下程序填空以下程序可求出所有水仙花數(shù)(提示:所謂水仙花數(shù)是指一個(gè)3位正整數(shù),其各位數(shù)字的立方之和等于該正整數(shù)),請(qǐng)?zhí)羁铡?407=4*4*4+0*0*0+7*7*7,故407是一個(gè)水仙花數(shù))。#includemain()int x,y,z,a8,m,i=0;printf(”The special umbers are (in the arrange of l000):n”);for( ;m+) x=m/100; y= ; z=m%10; if(x*100+y*10+z=x*x*x+y*y*y+z*z*z) ;i+; for(x=0;xi;x+) printf(”%6d

11、”,ax);【例2】、分析以下程序的運(yùn)行后輸出結(jié)果( ) #includemain() int i,m,n,s=0; int x,a=1,2,3,4,5,6,7,8,9; m=3,n=7; for(i=m;in;i=i+2) s=s+ai; printf(%d,s); getch(); 仿真演練,體驗(yàn)探索PART 04改錯(cuò)題:使用冒泡排序法對(duì)含有10個(gè)元素的數(shù)組按從小到大的順序進(jìn)行排序輸出,在排序前后輸出數(shù)組各元素的值。程序如下#01 #include #02 main()#03 #04 int a9, i, j, t;#05 for ( i=0; i10; i+ )#06 scanf( %d

12、, &ai );#07 for ( i=0; i9; i+ )#08 for ( j=0; jaj+1 )#10 aj=t; aj+1=aj; t=aj+1; #11 for ( i=0; i10; i+ )#12 printf( %d , ai );#13 2、閱讀程序題(1)運(yùn)行以下程序后的輸出結(jié)果是( )#define N 6void main() int i, j, aN; for(i=1; i1; j-) aj+=aj-1; for(j=1; j=i; j+) printf(“%4d”, aj); printf(“n”); (2)、運(yùn)行以下程序后的輸出結(jié)果是( )#inclu

13、de #define M 4void main( ) int i, j, k, m, a4; printf(“Enter 4 numbers: “); for(i=0; i0; i-) k=M-1; for(j=M-1; j0; j-) aj=aj-1; a0=k; for(m=0; mM; m+) printf(“%d”,am); printf(“n”); 設(shè)一維數(shù)組a的4個(gè)輸入整數(shù)是1,2,3,4,則程序的輸出是什么?(3)、以下程序的功能是:判斷任意整數(shù)x是否為回文數(shù)(回文數(shù):順讀與反讀都一樣的數(shù))提示:(1)求出x的每一位數(shù),放入數(shù)組各個(gè)元素中(2)數(shù)組元素首尾比較,判斷是否為回文數(shù) (3)for( i=首下標(biāo),j=末下標(biāo); ij; i+,j-)main() long x; int i,j,n=0,d20

溫馨提示

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

評(píng)論

0/150

提交評(píng)論