第6章-數(shù)組及期應(yīng)用-11學(xué)時(shí)_第1頁(yè)
第6章-數(shù)組及期應(yīng)用-11學(xué)時(shí)_第2頁(yè)
第6章-數(shù)組及期應(yīng)用-11學(xué)時(shí)_第3頁(yè)
第6章-數(shù)組及期應(yīng)用-11學(xué)時(shí)_第4頁(yè)
第6章-數(shù)組及期應(yīng)用-11學(xué)時(shí)_第5頁(yè)
已閱讀5頁(yè),還剩276頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

高級(jí)語言程序設(shè)計(jì)揭安全jieanquan@163.com江西師范大學(xué)計(jì)算機(jī)信息工程學(xué)院高級(jí)語言程序設(shè)計(jì)——基于計(jì)算思維能力培養(yǎng)高級(jí)語言程序設(shè)計(jì)——基于計(jì)算思維能力培養(yǎng)第6章數(shù)組及其應(yīng)用揭安全jieanquan@163.com江西師范大學(xué)計(jì)算機(jī)信息工程學(xué)院主要內(nèi)容一維數(shù)組向函數(shù)傳遞一維數(shù)組基于數(shù)組的常用算法一維數(shù)組的應(yīng)用二維數(shù)組主要內(nèi)容字符串字符數(shù)組的初始化字符數(shù)組的輸入/輸出字符串處理函數(shù)字符串應(yīng)用舉例本章思維導(dǎo)圖問題的提出計(jì)算機(jī)是如何存儲(chǔ)批量數(shù)據(jù),并對(duì)它們進(jìn)行處理的?數(shù)組具有相同數(shù)據(jù)類型的集合,特別適合存儲(chǔ)和處理批量數(shù)據(jù)。一維數(shù)組6.16.1.1一維數(shù)組的定義與引用一維數(shù)組的定義:數(shù)據(jù)類型

數(shù)組名[數(shù)組大小];可為基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型與變量命名

規(guī)則相同必須為整型常量

表達(dá)式例如:inta[5];

定義了5個(gè)int型變量,分別用a[0]..a[4]表示,它們?cè)趦?nèi)存占用連續(xù)的內(nèi)存單元。實(shí)際編程時(shí)通常定義常量來表示數(shù)組的大小,例如:#defineN100inta[N];數(shù)組一旦定義,在程序執(zhí)行期間其位置和大小不能再發(fā)生變化。編程時(shí)應(yīng)根據(jù)需要處理的數(shù)據(jù)規(guī)模來定義合適的數(shù)組大小。

例如,一個(gè)年級(jí)共有5個(gè)班級(jí),每個(gè)班級(jí)的人數(shù)為30~60人不等,如果需要分別對(duì)每個(gè)班級(jí)學(xué)生的成績(jī)排序,則程序中定義存儲(chǔ)分?jǐn)?shù)的數(shù)組大小應(yīng)按班級(jí)的最大人數(shù)來確定。一維數(shù)組的引用:C語言采用“數(shù)組名[下標(biāo)]”的方式來引用每個(gè)數(shù)組元素,對(duì)長(zhǎng)度為N的數(shù)組元素,其下標(biāo)范圍是從0至N-1。C語言的數(shù)組名記錄了數(shù)組在內(nèi)存中的起始地址,因此數(shù)組名為一個(gè)常量,即a==&a[0]。

&a[i]可等價(jià)地表示為a+i,操作系統(tǒng)是通過計(jì)算a+i得到a[i]的地址來訪問a[i]的。一維數(shù)組的引用:

下標(biāo)可以是常量或變量或整型表達(dá)式,但要保證在有效的數(shù)組下標(biāo)范圍內(nèi)。例如:#defineN10inta[N],i=0;a[2+3]=6; //將a[5]賦值為6a[i++]=10; //將a[0]賦值為10后,i自增1(1)將數(shù)組的每個(gè)元素清0的代碼為:for(i=0;i<N;i++)

a[i]=0;(2)從鍵盤輸入每個(gè)數(shù)組元素值的代碼為:for(i=0;i<N;i++)

scanf("%d",&a[i]) //或?qū)懗蓅canf("%d",a+i);(3)求數(shù)組的所有元素之和的代碼為:sum=0;for(i=0;i<N;i++) sum=sum+a[i];(4)從后向前依次輸出數(shù)組元素的代碼為:for(i=N-1;i>=0;i--) printf("%5d",a[i]); 【例6.1】編寫程序,輸入10個(gè)學(xué)生的考試分?jǐn)?shù),求學(xué)生的平均分和超過平均分的學(xué)生人數(shù)?!痉治觥靠梢远x大小為10的數(shù)組來存放學(xué)生的分?jǐn)?shù),計(jì)算學(xué)生的平均分,再通過循環(huán)統(tǒng)計(jì)成績(jī)超過平均分的學(xué)生人數(shù)。#include<stdio.h>#defineN10intmain(){doublea[N],sum=0,ave;inti,counter=0;printf("請(qǐng)輸入%d個(gè)學(xué)生分?jǐn)?shù):\n",N);

for(i=0;i<N;i++) //輸入分?jǐn)?shù)scanf("%lf",&a[i]);for(i=0;i<N;i++) //求和 sum+=a[i];

