![C語言程序設計 課件 6利用數(shù)組完善項目中數(shù)據(jù)的處理_第1頁](http://file4.renrendoc.com/view8/M03/1C/03/wKhkGWbjyruAHulBAADSq1xzaAE938.jpg)
![C語言程序設計 課件 6利用數(shù)組完善項目中數(shù)據(jù)的處理_第2頁](http://file4.renrendoc.com/view8/M03/1C/03/wKhkGWbjyruAHulBAADSq1xzaAE9382.jpg)
![C語言程序設計 課件 6利用數(shù)組完善項目中數(shù)據(jù)的處理_第3頁](http://file4.renrendoc.com/view8/M03/1C/03/wKhkGWbjyruAHulBAADSq1xzaAE9383.jpg)
![C語言程序設計 課件 6利用數(shù)組完善項目中數(shù)據(jù)的處理_第4頁](http://file4.renrendoc.com/view8/M03/1C/03/wKhkGWbjyruAHulBAADSq1xzaAE9384.jpg)
![C語言程序設計 課件 6利用數(shù)組完善項目中數(shù)據(jù)的處理_第5頁](http://file4.renrendoc.com/view8/M03/1C/03/wKhkGWbjyruAHulBAADSq1xzaAE9385.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
項目6利用數(shù)組完善項目中數(shù)據(jù)的處理目標TARGET知識目標掌握一維數(shù)組的定義、初始化和引用方法掌握二維數(shù)組的定義、初始化和引用方法熟悉Visual理解字符數(shù)組與字符串的區(qū)別,掌握它們的使用方法目標TARGET技能目標能夠利用一維數(shù)組知識解決批量數(shù)據(jù)問題,比如存儲、排序、插入等能夠利用二維數(shù)組處理類似行列式的問題能夠使用字符數(shù)組處理字符串多個學生一門課程成績的總成績和平均成績?nèi)蝿?.1多個學生多門課程成績的總成績和平均成績?nèi)蝿?.2使用數(shù)組處理字符串任務6.3任務6.1多個學生一門課程成績的總成績和平均成績
任務描述在學生成績管理系統(tǒng)中,已知6名同學《C語言程序設計》課程的期末成績分別為85、80、90、93、78、69,請問這6名同學《C語言程序設計》課程的總成績是多少分,平均成績是多少分?請編制一個程序。傳統(tǒng)方案為:1)定義6個float變量。2)統(tǒng)計求和,并求出平均值。從算法分析中,我們可以看到傳統(tǒng)的方案,當人數(shù)變多,定義的變量個數(shù)也隨之變多,使用不靈活,累加的變量個數(shù)丟失時容易出現(xiàn)誤差。為了滿足大數(shù)量數(shù)據(jù)的計算需求,在C語言程序設計中提出了數(shù)組的概念。任務分析傳統(tǒng)方案為:1)定義6個float變量。2)統(tǒng)計求和,并求出平均值。從算法分析中,我們可以看到傳統(tǒng)的方案,當人數(shù)變多,定義的變量個數(shù)也隨之變多,使用不靈活,累加的變量個數(shù)丟失時容易出現(xiàn)誤差。為了滿足大數(shù)量數(shù)據(jù)的計算需求,在C語言程序設計中提出了數(shù)組的概念。1一維數(shù)組的定義及其應用Part◎一維數(shù)組的引用◎一維數(shù)組的初始化◎一維數(shù)組的應用◎一維數(shù)組的定義6.1.1一維數(shù)組的定義
類型說明符表示數(shù)組中所有元素的數(shù)據(jù)類型;數(shù)組名就是這個數(shù)組型變量的名稱;常量表達式指一維數(shù)組中元素的個數(shù),即數(shù)組長度。數(shù)組:在程序設計中,一組具有相同數(shù)據(jù)類型的變量集合稱為數(shù)組。一維數(shù)組:是只有一個下標的數(shù)組,它用來表示一組具有相同類型的數(shù)據(jù)。在C語言中,一維數(shù)組的定義方式如下所示:類型說明符數(shù)組名[常量表達式];6.1.2一維數(shù)組的引用
數(shù)組定義后,就可以引用數(shù)組中的任意一個元素了,引用形式如下:<數(shù)組名>[<下標表達式>];其中,
“下標表達式”表示數(shù)組中的某一個元素的順序序號,
序號范圍是“0-[數(shù)組長度-1]”。6.1.3一維數(shù)組的初始化
完成數(shù)組的定義后,只是對數(shù)組中的元素開辟了一塊內(nèi)存空間。這時,如果想使用數(shù)組操作數(shù)據(jù),還需要對數(shù)組進行初始化。一維數(shù)組初始化的一般格式如下:<類型說明符><數(shù)組名>[常量表達式]={初值表};一維數(shù)組初始化的常見的方式有三種,具體如下:1)直接對數(shù)組中的所有元素賦值,例如:inti[6]={1,2,3,4,5,6};2)只對數(shù)組中的一部分元素賦值,例如:inti[6]={1,2,3};3)對數(shù)組全部元素賦值但不指定長度,例如:inti[]={1,2,3,4}。6.1.4一維數(shù)組的應用
例6-1案例:
在學生成績管理系統(tǒng)中,已知6名同學《C語言程序設計》課程的期末成績分別為85、80、90、93、78、69,請問這6名同學《C語言程序設計》課程的總成績是多少分,平均成績是多少分?請編制一個程序。6.1.4一維數(shù)組的應用
例6-1算法:1.定義一維數(shù)組result[6]、求和變量sum、求平均值變量ave、變量i。2.循環(huán)輸入6名同學《C語言程序設計》的期末成績。3.循環(huán)輸出6名同學《C語言程序設計》的期末成績,觀察成績在數(shù)組中的存儲。4.求總成績,存入變量sum中,并輸出變量sum的值。5.求平均成績,存入變量ave中,并輸出變量ave的值。6.1.4一維數(shù)組的應用
例6-1流程圖:6.1.4一維數(shù)組的應用
例6-1程序代碼:#include"stdio.h"voidmain(){//定義一個數(shù)組floatresult[6],sum=0.0,ave=0.0;inti;printf("請輸入已知的6名同學《C語言程序設計》課程的期末成績:\n");for(i=0;i<6;i++){ scanf("%f",&result[i]); }//輸出,并觀察6名同學的成績在以上數(shù)組中的存儲printf("\n================\n");printf("\n分別輸出6名同學的成績:\n");for(i=0;i<6;i++){ printf("result[%d]=%.2f\n",i,result[i]); }//求總成績printf("\n================\n");for(i=0;i<6;i++){ sum=sum+result[i]; }printf("6名同學的總成績?yōu)椋簊um=%.2f\n",sum);//求平均成績printf("\n================\n");ave=sum/6;printf("6名同學的平均成績?yōu)椋篴ve=%.2f\n",ave);}6.1.4一維數(shù)組的應用
例6-1程序執(zhí)行結果:說明:(1)%.2f用在格式控制輸入輸出中,表示保留兩位小數(shù)。(2)字符數(shù)組的輸入輸出都是通過循環(huán)實現(xiàn)的。注意:(1)數(shù)組的下標是用方括號括起來,不是圓括號,數(shù)組的下標是從0開始的,不是從1開始。(2)數(shù)組的命名同變量的命名規(guī)則相同。任務6.2多個學生多門課程成績的總成績和平均成績
任務描述一個學習小組有4個人,每個人有相同三門課程的考試成績。求組內(nèi)每個人的總成績、全組各科的總成績和各科的平均成績。請編制一個程序。傳統(tǒng)方案為:1)定義6個float變量。2)統(tǒng)計求和,并求出平均值。從算法分析中,我們可以看到傳統(tǒng)的方案,當人數(shù)變多,定義的變量個數(shù)也隨之變多,使用不靈活,累加的變量個數(shù)丟失時容易出現(xiàn)誤差。為了滿足大數(shù)量數(shù)據(jù)的計算需求,在C語言程序設計中提出了數(shù)組的概念。任務分析1)定義一個四行三列的數(shù)組,每一行用于存放一名學生的三科成績。2)通過遍歷數(shù)組中的每一個元素,求組內(nèi)每個人的總成績、全組各科的總成績和各科的平均成績。2二維數(shù)組的定義及其應用Part◎二維數(shù)組的引用◎二維數(shù)組的初始化◎二維數(shù)組的應用◎二維數(shù)組的定義6.2.1二維數(shù)組的定義
其中,
“常量表達式1”表示數(shù)組的行數(shù);
“常量表達式2”表示數(shù)組的列數(shù)。例如,intb[4][5];二維數(shù)組的定義格式為:<類型說明符><數(shù)組名>[<常量表達式1>][<常量表達式2>];6.2.2二維數(shù)組的引用
1、二維數(shù)組的引用方式同一維數(shù)組的引用方式一樣,也是通過數(shù)組名和下標的方式來引用數(shù)組元素,引用形式為:<數(shù)組名>[<行下標>][<列下標>]2、二維數(shù)組中元素的存儲和排列順序:整體按行從上到下存儲,行內(nèi)又按從左到右存放,因此二維數(shù)組元素的個數(shù)等于行數(shù)與列數(shù)的乘積。3、二維數(shù)組的行下標和列下標都是從0開始編號。例如:intb[4][5];定義名為b的整型二維數(shù)組,數(shù)組分為4行5列,共20個元素,元素的排列順序為:
b[0][0]b[0][1]b[0][2]b[0][3]b[0][4]b[1][0]b[1][1]b[1][2]b[1][3]b[1][4]b[2][0]b[2][1]b[2][2]b[2][3]b[2][4]b[3][0]b[3][1]b[3][2]b[3][3]b[3][4]6.2.3二維數(shù)組的初始化
完成二維數(shù)組的定義后,需要對二維數(shù)組進行初始化,二維數(shù)組初始化的一般格式如下:<類型說明符><數(shù)組名>[<常量表達式1>][<常量表達式2>]={初值表};初始化二維數(shù)組的方式有四種,具體如下:1)按行給二維數(shù)組賦初值
例如:inta[2][3]={{1,2,3},{4,5,6}};2)將所有的數(shù)組元素按順序?qū)懺谝粋€大括號內(nèi)
例如:inta[2][3]={1,2,3,4,5,6};3)對部分數(shù)組元素賦初值
例如:intb[3][4]={{1},{4,3},{2,1,2}};4)對全部數(shù)組元素置初值,則第一個下標可省略
例如:inta[][3]={1,2,3,4,5,6};6.2.4二維數(shù)組的應用
例6-2案例:
一個學習小組有4個人,每個人有相同三門課程的考試成績。請編制一個程序求組內(nèi)每個人的總成績、全組各科的總成績和各科的平均成績。6.2.4二維數(shù)組的應用
例6-2流程圖:6.2.4二維數(shù)組的應用
例6-2程序代碼:#include"stdio.h"voidmain(intargc){//定義一個四行三列數(shù)組存放張同學、王同學、李同學、趙同學四個人成績intStuScore[4][3]={{88,70,90},{80,80,60},{89,60,85},{70,80,80}} intm=0,n=0;intnStuTotalScore;intnMathTotalScore=0;intnChineseTotalScore=0;intnEnglishTotalScore=0;printf("個人總成績:\n");for(m=0;m<4;m++){nStuTotalScore=0;for(n=0;n<3;n++)
{nStuTotalScore+=StuScore[m][n];switch(n){case0:nMathTotalScore+=StuScore[m][0];break;case1:nChineseTotalScore+=StuScore[m][1];break;case2:nEnglishTotalScore+=StuScore[m][2];}}switch(m){case0:printf("張同學:%d\n",nStuTotalScore);break;case1:printf("王同學:%d\n",nStuTotalScore);break;case2:printf("李同學:%d\n",nStuTotalScore);break;case3:printf("趙同學:%d\n",nStuTotalScore);break;}}
printf("小組數(shù)學總分:%d 小組數(shù)學平均分:%.2f\n",nMathTotalScore,(double)nMathTotalScore/4);printf("小組語文總分:%d 小組語文平均分:%.2f\n",nChineseTotalScore,(double)nChineseTotalScore/4);printf("小組英語總分:%d 小組英語平均分:%.2f\n",nEnglishTotalScore,(double)nEnglishTotalScore/4);}6.2.4二維數(shù)組的應用
例6-2程序執(zhí)行結果:說明:(1)其中,定了StuScore[4][3]四行三列數(shù)組存放學生成績,每一行存放一名學生的三科成績。(2)通過遍歷列下標獲取每個小組不同學科的總分,通過遍歷行下標獲取每個小組成員的總分,最后將小組不同學科的總分和平均分輸出。(3)第一個switch分支case的0、1、2分別表示的是數(shù)學、語文、英語成績。第二個switch分支case的0、1、2、3分別表示的是張同學、王同學、李同學、趙同學四個人的總成績。注意:(1)數(shù)組的下標是用方括號括起來,不是圓括號,數(shù)組的下標是從0開始的,不是從1開始。(2)數(shù)組的命名同變量的命名規(guī)則相同。任務6.3使用數(shù)組處理字符串
任務描述已知兩個數(shù)組str1和str2分別存放字符串“Hello”和“Word”,編寫程序復制第1個字符串,并連接字符串1和字符串2,輸出連接后的字符串及其長度。傳統(tǒng)方案為:1)定義6個float變量。2)統(tǒng)計求和,并求出平均值。從算法分析中,我們可以看到傳統(tǒng)的方案,當人數(shù)變多,定義的變量個數(shù)也隨之變多,使用不靈活,累加的變量個數(shù)丟失時容易出現(xiàn)誤差。為了滿足大數(shù)量數(shù)據(jù)的計算需求,在C語言程序設計中提出了數(shù)組的概念。任務分析(1)定義3個字符數(shù)組str1、str2和str3,保證數(shù)組長度大于字符串的長度,將“Hello”存入數(shù)組str1中、將“Word”存入數(shù)組str2中。(2)通過字符串復制函數(shù)將“Hello”復制到數(shù)組str3中。(3)通過字符串連接函數(shù)和求字符串長度的函數(shù)分別求出連接后的字符串及其長度。3使用數(shù)組處理字符串Part◎字符串◎字符串處理函數(shù)◎字符數(shù)組的應用◎字符數(shù)組的定義、引用和初始化6.3.1字符數(shù)組的定義、引用和初始化
一、定義:字符數(shù)組就是數(shù)據(jù)元素為字符類型的數(shù)組,用來存放字符。字符數(shù)組的定義格式為:char數(shù)組名[常量表達式];6.3.1字符數(shù)組的定義、引用和初始化
二、引用:字符數(shù)組的引用和數(shù)值型數(shù)組一樣,也是使用下標的形式,形式如下:<數(shù)組名>[<下標表達式>];6.3.1字符數(shù)組的定義、引用和初始化
三、初始化:字符數(shù)組的初始化,有如下幾種方法:(1)逐個字符賦給數(shù)組中各元素,字符數(shù)組的長度也可用初值來確定。例如:charch[7]={'s','t','u','d','e','n','t'};(2)在定義字符數(shù)組時進行初始化,可以省略數(shù)組長度。例如:charstr[]={'a','b','c'};(3)利用字符串給字符數(shù)組賦初值,通常用一個字符數(shù)組來存放一個字符串。例如:charchArray[]={"Howareyou!"};
或?qū)?{}"去掉,寫成:charchArray[]="Howareyou!";6.3.2字符串
字符串實際上是使用null字符'\0'終止的一維字符數(shù)組。因此,一個以null結尾的字符串,包含了組成字符串的字符。因為字符串的本質(zhì)就是字符數(shù)組,因此可以按照數(shù)組的方式遍歷和訪問某個元素即可。6.3.2字符串
C語言庫函數(shù)提供以下兩類字符串的輸入/輸出函數(shù)。(1)格式化的字符串輸入/輸出函數(shù):scanf()/printf()。(2)非格式化的字符串輸入/輸出函數(shù):gets()/puts(),格式如下:
gets(字符數(shù)組名)
功能:讀入鍵盤輸入的字符串,并存儲在字符數(shù)組中。按回車鍵結束輸入,系統(tǒng)自動在字符串末尾添加結束標志‘\0’。puts(字符數(shù)組名)
功能:將字符數(shù)組中的字符串輸出在屏幕上。6.3.3字符串處理函數(shù)
C語言提供了一些字符串處理函數(shù),這些函數(shù)的原型在頭文件string.h中。字符串復制函數(shù)——strcpy()格式如下:
strcpy(目地字符數(shù)組名,源字符數(shù)組名);功能:把源字符數(shù)組中的字符串復制到目地字符數(shù)組中,串結束符'\0'也一同復制。例如:charstr1[12]="Hello",str2[12];strcpy(str2,str1);printf("strcpy(str2,str1):%s\n",str2);//"Hello"6.3.3字符串處理函數(shù)
2.求字符串長度函數(shù)——strlen()格式如下:strlen(字符數(shù)組名);功能:計算字符串的實際長度(不包括結束符'\0')。函數(shù)的返回值為字符串的實際長度。例如:charstr[80]="Iamastudent";//字符數(shù)組的長度為80printf("\n長度=%d",strlen(str));//輸出結果:長度=146.3.3字符串處理函數(shù)
3.字符串連接函數(shù)——strcat()格式如下:
strcat(目地字符數(shù)組名,源字符數(shù)組名);功能:把源字符數(shù)組中的字符串連接到目地字符數(shù)組的后面,并刪除目地字符數(shù)組中的字符串結束符'\0'。6.3.4字符數(shù)組的應用
例6-3案例:
有三個字符串,將字符串1復制到字符串3中,并輸出;然后將字符串1和字符串2連接起來,并輸出連接后的字符串及其長度。6.3.4字符數(shù)組的應用
例6-3流程圖:開始定義數(shù)組str1、str2并初始化定義字符數(shù)組str3、變量len輸出數(shù)組str3結束復制str1到str3輸出str1長度求出str1長度輸出數(shù)組str1連接str1到str26.3.4字符數(shù)組的應用
例6-3程序代碼:#include<stdio.h>#include<string.h>voidmain(){ charstr1[12]="Hello"; charstr2[12]="World"; charstr3[12]; intlen; /*復制str1到str3*/ strcpy(str3,str1);//str3內(nèi)容"Hello" printf("strcpy(str3,str1):%s\n",str3);//"Hello" /*連接str1和str2*/ strcat(str1,str2); printf("strcat(str1,str2):%s\n",str1);//"HelloWorld" /*連接后,str1的總長度*/ len=strlen(str1);// printf("strlen(str1):%d\n",len);//10 getchar();}6.3.4字符數(shù)組的應用
例6-3程序執(zhí)行結果:說明:(1)#include<string.h>是字符串頭文件,使用的字符串函數(shù)包含在其中。(2)程序中往往依靠檢測'\0'的位置來判定字符串是否結束,而不是根據(jù)數(shù)組的長度來決定字符串長度。因此,字符串長度不會統(tǒng)計'\0',字符數(shù)組長度會統(tǒng)計。注意:(1)字符數(shù)組實際上是一系列字符的集合,也就是字符串(String)。在C語言中,沒有專門的字符串變量,沒有string類型,通常就用一個字符數(shù)組來存放一個字符串。(2)在定義字符數(shù)組時應估計實際字符串長度,保證數(shù)組長度始終大于字符串實際長度,否則,在輸出字符數(shù)組時可能出現(xiàn)未知字符。(3)定義字符數(shù)組時,如果給的字符個數(shù)比數(shù)組的長度小,則系統(tǒng)會默認將剩余的元素空間,全部設置為‘\0’,比如charstr[6]=“ab”,str內(nèi)存布局就是[a][b][\0][\0][\0][\0]。拓展案例
例6-4案例:
在學生成績管理系統(tǒng)中,經(jīng)常會將學生的考試成績保持在一個數(shù)組中,然后對成績按從大到小的順序排列。編寫一個程序,使用冒泡排序法將學生成績按照降序排列。拓展案例
例6-4流程圖:開始定義數(shù)組array[COUNT]定義變量i,j,tempj>i循環(huán)輸入學生考試成績結束i=0i<COUNT-1輸入數(shù)組元素arr[i]i++YNNY循環(huán)輸出學生考試成績j=COUNT-1j--交換array[j]和array[j-1]
array[j]>array[j-1]YN宏定義COUNT為10拓展案例
例6-4程序代碼:#include<stdio.h>#defineCOUNT10voidmain(){ intarray[COUNT]; inti,j,temp; printf("請輸入學生的考試成績:"); for(i=0;i<COUNT;i++) { scanf("%d",&array[i]); } printf("學生的考試成績是:"); for(i=0;i<COUNT;i++) { printf("%d",array[i]); } printf("\n"); for(i=0;i<COUNT-1;i++) { for(j=COUNT-1;j>i;j--) { if(array[j]>array[j-1]) { temp=array[j]; array[j]=array[j-1]; array[j-1]=temp; } } } printf("排序后的考試成績是:"); for(i=0;i<COUNT;i++) { printf("%d",array[i]); } printf("\n");}拓展案例
例6-4程序執(zhí)行結果:說明:(1)冒泡排序的基本思想是:【以降序排序為例】依次從后向前(從下標較大的元素開始)比較待排序相鄰元素的值,若發(fā)現(xiàn)后面元素的值大于前面元素的值則交換,使值較大的元素逐漸從后向前移動,就像水底的氣泡一樣逐濺向上冒。(2)排序過程:①比較最后一個元素值與倒數(shù)第二個元素值,若a[9]>a[9-1],則交換;然后比較倒數(shù)第二個元素值與倒數(shù)第三個元素值;依次類推,直至第1個元素值和第2個元素值比較為完為止——第一趟冒泡排序,結果最大的數(shù)被安置在第一個元素位置上,如圖6-5所示,為10個數(shù)的第一趟冒泡過程。②對后n-1個數(shù)進行第二趟冒泡排序,結果使次大的數(shù)被安置在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年碳鋼長接桿項目投資可行性研究分析報告
- 2025年軟磁鐵氧體用氧化鎂項目可行性研究報告
- 道路基礎建設工程EPC總承包模式實施方案
- 中國機械療法器具行業(yè)發(fā)展運行現(xiàn)狀及投資潛力預測報告
- 停車用地合同范本
- 代建工程合同范例
- 2025年度房地產(chǎn)開發(fā)合同終止及購房退款協(xié)議
- 農(nóng)村壘墻養(yǎng)殖合同范本
- 剪輯崗位合同范例
- 買賣火車罐合同范例
- 必修3《政治與法治》 選擇題專練50題 含解析-備戰(zhàn)2025年高考政治考試易錯題(新高考專用)
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- 外貿(mào)業(yè)務員面試試卷
- 紀檢知識答題測試題及答案
- 人教版八年級人文地理下冊知識點整理(2021版)
- 道教系統(tǒng)諸神仙位寶誥全譜
- 中國經(jīng)濟轉型導論-政府與市場的關系課件
- 統(tǒng)計過程控制SPC培訓資料
- 食品經(jīng)營操作流程圖
- 新視野大學英語讀寫教程 第三版 Book 2 unit 8 教案 講稿
- 村務公開表格
評論
0/150
提交評論