- 相關(guān)推薦
C語(yǔ)言一堆數據教案設計
篇五:C語(yǔ)言一維數組教案

學(xué) 科:計算機科學(xué)與技術(shù)
課 程:C語(yǔ)言程序設計
課 題:一維數組
課 時(shí):2
教學(xué)目標:1、掌握一維數組的定義和引用
2、掌握一維數組的初始化方法
3、了解與一維數組有關(guān)的應用編程方法
教學(xué)重點(diǎn):一維數組的定義和引用、初始化方法
教學(xué)難點(diǎn):與一維數組有關(guān)的應用編程方法
教學(xué)方法:舉例法,引導法
教學(xué)步驟: 1、通過(guò)一個(gè)例子提出問(wèn)題來(lái)引出本節課的知識點(diǎn)
2、講授一維數組的定義和引用、初始化方法
3、示例訓練
4、進(jìn)行本節課的總結及作業(yè)布置
教 具:黑板 計算機 投影儀
教學(xué)過(guò)程:
一、導入:
提問(wèn):保存一個(gè)班50位同學(xué)的一門(mén)功課的成績(jì),并且找出最高分和最低分,應如何實(shí)現?
解題思路:定義50個(gè)變量,從鍵盤(pán)中輸入值,然后再相互比較。處理起來(lái)很復雜,是否有更簡(jiǎn)便的方法?引出本節課的知識點(diǎn)-----數組。
二、講授:
1、數組概述:
·數組:是數目固定,類(lèi)型相同的若干個(gè)變量的有序集合,用數組名標識。
序:是數組元素之間的位置關(guān)系,不是元素值的大小順序。
數組名:是用于區別其它數組及變量的。
·數組元素:集合中的變量,屬同一數據類(lèi)型,用數組名和下標確定。
下標:是數組元素在數組中的位置。
·數組的維數:數組名后所跟下標的個(gè)數。
2、一維數組的定義
一維數組是指由一個(gè)下標數組元素組成的數組。其定義形式為:
存儲類(lèi)型 數據類(lèi)型 數組名[常量表達式]
例如:static int score[50];
它表示定義了一個(gè)名為score的數組,該數組有50個(gè)元素,其存儲類(lèi)型為靜態(tài)型,數據類(lèi)型為整型。
說(shuō)明:
。1)存儲類(lèi)型為任選項,可以是auto、static、extern存儲類(lèi)型,但是沒(méi)有register型。
。2)數據類(lèi)型是用來(lái)說(shuō)明數組元素的類(lèi)型:int , char , float。
。3)數組名的命名應遵守標識符的命名規則,但是不能與其他變量同名。
。4)數組名后是用方括號[ ]括起來(lái)的常量表達式。常量表達式表示的是數組元素的個(gè)數,即數組的長(cháng)度。在上例中定義了數組score [50],第一個(gè)元素為score [0],最后一個(gè)為score [49]。
。5)常量表達式中可以包括常量和符號常量,不能包含變量,因為C語(yǔ)言規定不允許對數組的大小作動(dòng)態(tài)定義。
。6)允許在同一個(gè)類(lèi)型說(shuō)明中,說(shuō)明多個(gè)數組和多個(gè)變量,彼此間以逗號相隔。 例如:int a,b,k1[10],k2[20]; //定義了兩個(gè)一維數組、兩個(gè)整型變量
判斷下面的定義是否合法:
int b, b[5]; //不合法,數組名不能與變量名同名
#define size 10
int b[size]; //合法,size已經(jīng)在宏定義中說(shuō)明,在程序中作為符號常量
int a(6); //不合法,數組名后不能使用(),只能用[]
int n=5;
int a[n]; //不合法,不能用變量定義數組元素的個(gè)數
int a[n+2]; //不合法,不能用變量表達式定義數組元素的個(gè)數
一維數組的存儲結構:C語(yǔ)言在編譯時(shí)給數組分配一段連續的內存空間。內存字節數=數組元素個(gè)數*sizeof(元素數據類(lèi)型)
數組元素按下標遞增的次序連續存放。數組名是數組所占內存區域的首地址,即數組第一個(gè)元素存放的地址。
例 int a[5];
內存地址
占用字節數為:5*sizeof(int)=5*2=10
3、一維數組元素的引用
數組元素是組成數組的基本單元。數組元素用數組名和下標確定。下標表示了元素在數組中的順序號,C語(yǔ)言規定:數組必須先定義,后使用。一維數組的引用形式為:
數組名[下標]
其中下標可以是整型常量、整型變量或整型表達式。例如有定義:
int t,a[10],i=2;
則以下都是正確的表達式:
t=a [6];
a[0]= a[i]+a[i+1];
引用說(shuō)明:
。1)必須像使用變量那樣,先定義,再使用,如以下操作是錯誤的:
int x=a[2];
int a[10];
。2)下標的最小值為0,最大值是數組大小減1。在前例中定義了數組score [50],使用的時(shí)候不能使用 score [50], 否則產(chǎn)生數組越界。C語(yǔ)言對數組不作越界檢查,使用時(shí)要注意!
。3)在C語(yǔ)言中只能對數組元素進(jìn)行操作,不能一次對整個(gè)數組進(jìn)行操作。例如要輸出有10個(gè)元素的數組,則必須使用循環(huán)語(yǔ)句逐個(gè)輸出各下標變量:
for(i=0; i<10; i++)
printf("%d",a[i]);
而不能用一個(gè)語(yǔ)句輸出整個(gè)數組。
下面的寫(xiě)法是錯誤的:
printf("%d",a);
例:輸出5個(gè)學(xué)生的成績(jì)
#include
void main ( )
{
int i, score[5]={82,79,65,91,86};
for (i=0;i<5;i++)
printf (" %d ",score[i]);
}
4、一維數組的初始化
數組的初始化就是給數組元素賦初始值。主要有兩種方法:
1.數組定義時(shí)初始化:就是在定義數組時(shí)給數組元素賦初值。其初始化的一般格式為:
數據類(lèi)型 數組名[數組元素個(gè)數] ={值1,值2,… ,值n};
。1)對數組全部元素賦初值
例如 int a[5]={2,4,6,8,10};
其作用是在定義數組的同時(shí)將常量2、4、6、8、10分別置于數組元素a[0]、a[1]、a[2]、a[3]、a[4]中。
。2)對數組部分元素賦初值,其它數組元素自動(dòng)賦以0值
例如:
int a[4]={1,2 };執行后各元素的初值為a [0]=1,a [1]=2,a [2]=0,a [3]=0
。3)全部元素均初始化為0,可寫(xiě)成:
int a[10]={0,0,0,0,0,0,0,0,0,0};或int a[10]={0};
不能寫(xiě)成 int a[10]={0*10};
說(shuō)明:
。1)數組元素的值可以是數值型、字符常量或字符串。
。2)數組元素的初值必須依次放在一對大括號{ }內,各值之間用逗號隔開(kāi)。
。3)在進(jìn)行數組的初始化時(shí),{ }中值的個(gè)數不能超過(guò)數組元素的個(gè)數。
例如:int a[5]={1,2,3,4,5,6};是一種錯誤的數組初始化方式,所賦初值多于定
義數組的元素個(gè)數。
。4)在給數組所有元素賦初值時(shí),可以不指定數組長(cháng)度。例如:
int a[ ]={1,2,3,4,5};則系統會(huì )自動(dòng)定義數組a的長(cháng)度為5。
在定義時(shí)賦初值是一種簡(jiǎn)單而行之有效的方法,它適用于長(cháng)度較小的數組或對長(cháng)度較大的數組部分元素賦值,而且可對每個(gè)數組元素賦不同的值。
2.在程序中初始化:主要使用循環(huán)語(yǔ)句進(jìn)行逐一賦值
例如:int i,score[50];
for (i=0;i<50;i++)
score [i]=0;
這種方法是在編程中普遍使用的一種方法,它適用于對某數組元素進(jìn)行有規律的賦值或接受用戶(hù)通過(guò)鍵盤(pán)輸入對數組元素的賦值。
三、舉例:
1.以引例為例,從鍵盤(pán)輸入10個(gè)學(xué)生一門(mén)課的成績(jì),找出最高分和最低分并輸出。 步驟:
(1) 輸入: 用for循環(huán)輸入10個(gè)學(xué)生的成績(jì)
(2) 處理:
(a) 先令max=min=score[0]
(b) 依次用score [i]和max,min比較(循環(huán))
若max< score [i],令max= score [i]
若min> score [i],令min= score [i]
(3) 輸出: max和min
程序如下:
#include
void main()
{
int i;
float score [10],max,min;
printf("Enter 10 score s: ");
for(i=0;i<10;i++) //輸入10個(gè)浮點(diǎn)型的學(xué)生的成績(jì)
scanf("%f",& score [i]);
max=min= score [0];
for(i=1;i<10;i++) //循環(huán)比較,找出最高分和最低分
{
if(max< score [i]) max= score [i];
if(min> score [i]) min= score [i];
}
printf("Max score is %f ",max); //輸出最高分
printf("Min score is %f ",min); //輸出最低分
}
2.以引例為例,從鍵盤(pán)輸入10個(gè)學(xué)生一門(mén)課的成績(jì),用冒泡法從低到高排序并輸出。 分析:冒泡排序法的基本思想是將相鄰兩個(gè)數進(jìn)行比較,將小的調到前面。
排序過(guò)程:
。1)比較第一個(gè)數與第二個(gè)數,若為逆序score [0]> score [1],則交換;然后比較score
[1]與score [2]比較;依次類(lèi)推,直至score [8]與score [9]比較為止——第一趟冒泡排序,結果最大的數被安置在最后一個(gè)元素score [9]位置上,此次共比較9次。
。2)對前9個(gè)數進(jìn)行第二趟冒泡排序,結果使次大的數被安置在倒數第二個(gè)元素score
[8]位置,此次共比較8次。
。3)重復上述過(guò)程,共經(jīng)過(guò)9趟冒泡排序后,排序結束
程序如下:
#include
void main()
{
int i,j;
float score [10], t,max,min;
printf("Enter 10 scores: ");
for(i=0;i<10;i++) //輸入10個(gè)浮點(diǎn)型學(xué)生的成績(jì)
scanf("%f",& score [i]);
printf(" ");
for(i=1;i<10;i++) //趟數,共9趟
{
for(j=0;j<10-i;j++) //實(shí)現一次冒泡操作
if(score [j]> score [j+1]) //交換score [j]和 score [j+1]
{
t= score [j]; score [j]=score [j+1]; score [j+1]= t;
}
}
for(i=0;i<10;i++) //輸出排好序的成績(jì)
printf(" %f ", score [i]);
printf(" ");}
【C語(yǔ)言一堆數據教案設計】相關(guān)文章:
C語(yǔ)言實(shí)型數據07-02
C語(yǔ)言字符型數據04-01
C語(yǔ)言整型數據分析03-30
C語(yǔ)言從鍵盤(pán)輸入數據03-16
C語(yǔ)言字符數據的合法形式05-29
C語(yǔ)言數據類(lèi)型轉換02-28
C語(yǔ)言的數據類(lèi)型介紹07-16
C語(yǔ)言數據的輸入輸出復習08-11