ave=sum/N; //求平均分printf("平均分為:%.2f\n",ave);for(i=0;i<N;i++) //統(tǒng)計(jì)超過平均分的學(xué)生人數(shù)if(a[i]>ave) counter++;printf("超過平均分的學(xué)生人數(shù)為:%d人.\n",counter);return0;}請(qǐng)輸入10個(gè)學(xué)生分?jǐn)?shù):98786790877687568845↙平均分為:77.20超過平均分的學(xué)生人數(shù)為:6人.數(shù)組下標(biāo)越界錯(cuò)inta[10],i;該地址與&a[10]相同for(i=0;i<=10;i++) a[i]=0;將使程序出現(xiàn)死循環(huán)非法訪問內(nèi)存單元錯(cuò)誤將scanf("%d",&a[i]);寫成scanf("%d",a[i]);6.1.2一維數(shù)組的初始化未指定存儲(chǔ)類型的數(shù)組默認(rèn)為auto型數(shù)組,與普通的auto變量一樣,分配給數(shù)組的內(nèi)存里的數(shù)據(jù)是不確定的??赏ㄟ^單步調(diào)試觀察數(shù)組初始值。6.1.2一維數(shù)組的初始化inta[10]={1,2,3,4,5,6,7,8,9,10};將a[0]~a[9]依次初始化為1~10。inta[10]={1,2,3,4,5}; 將a[0]~a[4]被初始化為1~5,而a[5]~a[9]均被初始化為0。6.1.2一維數(shù)組的初始化如果初始化列表超出了數(shù)組的大小,則將產(chǎn)生編譯錯(cuò)誤。例如:inta[3]={1,2,3,4};將產(chǎn)生編譯錯(cuò)誤。6.1.2一維數(shù)組的初始化如果在定義數(shù)組時(shí)進(jìn)行初始化且省略數(shù)組的長(zhǎng)度,則編譯器將根據(jù)初始化列表的元素個(gè)數(shù)自動(dòng)確定數(shù)組的長(zhǎng)度。例如:inta[]={2,4,6,8,10};此時(shí),數(shù)組a的長(zhǎng)度為5。6.1.2一維數(shù)組的初始化1.以下能定義長(zhǎng)度為10的一維數(shù)組a且能正確進(jìn)行初始化的語句是()。inta[10]=(0,0,0,0,0);inta[10]={};inta[]={0};inta[10]={10*1};ABCD提交單選題5分【例6.2】利用數(shù)組求斐波那契數(shù)列前20項(xiàng)的值。f(0)=1 n=0f(1)=1 n=1f(n)=f(n-1)+f(n-2) n≥210112345619f2358#include<stdio.h>#defineN20intmain(){longlongintfib[N]={1,1};inti;for(i=2;i<N;i++)fib[i]=fib[i-1]+fib[i-2];for(i=0;i<N;i++){if(i%10==0)printf("\n");//每行輸出10個(gè)元素printf("%8ld",fib[i]);}return0;}2.寫出下面程序的運(yùn)行結(jié)果。

[填空1]

作答#include<stdio.h>intmain(){inta[]={1,2,3,4},i,j,s=0;j=1;for(i=3;i>=0;i--){s=s+a[i]*j;j=j*10;}printf("s=%d\n",s);return0;}填空題10分主要內(nèi)容一維數(shù)組向函數(shù)傳遞一維數(shù)組基于數(shù)組的常用算法一維數(shù)組的應(yīng)用練習(xí)題向函數(shù)傳遞

一維數(shù)組6.26.2向函數(shù)傳遞一維數(shù)組1、數(shù)組元素作為函數(shù)參數(shù)與普通變量作函數(shù)參數(shù)一樣,為

單向值傳遞【例6.3】數(shù)組元素作為函數(shù)實(shí)參示例。#include<stdio.h>#defineN5voidswap(intx,inty){inttemp;temp=x; x=y;y=temp;}intmain(){inta[N]={1,2};printf("%d\t%d\n",a[0],a[1]);swap(a[0],a[1]); printf("%d\t%d\n",a[0],a[1]);return0;} 12122、數(shù)組名作為函數(shù)實(shí)參函數(shù)類型函數(shù)名(數(shù)據(jù)類型

數(shù)組名[],intn);

或函數(shù)類型函數(shù)名(數(shù)據(jù)類型數(shù)組名[長(zhǎng)度]);當(dāng)函數(shù)參數(shù)為數(shù)組時(shí),可將數(shù)組名作為函數(shù)實(shí)參。voidfun1(inta[],intn){ inti; for(i=0;i<n;i++) … }可訪問長(zhǎng)度為n的數(shù)組元素,n可由參數(shù)傳入。調(diào)用形式:fun1(b,10);voidfun2(inta[10]){ inti; for(i=0;i<10;i++) … }函數(shù)中只對(duì)數(shù)組的前10個(gè)元素進(jìn)行處理。調(diào)用形式:fun2(b);【例6.4】數(shù)組名作函數(shù)參數(shù)示例。#include<stdio.h>#defineM5#defineN10voidfun(inta[],intn){inti;for(i=0;i<n;i++)a[i]=i+1;}【例6.4】數(shù)組名作函數(shù)參數(shù)示例。intmain(){inta[M]={0},b[N]={0},i;fun(a,M);fun(b,N-2);for(i=0;i<M;i++)printf("%4d",a[i]);printf("\n");for(i=0;i<N;i++)printf("%4d",b[i]);return0;}函數(shù)調(diào)用fun(a,M);數(shù)組名代表數(shù)組首地址函數(shù)調(diào)用fun(a,M);函數(shù)調(diào)用fun(b,N-2);函數(shù)調(diào)用fun(b,N-2);3、定義數(shù)組輸入、輸出頭文件#include<stdio.h>#include<stdlib.h>#include<time.h>voidinput(inta[],intn) {inti;printf("請(qǐng)輸入%d個(gè)整數(shù)(整數(shù)間用空格分隔):\n",n);for(i=0;i<n;i++)scanf("%d",a+i);}數(shù)組輸入函數(shù)voidprint(inta[],intn){inti;printf("\n數(shù)組的內(nèi)容是:\n");for(i=0;i<n;i++){if(i%10==0)printf("\n"); printf("%6d",a[i]);}printf("\n");}數(shù)組輸出函數(shù)voidinit(inta[],intn){inti;srand(time(0));for(i=0;i<n;i++)a[i]=rand()%1000+1;//用1~1000的數(shù)賦值給數(shù)組元素}應(yīng)用隨機(jī)函數(shù)填充數(shù)組將三函數(shù)存入Array.h中。在編寫程序時(shí)可以通過#include“Array.h”指令來使用以上三個(gè)函數(shù)。#include"Array.h"#defineN10intmain(){inta[N];input(a,N);print(a,N);return0;}該程序文件應(yīng)與Array.h文件存于同一文件夾下4.若用數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,則實(shí)際上傳遞給形參的是()。數(shù)組的第一個(gè)元素值數(shù)組元素的個(gè)數(shù)數(shù)組中全部元素的值數(shù)組首地址ABCD提交單選題5分主要內(nèi)容一維數(shù)組向函數(shù)傳遞一維數(shù)組基于數(shù)組的常用算法一維數(shù)組的應(yīng)用練習(xí)題基于數(shù)組的常用算法及其應(yīng)用6.36.3基于數(shù)組的常用算法及其應(yīng)用順序查找1數(shù)據(jù)刪除2數(shù)據(jù)插入3簡(jiǎn)單選擇排序5冒泡排序6數(shù)據(jù)倒置7尋找最大值4二分查找86.3.1順序查找表的查找順序檢索序號(hào)班級(jí)名稱姓名學(xué)號(hào)022級(jí)網(wǎng)絡(luò)工程聶加望2208066047122級(jí)網(wǎng)絡(luò)工程潘杰2208066048222級(jí)網(wǎng)絡(luò)工程秦彪2208066049322級(jí)網(wǎng)絡(luò)工程邱強(qiáng)22080660514

