




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第四章數(shù)問題:下面的數(shù)據(jù)該怎么存放與處理1123.的癥yyyynnnnynny數(shù)組:用于連續(xù)存放一組數(shù)據(jù)類型相同的元引例
問題:當輸入下【例4.1】求N個學生的平均成績,并統(tǒng)計高于平均分的人數(shù)。intk=0;floats,ave,sum=0;for(inti=0;i<100;i++){cin>>s;sum=sum+s;}{cin>>s;if(s>ave)k++;}
用數(shù)組來實現(xiàn)intk=0;float{sum=sum+s[i];}數(shù)組:一組數(shù)據(jù)類型相同的元素按一定順序存放,構(gòu)成的數(shù)一維數(shù)一維數(shù)組的定義、和初始定義形數(shù)據(jù)類型數(shù)組名[整型常量表達式如:int下標從0開數(shù)組名是常量,表示數(shù)組在內(nèi)存中的首地正確constints=10;inta[s];float錯誤ints=10; float正確constints=10;inta[s];float錯誤ints=10; float花括數(shù)組的初花括給所有元素賦初值如:inta[5]={0,2,4,6,8};或inta[給部分元素賦初值。如int花括號內(nèi)列出的值賦給了前面的若干個元素,其余元素系統(tǒng)自動賦0錯錯誤int//數(shù)組名是個地址常量,不能被賦inta[10];//a[10]不是數(shù)組中的元素,不能用花括號為一個元素賦多個intc[3]={1,2, //常量個數(shù)超過數(shù)組定義的長度數(shù)組元素的和基本操數(shù)組元素的形式:數(shù)組名[下標相當于一個普通:int則 //數(shù)組下標越 //對數(shù)組一般不能作為一個整體進行操基本操假設有定義:inta[NN是已定義過的符號數(shù)組元素的輸for(j=0;j<N;通過隨機函數(shù)rand()產(chǎn)生0~100的Nfori=0 //rand()函數(shù)產(chǎn)生0~32767之間的整a[irand()%101//stdlib.h中含該函數(shù)說數(shù)組元素的求for(j=0;j<N;j++)求數(shù)組中的最大 //假設第一個元素值最for(j=1;j<N;求最大元素下 //imax代表最大元for(j=1;j<N;j++)
cout<<a[i]<<"";
元素的下標#include"iostream.h“#include"stdlib.h“#include"time.h“voidmain(){inta[10],ax,avg,i;
if{max=a[i];imax=
for
Rand(),srand()隨機數(shù)Rand(),srand()隨機數(shù)產(chǎn)生函數(shù),#includerand()產(chǎn)生32767以內(nèi)的數(shù),srand()次產(chǎn)生的一組數(shù)例:數(shù)據(jù)移#include"iostream.h"#include"iomanip.h"
通過循通過循環(huán)顯下面的7
右移一個元void{int
輸入并顯示1
顯示顯示1for{}
for(j=1;j<8;j++)}常常為符 ,第1個元素不用}即從a[1]開始使 數(shù)組排排序是將一組數(shù)按遞增或遞減的次序排列,如按學生的成績球賽積分等排序選擇冒泡法快速排序選擇法排基本思想從n個數(shù)的序列中選出最小的數(shù)(遞增),與第1除第個數(shù)外,其余n1個數(shù)再按(1的方法選出次小的數(shù),與第2個數(shù)交換位置;重復(1)n-1遍,最后構(gòu)成遞增序列。【例4.2】對存放在數(shù)組中的6下下012345for(i={min=if(a[j]<a[min])min=j;{temp=a[i];a[i]=a[min]=temp;}冒泡法排基本思想:冒泡排序過程演從第一個元素開始,對數(shù)組中兩兩相鄰的元素比較,將值較小的元素放面,值較大的元素放在后面,一輪比較比較完畢,最大的數(shù)存放在a[-]中;for(j=1;j<5-i;j++)if(a[j-1]>a[j]{temp=a[j-}然后對a[0]到a[N-2]的N-1個數(shù)進行同(1)的操作,次最for(j=1;j<5-i;j++)if(a[j-1]>a[j]{temp=a[j-}987439874397849874398743978437979438
思考:已有序,如何結(jié)束排序數(shù)組的定形式數(shù)據(jù)類 數(shù)組名[常量表達式1][常量表達式如float a序號01a序號012345序號=當前行號*每行列數(shù)+當前列數(shù)組的初按在內(nèi)存排列順序?qū)λ性刭x初值intint int按行給所有元素賦初值,每一行的數(shù)據(jù)放于一個花括號內(nèi)int bb230 04500staticint 對應的數(shù)組b為cc000000對應的數(shù)組c為二維數(shù)組的基本操數(shù)組的輸入、輸【例4.4】輸入兩個矩陣A、B的值,求c=A+BAA3576B 6分析:A、B矩陣相加,其實質(zhì)是將兩矩陣的對應元素相加。相加的條件是有相同的行、列數(shù)。程序
#include"iostream.h"#include"iomanip.h"voidmain(){intfor(i=0;i<2;i++)for(j=0;j<3;for(i=0;i<2;i++)for(j=0;j<3;j++)
(用二重循環(huán)fori=0;i<2; //A+B矩陣,每個對應元素相for(j=0;j<3;for(i=0;i<2; for(j=0;j<3;
(用二重循環(huán)}}求二維數(shù)組中最大(或最?。┰丶跋隆纠?】對×方陣,求最大元素及下標。與一維數(shù)組求最大值的方式相同max=a[0][0];imax=0;jmax=0;for(i=0;i<3;i++)for(j=0;j<3;if({max=a[i][j];imax=i;矩陣轉(zhuǎn)將矩陣以主對角線為軸線,將元素的行和列位置【例4.6】對3×3方陣轉(zhuǎn)123147a456b258789369for(i=0;i<3;for(j=0;j<i;{t=a[i][j];
}矩陣相【例4.7】求兩個矩陣a[M][N]和b[N][P]的乘積cB34B3456 C aikk即矩陣C的第i行第jfor(k=0;k<3;k++)s+=a[0][k]*b[k][0];程序#include#defineM#defineN#definePvoid{intintc[M][P],i,j,k,s;for(i=0;i<M;i++)for(j=0;j<P;j++) //求一個元素的for(k=0;k<N;k++)c[i][j]=}{for(j=0;j<P;j++)cout<<c[i][j]<<"}}字符ab123字符串a(chǎn)b123處理字符串的方法有
系統(tǒng)自動添加‘\0’(結(jié)束標志符字符數(shù)組、CString(string)類字符數(shù)字符數(shù)charcharabcd若干個abcd字符數(shù)abcdabcd字符數(shù)組的初始chars[10]I’,‘a(chǎn)’,‘mchars[10]I’,‘a(chǎn)’,‘m’,‘’,'fin //s串用字符串為字符數(shù)組初始charchars[10]={"Iamfine"};chars[10]="Iamfine";s是字符串,‘\0’系統(tǒng)自動添字符串數(shù)組初始對二維數(shù)組以charchara[4][8]={"COBOL","FORTRAN","PASCAL",注意:對于二維字符數(shù)組,用兩個下標表示數(shù)組中的一個字符chars[10]={“Thisisachars[10]={“Thisisachars="Iamfine";chars[10];s={‘I’,‘’,‘a(chǎn)’,‘m’,‘’,'f','i','n',字符數(shù)組的輸入/輸逐個數(shù)組元素的輸入/輸字符串整體的輸入/輸char輸入 輸出 ?cout<< ?for(inti=0;i<2;i++) ?for(i=0;i<2;i+) s1、s2中是字符串,'\0'自動添注意使用cin>>s1;
函數(shù)gets()和puts()是對字符串整體輸入/輸出“stdio.h”gets(字符puts(字符【例4.8】字符串的輸入/輸#include"stdio.h"#include"iostream.h"voidmain(){ charc[5]={'C','h','i','n',charb[]=fori=0;i<5; //不能用puts(c);也不能用cout<< fori0;b[i]\0'; //正確的,但是壞的,不主張用這種方cout<<}#include"stdio.h"#include"iostream.h"voidmain()#include"stdio.h"#include"iostream.h"voidmain(){chars[80],ch;inti,j;{for(i=0;s[i]!='\0';i++)}}
行字符串處理函使用下面函數(shù)時,應加#include“string.h”功能:求str所指向的字符串的長度。不包括字符串結(jié)束標志'\0'說明:str可為字符串常量、字符數(shù)組名或功能:將字符串中的小寫字母轉(zhuǎn)換成大寫字母說明:str為字符字符串常量、數(shù)組名或字符指針功能:將str2所指的字符串到str1中說明:str1和str2為字符數(shù)組名或字符指針,str2還可以是字符串常量str1={str1要有足夠大的str1={設:charstr2[10]功能:將str2字符串內(nèi)容連接到str1字符串chars1[20]=cout<<strcat(s1 //s1中的內(nèi)容變?yōu)楣δ埽罕容^字符串str1和str2的大說明:從左至右逐個字符進行比較SI碼值,直到出現(xiàn)不相同字符或遇到'\0為止。 小于 返回- 等于 返回 大于 返回
結(jié)果為:-【例4.9】字符串處理函數(shù)示#include"stdio.h"#include"string.h"voidmain(){chars[80];{if(strcmp(s,“pass”//比較兩字符puts("Invalidpassword.\n");}}指針回intx=4;int*pp=&xp就是一個指針,存放x的地址p指向x,*p的值為4,*p就是x出現(xiàn)x的地方可以用*p代替,出現(xiàn)*p的地方可以用x2指針運假定有定義:int*p指針的值為NULL(0)表示不指向任何對p指向變量a例,假設有定intfloat則以下形式不允()()p+n(或p-p+n:指向后面的第n個元素p-n:指向前面的第n個元p+n的值為:p的值+n*sizeof(p指向的類型定義int假設a的地址為1000,則p的值為p+3自增(++)和自減(--p+pp自增或自減后p指向前一個或后一個元p指針相int*p1,4.4.1指針和一維數(shù)設有定義int下面介紹數(shù)組元素的三種方式下標方形式 數(shù)組名[下標地址方形式 *(地址指針方形式:*指針變量
假設有定floata[10],*p=則如下的等價關系成立p<=>a<=>p+i<=>*(p+i)<=>*(a+i)<=>指針可以作數(shù)組名即設有p=for(i=0;i<10;cinp=forp=for(i=0;i<10;
p=forp=for(i=0;i<10;i++,p++)p=for(i=0;i<10;第三種方法與其它二種區(qū)別何在分析下列程序#include#include<iostream.h>voidmain(){ a[10],i,*p;p=a;for(i=0;i<10;i++)for(i=0;i<10;i++,p++)}思考:數(shù)組元素//輸//輸出//輸出①p與a的區(qū)p是地址變量,而ap、p、a++、②*p+(*p)++區(qū)*p++(*p)++的++運算符作用于指針變量所指對象設有定義:int//輸出//輸出使用指針數(shù)組元素:判斷數(shù)組a與數(shù)組b中所有元素是否#includevoid#includevoid{inta[10],b[10],i;{}while(i<10&&if(i==10)cout<<*(a+i)-}void{}while(i<10&&if(i==10)cout<<*(p1+i)-}4.4.3指針和字符可通過字符指針 字符數(shù)組,二者的區(qū)別字符數(shù)字符指定charcharcharcharchar賦//指向字符串常量的首地p=newchar[6]或//應使字符指針有確鍵盤進行輸入操cin>>p;或運字符數(shù)組名s不能p是指針變量,可以進行自【例4.1】輸入一串字符在字符數(shù)組中,用指針方式逐一顯示字符,并求其長度。#include"iostream.h"#include"stdio.h"voidmain(){chars[80],*p; cout<<*p //指針下移,直到p指向字符串結(jié)束cout<<"\n字符串長度p-}字符數(shù)組與字符指針的比較輸入一字符串,將大寫字母轉(zhuǎn)換為小寫字母并顯#includeiostream.h>#include"stdio.h"voidmain(){charinti=0;{}}
#includestdio.h"voidmain(){chars[80],*p=s;{}}for(k=0;k<9;k++)if(x<a[k])for(k=0;k<9;k++)if(x<a[k])找的位置下標為for(i=8;i>=k;ia[i1] //從最后元素開始往后移,騰出位a[k]=數(shù)基本思想首先要查找待數(shù)據(jù)在數(shù)組中的位置然后從最后一個元素開始往前直到下標為k一個位置x3)第k個元素的位置空出,將欲的數(shù)據(jù)x7【例4.17】在有序數(shù)組a中數(shù)值刪除數(shù)刪除操作首先也是要找到欲刪除的元素的位置k;然后從k+1n個位置開始向前移動;最后將數(shù)組元素減111【例4.18二分法查分析:二分法查設a[low]和a[high]是有序數(shù)組中最小和最大元素,待查找的數(shù)為x算法描述如下①開始假設待查區(qū)間的下界low為0,上界high為N-1待查區(qū)間中間元素的下標mid(low+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二年級數(shù)學計算題專項練習1000題匯編
- 一年級數(shù)學計算題專項練習匯編
- 賣家免責合同范例
- 勘察設計類合同范本
- 幼兒園學期教研工作總結(jié)五篇
- 中藥原料采購合同范例
- 兄弟之間合伙合同范本
- 印染行業(yè)采購合同范例
- 推拿個人工作總結(jié)推拿師個人工作總結(jié)
- 公文寫作關于總結(jié)部分的小標題50例
- 2024-2030年中國馬鈴薯全粉行業(yè)市場深度調(diào)研及發(fā)展前景與投資研究報告
- 2024安全員知識考試題(全優(yōu))
- 高考招生咨詢服務合同
- 玻璃加工工藝流程單選題100道及答案解析
- RTCADO-311A-2017原版完整文件
- DB11T 213-2014 城鎮(zhèn)綠地養(yǎng)護管理規(guī)范
- 2022電力監(jiān)控系統(tǒng)網(wǎng)絡安全監(jiān)測裝置說明書
- 2024年國家林業(yè)和草原局直屬事業(yè)單位招聘應屆畢業(yè)生231人歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 健合集團在線測評原題
- 《 大堰河-我的保姆》說課課件 2023-2024學年統(tǒng)編版高中語文選擇性必修下冊
- 義務教育版(2024)五年級 信息科技 《第3課 游戲體驗尋規(guī)律》教學設計
評論
0/150
提交評論