522級(jí)網(wǎng)絡(luò)工程唐重喜2208066054012查詢姓名為譚青的同學(xué)22級(jí)網(wǎng)絡(luò)工程譚青2208066053

34422級(jí)網(wǎng)絡(luò)工程譚青2208066053

順序檢索序號(hào)班級(jí)名稱姓名學(xué)號(hào)022級(jí)網(wǎng)絡(luò)工程聶加望2208066047122級(jí)網(wǎng)絡(luò)工程潘杰2208066048222級(jí)網(wǎng)絡(luò)工程秦彪2208066049322級(jí)網(wǎng)絡(luò)工程邱強(qiáng)2208066051

522級(jí)網(wǎng)絡(luò)工程唐重喜2208066054012422級(jí)網(wǎng)絡(luò)工程譚青2208066053

3456查詢姓名為鄒婕的同學(xué)【例6.5】編寫一個(gè)函數(shù):intseqSearch(inta[],intn,intkey),在數(shù)組中查找值為key的數(shù)組元素,若查找成功,則返回其在數(shù)組中的下標(biāo),否則返回檢索失敗的信息?!痉治觥坑捎跀?shù)組在內(nèi)存中的下標(biāo)為0~n-1,因此,當(dāng)查找失敗時(shí)可以用-1作為函數(shù)的返回值。據(jù)此,可以寫出基于數(shù)組的順序查找算法。#include"Array.h"#defineN100intseqSearch(inta[],intn,intkey){inti=0;while(i<n&&a[i]!=key)//由前向后依次查找i++;if(i<n) returni;else return-1;}intmain(){inta[N],x,pos;init(a,N); //構(gòu)造測(cè)試數(shù)組print(a,N);printf("請(qǐng)輸入要查找的數(shù):\n");scanf("%d",&x);pos=seqSearch(a,N,x);

if(pos!=-1)printf("a[%d]=%d\n",pos,a[pos]);elseprintf("查找失敗!");return0;}如果要從后向前查找,如何實(shí)現(xiàn)?22級(jí)網(wǎng)絡(luò)工程秦彪220806604922級(jí)網(wǎng)絡(luò)工程邱強(qiáng)220806605122級(jí)網(wǎng)絡(luò)工程譚青2208066053

22級(jí)網(wǎng)絡(luò)工程秦彪220806604922級(jí)網(wǎng)絡(luò)工程邱強(qiáng)220806605122級(jí)網(wǎng)絡(luò)工程譚青2208066053

表的刪除序號(hào)班級(jí)名稱姓名學(xué)號(hào)22級(jí)網(wǎng)絡(luò)工程聶加望220806604701234122級(jí)網(wǎng)絡(luò)工程潘杰2208066048

刪除48號(hào)學(xué)生(潘杰)信息6.3.2數(shù)據(jù)刪除【例6.6】編寫一個(gè)函數(shù)intdelData(inta[],intn,intpos),在數(shù)組中刪除a[pos]的元素值。30511021631742253364376687743N-1刪除數(shù)組元素刪除第pos個(gè)位置的元素intdelData(inta[],intn,intpos){}pos6677109…ni9#include"Array.h"#defineN10intdelData(inta[],intn,intpos){inti;if(pos>=0&&pos<n){ for(i=pos+1;i<n;i++) a[i-1]=a[i]; returnn-1; }elsereturnn; }判斷刪除位置是否合法后續(xù)元素依次前移刪除成功,元素減少1個(gè)刪除失敗,元素仍為n個(gè)intmain(){ inta[N],n,pos;

init(a,N); //構(gòu)造測(cè)試數(shù)組 print(a,N); printf("請(qǐng)輸入要?jiǎng)h除的位置:\n"); scanf("%d",&pos);

n=delData(a,N,pos); //在數(shù)組中刪除a[pos] print(a,n); return0;}數(shù)組的內(nèi)容是:34870350931655514543756246480請(qǐng)輸入要?jiǎng)h除的位置:2↙數(shù)組的內(nèi)容是:34870931655514543756246480如果要根據(jù)輸入的數(shù)據(jù)值來刪除與其相等的元素,該如何實(shí)現(xiàn)?如果數(shù)組中存在多個(gè)相同的待刪除數(shù)據(jù),如何將其全部刪除?22級(jí)網(wǎng)絡(luò)工程秦彪220806604922級(jí)網(wǎng)絡(luò)工程邱強(qiáng)220806605122級(jí)網(wǎng)絡(luò)工程譚青2208066053

表的插入序號(hào)班級(jí)名稱姓名學(xué)號(hào)22級(jí)網(wǎng)絡(luò)工程聶加望220806604722級(jí)網(wǎng)絡(luò)工程秦彪220806604922級(jí)網(wǎng)絡(luò)工程邱強(qiáng)220806605122級(jí)網(wǎng)絡(luò)工程譚青2208066053

01234122級(jí)網(wǎng)絡(luò)工程潘杰2208066048

插入48號(hào)學(xué)生(潘杰)信息6.3.2數(shù)據(jù)插入數(shù)組元素的插入算法305110216317422543653766877961196x43536677iN-1數(shù)組元素的插入算法在第pos個(gè)位置插入值為x的結(jié)點(diǎn)intinsertData(inta[],intn,intpos,intx){}pos9101112305110216317422543653…66…7796963343536677100N-1intinsertData(inta[],intn,intpos,intx){}pos空間已滿怎么辦?插入位置不合法怎么辦?pos數(shù)組元素的插入算法【例6.7】編寫一個(gè)函數(shù)insertData(inta[],intn,intpos,intx),在具有n個(gè)元素的數(shù)組中的pos位置插入一個(gè)值為x的元素。intinsertData(inta[],intn,intpos,intx){inti;if(pos>=0&&pos<=n) //判斷位置是否合法 { for(i=n-1;i>=pos;i--)//元素后移

a[i+1]=a[i]; a[pos]=x; //數(shù)據(jù)插入n++; //元素個(gè)數(shù)加1 }returnn;}intmain(){ inta[N],n,pos,x; init(a,10); //構(gòu)造測(cè)試數(shù)組 print(a,10); printf("請(qǐng)輸入要插入的位置和數(shù)據(jù):\n"); scanf("%d%d",&pos,&x); n=insertData(a,10,pos,x);//在數(shù)組的pos處插入x print(a,n); return0;}為什么舊款手機(jī)短信容量受限?若采用順序表實(shí)現(xiàn),則電話薄、短信容量受限!戶口簿住址變動(dòng)登記序號(hào)發(fā)送方發(fā)送時(shí)間短信內(nèi)容1138791000012013.7.810:22親,………

數(shù)組存儲(chǔ)短信息某商場(chǎng)搞促銷,當(dāng)日購(gòu)物金額最多者,可返10%購(gòu)物款。6.3.3尋找最大數(shù)若當(dāng)日客戶購(gòu)物金額存儲(chǔ)在數(shù)組中,任務(wù)的關(guān)鍵就是在數(shù)組中找出最大數(shù)?【例6.8】編寫一個(gè)函數(shù)intfindMax(inta[],intn),在具有n個(gè)元素的數(shù)組中查找最大數(shù)作為函數(shù)的返回值。intfindMax(inta[],intn){inti,maxData=a[0];for(i=1;i<n;i++)if(a[i]>maxData)

maxData=a[i];returnmaxData;}假設(shè)初始時(shí)a[0]為最大數(shù)搜索剩余的n-1個(gè)元素發(fā)現(xiàn)更大數(shù),則替換intmain(){ inta[N],maxData; init(a,N); //構(gòu)造測(cè)試數(shù)組 print(a,N);

maxData=findMax(a,N);//在數(shù)組中找最大數(shù) printf("maxData=%d\n",maxData); return0;}若要求返回?cái)?shù)組中最大值的位置(下標(biāo)),查找函數(shù)如何修改?intfindMax(inta[],intn){inti,maxIndex=

; //記錄初始位置for(i=1;i<n;i++)if(a[i]>

)

//記錄新位置return

//返回最大數(shù)位置

}若要找最小數(shù)位置如何修改?0a[maxIndex]maxIndex=i;maxIndex;學(xué)號(hào)姓名成績(jī)2208066001聶加望902208066002潘杰882208066003秦彪922208066004邱強(qiáng)78…6.3.5數(shù)據(jù)排序排序方法排序方法簡(jiǎn)單選擇排序274924160822簡(jiǎn)單選擇排序0 1 2 3 4 52222274949找第1個(gè)最大數(shù)274924160822簡(jiǎn)單選擇排序0 1 2 3 4 5找第2個(gè)最大數(shù)16272727274924160822簡(jiǎn)單選擇排序0 1 2 3 4 5找第3個(gè)最大數(shù)162224274924160822簡(jiǎn)單選擇排序0 1 2 3 4 5找第4個(gè)最大數(shù)274924160822簡(jiǎn)單選擇排序0 1 2 3 4 5找第5個(gè)最大數(shù)274924160822簡(jiǎn)單選擇排序0 1 2 3 4 5n個(gè)數(shù),共需重復(fù)n-1次。若每次找出的是最小數(shù),則可實(shí)現(xiàn)升序排列。簡(jiǎn)單選擇排序簡(jiǎn)單選擇排序簡(jiǎn)單選擇排序【例6.9】編寫一個(gè)函數(shù)voidselectSort(inta[],intn),采用簡(jiǎn)單選擇排序法對(duì)具有n個(gè)元素的數(shù)組按升序排序。voidselectSort(inta[],intn){inti,j,minIndex,temp;for(i=0;i<n-1;i++) {minIndex=i; //初始最小值位置for(j=i+1;j<n;j++)//在a[i..n-1]中找最小數(shù)if(a[j]<a[minIndex])minIndex=j;【例6.9】編寫一個(gè)函數(shù)voidselectSort(inta[],intn),采用簡(jiǎn)單選擇排序法對(duì)具有n個(gè)元素的數(shù)組按升序排序。if(minIndex!=i)//若最小數(shù)不在第i個(gè)位置,則交換{ temp=a[i];a[i]=a[minIndex];a[minIndex]=temp;}}}intmain(){inta[N];input(a,N); //輸入待排序數(shù)據(jù)selectSort(a,N); //排序print(a,N); //輸出排序后數(shù)組return0;}請(qǐng)輸入10個(gè)整數(shù)(整數(shù)間用空格分隔):201080706050100304090↙數(shù)組的內(nèi)容是:

102030405060708090100IntelCorei502450MCPU2.5GHZ

4G內(nèi)存Win7實(shí)驗(yàn)

采用選擇法對(duì)不同規(guī)模數(shù)據(jù)進(jìn)行升序排列。數(shù)據(jù)量時(shí)間(秒)2100.0472110.0522120.1272130.1532140.4362151.7242166.56721724.992218100.3110.0470.05224.992100.316.3基于數(shù)組的常用算法及其應(yīng)用順序查找1數(shù)據(jù)刪除2數(shù)據(jù)插入3簡(jiǎn)單選擇排序5冒泡排序6數(shù)據(jù)倒置7尋找最大值4二分查找8274924160822觀察現(xiàn)象觀察現(xiàn)象272416082249一趟冒泡a[0]<a[1],無須交換一趟冒泡a[1]>a[2],交換a[1]與a[2]一趟冒泡a[2]>a[3],交換a[2]與a[3]一趟冒泡a[3]>a[4],交換a[3]與a[4]一趟冒泡a[4]<a[5],無須交換一趟冒泡a[5]>a[6],交換a[5]與a[6]一趟冒泡a[6]>a[7],交換a[6]與a[7]一趟冒泡最大數(shù)在a[7]一趟冒泡算法實(shí)現(xiàn)for(i=0;i<n-1;i++) //共需兩兩比較n-1次if(a[i]>a[i+1]) //發(fā)現(xiàn)逆序,則交換{ temp=a[i];a[i]=a[i+1];a[i+1]=temp;}一趟冒泡一趟冒泡的過程可用下面的代碼實(shí)現(xiàn):冒泡排序272416082249冒泡排序272416082249冒泡排序n>1一趟冒泡n--truefalsevoidbubbleSort(inta[],intn){inti,temp;while(n>1)

//參與冒泡的元素個(gè)數(shù)大于1{for(i=0;i<n-1;i++)//一趟冒泡if(a[i]>a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}

n--;

//參與冒泡的數(shù)據(jù)個(gè)數(shù)減1}}IntelCorei502450MCPU2.5GHZ

4G內(nèi)存Win7實(shí)驗(yàn)

采用冒泡法對(duì)不同規(guī)模數(shù)據(jù)進(jìn)行升序排列。數(shù)據(jù)量時(shí)間(秒)2100.0472110.0592120.0902130.3222140.9212153.68321614.67721758.781218233.120.0470.05958.781233.12改進(jìn)冒泡排序算法數(shù)據(jù)已有序改進(jìn)冒泡排序算法當(dāng)數(shù)據(jù)已有序時(shí),如何提前結(jié)束冒泡過程?voidbubbleSort(inta[],intn){inti,temp;boolflag=true; //flag==true表示未排好序while(n>1&&flag) {flag=false;for(i=0;i<n-1;i++) //一趟冒泡if(a[i]>a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;

flag=true;}

n--;//參與冒泡的數(shù)據(jù)個(gè)數(shù)減1}}單擊倒置6.3.6數(shù)據(jù)倒置案例1:火車時(shí)刻表發(fā)車時(shí)間查詢。【例6.11】設(shè)計(jì)一個(gè)函數(shù)voidreverse(inta[],intn),將數(shù)組進(jìn)行首尾倒置。9995算法演示:1002013024035046057068090n-1ai…j1095算法演示:9902013024035046057068090n-1ai…j1095算法演示:9902013024035046057068090n-1ai…j【例6.11】設(shè)計(jì)一個(gè)函數(shù)voidreverse(inta[],intn),將數(shù)組進(jìn)行首尾倒置。循環(huán)終止條件:i>=j10209909519028037046055064030n-1ai…jvoidreverse(inta[],intn){inti=0,j=n-1,temp;while(i<j){temp=a[i]; //交換a[i]與a[j]a[i++]=a[j];a[j--]=temp;}}【例6.11】設(shè)計(jì)一個(gè)函數(shù)voidreverse(inta[],intn),將數(shù)組進(jìn)行首尾倒置。如何用遞歸算法實(shí)現(xiàn)?課后習(xí)題:編寫函數(shù),采用遞歸法實(shí)現(xiàn)數(shù)組首尾倒置。voidreverse(inta[],intleft,intright)9995算法演示:1002013024035046057068090n-1aleft…right1095算法演示:9902013024035046057068090n-1aleft…rightaleftright遞歸出口請(qǐng)大家課后實(shí)現(xiàn)!順序查找“瞎子”找真幣假幣假幣假幣假幣假幣假幣順序查找效率分析對(duì)于具有n個(gè)元素的順序表查找成功情況下:

最好情況1次;最壞情況n次。等概率情況的平均查找次數(shù):查找失敗情況下:

n次。順序查找

超市若有10000種不同貨品,每掃描一個(gè)條碼時(shí)需要在10000種不商品中尋找這件商品的名稱和價(jià)格。若1秒內(nèi)查詢1000次,查完全部貨物耗時(shí)10秒。怎樣提高檢索效率?順序查找幸運(yùn)52——猜價(jià)格123456….4096查詢關(guān)鍵字150020486.3.7二分查找查詢關(guān)鍵字150010246.3.7二分查找查詢關(guān)鍵字150015366.3.7二分查找二分檢索序號(hào)班級(jí)名稱姓名學(xué)號(hào)022級(jí)網(wǎng)絡(luò)工程聶加望2208066047122級(jí)網(wǎng)絡(luò)工程潘杰2208066048222級(jí)網(wǎng)絡(luò)工程秦彪2208066049322級(jí)網(wǎng)絡(luò)工程邱強(qiáng)22080660514

522級(jí)網(wǎng)絡(luò)工程唐重喜2208066054l=0查詢學(xué)號(hào)為2208066053的同學(xué)22級(jí)網(wǎng)絡(luò)工程譚青2208066053

422級(jí)網(wǎng)絡(luò)工程譚青2208066053

r=5midl=3mid序號(hào)班級(jí)名稱姓名學(xué)號(hào)022級(jí)網(wǎng)絡(luò)工程聶加望2208066047122級(jí)網(wǎng)絡(luò)工程潘杰2208066048222級(jí)網(wǎng)絡(luò)工程秦彪2208066049322級(jí)網(wǎng)絡(luò)工程邱強(qiáng)22080660514

522級(jí)網(wǎng)絡(luò)工程唐重喜2208066054l=0查詢學(xué)號(hào)為2208066052的同學(xué)422級(jí)網(wǎng)絡(luò)工程譚青2208066053

r=5midl=3mid二分檢索序號(hào)班級(jí)名稱姓名學(xué)號(hào)022級(jí)網(wǎng)絡(luò)工程聶加望2208066047122級(jí)網(wǎng)絡(luò)工程潘杰2208066048222級(jí)網(wǎng)絡(luò)工程秦彪2208066049322級(jí)網(wǎng)絡(luò)工程邱強(qiáng)22080660514

522級(jí)網(wǎng)絡(luò)工程唐重喜2208066054查詢學(xué)號(hào)為2208066052的同學(xué)422級(jí)網(wǎng)絡(luò)工程譚青2208066053

r=3l=3mid二分檢索序號(hào)班級(jí)名稱姓名學(xué)號(hào)022級(jí)網(wǎng)絡(luò)工程聶加望2208066047122級(jí)網(wǎng)絡(luò)工程潘杰2208066048222級(jí)網(wǎng)絡(luò)工程秦彪2208066049322級(jí)網(wǎng)絡(luò)工程邱強(qiáng)22080660514

522級(jí)網(wǎng)絡(luò)工程唐重喜2208066054查詢學(xué)號(hào)為2208066052的同學(xué)422級(jí)網(wǎng)絡(luò)工程譚青2208066053

r=3l=4mid查找失敗二分檢索【例6.12】設(shè)計(jì)函數(shù)intbinSearch(inta[],intn,intkey),采用二分查找算法在升序排列的數(shù)組a中查找值為key的元素所在的位置。intbinSearch(inta[],intn,intkey){intleft=,right=

,mid;while(left<=right) { mid=;//二分 if(a[mid]==key)

//查找成功 return; elseif(key<a[mid])right=;elseleft=; } return; //查找失敗}0n-1(left+right)/2midmid-1mid+1-1二分檢索遞歸程序如何實(shí)現(xiàn)?主要內(nèi)容一維數(shù)組向函數(shù)傳遞一維數(shù)組基于數(shù)組的常用算法一維數(shù)組的應(yīng)用練習(xí)題6.3.8一維數(shù)組應(yīng)用實(shí)例1.進(jìn)位制轉(zhuǎn)換算法演示:222826838072376543210算法演示:215826838076543210723算法演示:215826838076543210723編程提示:按照先進(jìn)后出,后進(jìn)先出來組織數(shù)據(jù)的結(jié)構(gòu)等為“?!??!纠?.13】編寫一個(gè)程序,實(shí)現(xiàn)無符號(hào)十進(jìn)制數(shù)m到R進(jìn)制數(shù)的轉(zhuǎn)換功能(一般R取16,8或2)。voiddtoR(unsignedintm,intr){intstack[32]; inttop=0;printf("%d=(",m);while(m) //進(jìn)位制轉(zhuǎn)換{stack[top++]=m%r;m=m/r;}【例6.13】編寫一個(gè)程序,實(shí)現(xiàn)無符號(hào)十進(jìn)制數(shù)m到R進(jìn)制數(shù)的轉(zhuǎn)換功能(一般R取16,8或2)。top--;while(top>=0)//從后向前輸出數(shù)組內(nèi)容{ //轉(zhuǎn)換為對(duì)應(yīng)的ASCII字符形式輸出printf("%c",stack[top]>9?stack[top]+'A'-10:stack[top]+'0');top--;}printf(")%d\n",r);}intmain(){unsignedintm;printf("請(qǐng)輸入要轉(zhuǎn)換的十進(jìn)制正整數(shù):");scanf("%u",&m);dtoR(m,2); //轉(zhuǎn)換成二進(jìn)制數(shù)dtoR(m,8); //轉(zhuǎn)換成八進(jìn)制數(shù)dtoR(m,16); //轉(zhuǎn)換成十六進(jìn)制數(shù)return0;}請(qǐng)輸入要轉(zhuǎn)換的十進(jìn)制正整數(shù):215↙215=(11010111)2215=(327)8215=(D7)162.

篩法求素?cái)?shù)基本思想:

把從1開始的、某一范圍內(nèi)的正整數(shù)從小到大順序排列,1不是素?cái)?shù),首先把它篩掉。

剩下的數(shù)中選擇最小的數(shù)是素?cái)?shù),然后去掉它的倍數(shù)。依次類推,直到篩子為空時(shí)結(jié)束。以求1~30以內(nèi)的素?cái)?shù)為例:123456789101112131415161718192021

2223242526272829301不是素?cái)?shù),去掉。剩下的數(shù)中2最小,是素?cái)?shù),去掉2的倍數(shù)。下一個(gè)最小的數(shù)是3,是素?cái)?shù),去掉3的倍數(shù)?!蟪龅乃?cái)?shù)為:2357111317192329【例6.14】編寫一個(gè)程序用篩法輸出1~N之內(nèi)的所有素?cái)?shù)?!痉治觥烤唧w實(shí)現(xiàn)時(shí),可以定義一個(gè)大小為N+1的數(shù)組,利用下標(biāo)1~N來表示N個(gè)整數(shù),而用a[i]=1來表示i是素?cái)?shù),a[i]=0來表示i不是素?cái)?shù)。#include<stdio.h>#defineN200intmain(){intprime[N+1]={0};inti,j,counter=0; //counter為素?cái)?shù)計(jì)數(shù)器for(i=2;i<=N;i++)prime[i]=1; //初始時(shí),將2~N設(shè)為素?cái)?shù)for(i=2;i<=N;i++)if(prime[i]==1) //i是素?cái)?shù){printf("%5d",i);counter++;if(counter%10==0)printf("\n");for(j=i;j<=N;j+=i)//將i的倍數(shù)全部設(shè)為非素?cái)?shù)prime[j]=0;}return0;}二維數(shù)組6.46.4二維數(shù)組序號(hào)數(shù)學(xué)C語言英語08090781928867288928039988904991009057989876.4.1二維數(shù)組的定義、引用及初始化1.二維數(shù)組的定義數(shù)據(jù)類型

數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];行數(shù)列數(shù)例如:

inta[3][4];2.二維數(shù)組的引用二維數(shù)組可通過行下標(biāo)與列下標(biāo)來引用,與一維數(shù)組相同,行列下標(biāo)可以是常量、變量或表達(dá)式,但要保證其在有效的范圍內(nèi)。inta[2][4];a[0][1]=1;for(j=0;j<4;j++) a[0][j]=j;printf("%d",a[2][4]);實(shí)際編程中,常通過雙重循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)對(duì)整個(gè)二維數(shù)組的訪問。for(i=0;i<3;i++){for(j=0;j<4;j++)scanf("%d",&a[i][j]);}二維數(shù)組的輸入for(i=0;i<3;i++){for(j=0;j<4;j++) printf("%5d",a[i][j]);printf("\n"); }二維數(shù)組的輸出3.二維數(shù)組的初始化(1)采用分行賦值。3.二維數(shù)組的初始化(2)若在初始化列表中省略每一行的{},按初始化列表從前向后按行優(yōu)先的順序?qū)?shù)組進(jìn)行賦值,不足部分自動(dòng)賦值為0。3.二維數(shù)組的初始化(3)在對(duì)二維數(shù)組進(jìn)行初始化時(shí),可省略數(shù)組的行數(shù),編譯器會(huì)根據(jù)初始化列表的項(xiàng)數(shù)自動(dòng)確定數(shù)組的行數(shù)。inta[][4]={1,2,3,4,5,6,7,8,9};3.二維數(shù)組的初始化將使數(shù)組共有4行。inta[][4]={{1,2,3},{4,5,6},{7,8,9,10},{11}};123045607891011000注意:在定義二維數(shù)組時(shí)不能省略列的定義。10.下列選項(xiàng)中正確的二維數(shù)組定義與初始化語句是()。inta[][]={1,2,3,4,5,6};inta[2][]={1,2,3,4,5,6};inta[][3]={1,2,3,4,5,6};inta[2,3]={1,2,3,4,5,6};ABCD提交單選題5分11.已知inti,x[3][3]={1,2,3,4,5,6,7,8,9};,則下面語句

for(i=0;i<3;i++)

printf("%d",x[i][2-i]);的輸出結(jié)果是()。147159357369ABCD提交單選題5分12.若定義了intb[][3]={1,2,3,4,5,6,7};,則b數(shù)組的行數(shù)是()。234無確定值A(chǔ)BCD提交單選題5分6.4.2二維數(shù)組應(yīng)用實(shí)例【例6.15】編寫一個(gè)程序,定義一個(gè)二維數(shù)組,從鍵盤輸入該數(shù)組的值,然后查找該數(shù)組中最大數(shù)和其所在的位置并輸出?!痉治觥坎捎秒p重循環(huán)對(duì)二維數(shù)組進(jìn)行搜索。#include<stdio.h>#defineM4#defineN5intmain(){inta[M][N],i,j;intmaxData,row,col;printf("請(qǐng)輸入%d行%d列的矩陣:\n",M,N);for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);

maxData=a[0][0]; //maxData用于記錄最大值row=col=0;//row,col分別記錄最大值所在的行與列for(i=0;i<M;i++)for(j=0;j<N;j++)

if(a[i][j]>maxData){maxData=a[i][j]; row=i;col=j;}printf("maxData=a[%d][%d]=%d\n",row,col,maxData);return0;}【例6.16】編程在屏幕上輸出n行楊輝三角形,n由鍵盤輸入。(1)每行的第1個(gè)與最后一個(gè)數(shù)均為1;(2)其它各數(shù)等于它上一行左邊列和上一行上一列的兩數(shù)之和。#include<stdio.h>#defineN15intmain(){inta[N][N],n;inti,j;printf("請(qǐng)輸入需輸出的楊輝三角行數(shù)(小于等于15):");scanf("%d",&n);for(i=0;i<n;i++){a[i][0]=a[i][i]=1;//兩端為1

for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<n;i++){ for(j=0;j<=i;j++) //輸出一行 printf("%-5d",a[i][j]); printf("\n"); //換行}return0;}【例6.17】有M名學(xué)生,學(xué)習(xí)N門課程,已知所有學(xué)生的各科成績(jī),編程實(shí)現(xiàn),分別求每位學(xué)生的總分和每門課程的平均成績(jī)。如何存儲(chǔ),如何計(jì)算?請(qǐng)輸入1號(hào)學(xué)生的3門課程成績(jī):7086.590↙請(qǐng)輸入2號(hào)學(xué)生的3門課程成績(jī):778267↙請(qǐng)輸入3號(hào)學(xué)生的3門課程成績(jī):567092↙請(qǐng)輸入4號(hào)學(xué)生的3門課程成績(jī):969088↙-------------------------------------------------------學(xué)號(hào)總分成績(jī)1成績(jī)2成績(jī)3-------------------------------------------------------1246.5070.0086.5090.002226.0077.0082.0067.003218.0056.0070.0092.004274.0096.0090.0088.00-------------------------------------------------------成績(jī)1平均分:74.75成績(jī)2平均分:82.13成績(jī)3平均分:84.25行數(shù)和列數(shù)比學(xué)生數(shù)、課程數(shù)多1第0行存放課程的平均分,第0列存放學(xué)生的總分。#include<stdio.h>#defineM4#defineN3intmain(){floatscore[M+1][N+1];inti,j;for(i=1;i<=M;i++)//鍵盤輸入學(xué)生成績(jī){printf("請(qǐng)輸入%d號(hào)學(xué)生的%d門課程成績(jī):",i,N);for(j=1;j<=N;j++)scanf("%f",&score[i][j]);}輸入學(xué)生成績(jī)信息for(i=1;i<=M;i++){score[i][0]=0;//第i位學(xué)生的總分存到第i行第0列for(j=1;j<=N;j++) score[i][0]+=score[i][j];}

求每位學(xué)生的總分for(j=1;j<=N;j++){score[0][j]=0;for(i=1;i<=M;i++)score[0][j]+=score[i][j];score[0][j]/=M;}

每門課程的平均成績(jī)存到所在列的第0行。求每門課程的平均成績(jī)printf("------------------------------------------\n");printf("學(xué)號(hào)\t總分\t成績(jī)1\t成績(jī)2\t成績(jī)3\n");printf("------------------------------------------\n");for(i=1;i<=M;i++){printf("%d\t",i);for(j=0;j<=N;j++)printf("%.2f\t",score[i][j]);printf("\n");}輸出學(xué)生成績(jī)表printf("------------------------------------------\n");for(j=1;j<=N;j++)printf("成績(jī)%d平均分:%.2f:\n",j,score[0][j]);return0;}輸出各門課程的平均成績(jī)向函數(shù)傳遞

二維數(shù)組6.56.5向函數(shù)傳遞二維數(shù)組當(dāng)二維數(shù)組作為函數(shù)的形參時(shí),對(duì)應(yīng)的實(shí)參應(yīng)該是二維數(shù)組名。此時(shí),實(shí)參向形參傳遞的是二維數(shù)組的首地址,函數(shù)中對(duì)形參數(shù)組的訪問實(shí)際上是對(duì)實(shí)參數(shù)組的訪問。1234567815263748【例6.17】設(shè)計(jì)函數(shù)transpose,將M行N列的矩陣a轉(zhuǎn)置為N行M列的矩陣b。矩陣B矩陣A#include<stdio.h>#defineM2#defineN4/*@函數(shù)名稱:transpose入口參數(shù):inta[M][N]@函數(shù)功能:將M行N列的矩陣a轉(zhuǎn)置為N行M列的矩陣b@出口參數(shù):數(shù)組b*/voidtranspose(inta[M][N],intb[N][M]){inti,j;for(i=0;i<M;i++)for(j=0;j<N;j++) b[j][i]=a[i][j];}intmain(){inta[M][N]={1,2,3,4,5,6,7,8};intb[N][M]={0};inti,j;for(i=0;i<M;i++) //輸出矩陣a{for(j=0;j<N;j++) printf("%4d",a[i][j]);printf("\n");}

transpose(a,b);

//矩陣轉(zhuǎn)置for(i=0;i<N;i++) //輸出矩陣b{for(j=0;j<M;j++) printf("%4d",b[i][j]);printf("\n");}}可否設(shè)計(jì)一個(gè)通用的二維數(shù)組輸出函數(shù),來分別輸出數(shù)組a與數(shù)組b的內(nèi)容?print(a,M,N); print(b,N,M); 方案1:將print函數(shù)定義為:結(jié)論:二組數(shù)組形參不能省略列!voidprint(inta[][],intm,intn){inti,j;for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}}編譯時(shí)出現(xiàn)“error:arraytypehasincompleteelementtype”的錯(cuò)誤提示,指示函數(shù)的數(shù)組形參定義存在問題。方案2:

把函數(shù)首部改為:voidprint(inta[][N],intm,intn),函數(shù)體不變,再次編譯,編譯錯(cuò)誤消失。print(a,M,N)print(b,N,M)ArrayA:12345678ArrayB:

15371256方案3:

把函數(shù)首部改為voidprint(inta[][M],intm,intn),函數(shù)體不變。print(a,M,N)print(b,N,M)ArrayA:12343456ArrayB:15263748C語言規(guī)定,在定義二維數(shù)組為形參時(shí),形參數(shù)組的行可以省略,但不能省略二維數(shù)組的列。調(diào)用該函數(shù)時(shí)實(shí)參數(shù)組要求與形參數(shù)組具有相同的列(行可以不同)。voidprint(inta[][N],intm) {inti,j;for(i=0;i<m;i++){for(j=0;j<N;j++)printf("%-4d",a[i][j]);printf("\n");}}該函數(shù)只能用于輸出列為N的二維數(shù)組。行參數(shù)【例6.18】設(shè)計(jì)print(inta[][N],intm)函數(shù),輸出行為m列為N的二維數(shù)組。#defineN3voidprint(inta[][N],intm) {inti,j;for(i=0;i<m;i++){for(j=0;j<N;j++)printf("%-4d",a[i][j]);printf("\n");}}行參數(shù)intmain(){inta[2][N]={{1,2,3},{4,5,6}};intb[3][N]={1,2,3,4,5,6,7,8,9};printf("Arraya:\n");print(a,2);printf("Arrayb:\n");print(b,3);return0;}要設(shè)計(jì)能處理任意行、任意列的二維數(shù)組的

函數(shù),需要用到指針相關(guān)知識(shí)。主要內(nèi)容字符串字符數(shù)組的初始化字符數(shù)組的輸入/輸出字符串處理函數(shù)字符串應(yīng)用舉例字符串及

字符數(shù)組6.66.6.1字符串字符串(常量)是用雙引號(hào)括起來的若干字符序列。"MynameisTony.""Iamfine\nThankyou."C語言用'\0'('\0'是ASCII為0的字符,注意它與'0'的區(qū)別)來作為字符串結(jié)束標(biāo)識(shí)。結(jié)束標(biāo)識(shí)結(jié)束標(biāo)識(shí)“China”占用6個(gè)字節(jié)該串占用17個(gè)字節(jié)6.6.1字符串6.6.2字符數(shù)組的初始化用字符初始化列表初始化部分單元charb[10]={'C','h','i','n','a'};6.6.2字符數(shù)組的初始化若省略數(shù)組大小,則自動(dòng)根據(jù)字符初始化列表的項(xiàng)數(shù)決定數(shù)組大小。chara[]={'C','h','i','n','a'};6.6.2字符數(shù)組的初始化C語言沒有提供專門的字符串類型,而是采用字符數(shù)組存儲(chǔ)字符串,因此,字符數(shù)組有時(shí)也稱為字符串變量。用字符初始化列表初始化所有單元chara[5]={'C','h','i','n','a'};6.6.2字符數(shù)組的初始化用字符串常量給字符數(shù)組初始化時(shí),字符串結(jié)束符需要占用一個(gè)字節(jié)單元,同時(shí)可以省略{}chara[]={"Hello"};與chara[]="Hello";等價(jià)具有'\0'結(jié)束的字符數(shù)組可視為字符串變量。6.6.3字符數(shù)組的輸入/輸出chara[10];scanf("%s",a); //輸入字符串printf("%s",a); //輸出字符串(2)用格式控制符%s,按字符串方式進(jìn)行輸入或輸出。數(shù)組名scanf視空格、Tab和回車等字符為字符串的輸入結(jié)束符。例如,當(dāng)輸入Howareyou?時(shí),僅"How"被存入數(shù)組a,遇空格結(jié)束輸入,并自動(dòng)在w后面放上'\0',如下所示。How\0

printf("%s",a);從數(shù)組a的首地址開始輸出字符串,遇'\0'結(jié)束輸出('\0'本身不輸出),輸出完成后光標(biāo)不換行。6.6.3字符數(shù)組的輸入/輸出字符數(shù)組的輸入/輸出有三種方式:(1)通過循環(huán)語句用逐個(gè)輸入或輸出數(shù)組元素。chara[10];inti;for(i=0;i<10;i++) scanf("%c",&a[i]); //或a[i]=getchar();for(i=0;i<10;i++) printf("%c",a[i]); //或 putchar(a[i]);6.6.3字符數(shù)組的輸入/輸出(3)用字符串輸入函數(shù)gets、字符串輸出函數(shù)puts進(jìn)行字符串輸入與輸出,兩個(gè)函數(shù)均在stdio.h中定義。chara[10];gets(a); puts(a);輸入字符串存入a數(shù)組,遇回車符結(jié)束輸入,并在字符串的最后存入'\0'。輸出字符串a(chǎn),遇'\0'結(jié)束輸出并換行。6.6.3字符數(shù)組的輸入/輸出【例6.19】從鍵盤輸入一個(gè)英文字符串,將其中的小寫字母轉(zhuǎn)換成大寫字母后輸出。#include<stdio.h>intmain(){chars[80];inti=0;printf("Pleaseinputastring:\n");gets(s);while(s[i]!='\0'){if(s[i]>='a'&&s[i]<='z')s[i]=s[i]-32; //小寫字母轉(zhuǎn)大寫字母i++; }puts(s);}15.字符數(shù)組s不能作為字符串使用的是()。chars[]="happy";chars[]={"happy"};chars[6]={'h','a','p','p','y'};chars[4]={'h','a','p','p','y'};ABCD提交單選題5分【例6.20】從鍵盤輸入三個(gè)字符串,分別計(jì)算三個(gè)字符串的長(zhǎng)度后輸出(含首尾空格)。【分析】可以用一個(gè)3行的二維字符數(shù)組來存放三個(gè)字符串,每行存放一個(gè)字符串。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論