可靠性與系統(tǒng)工程學(xué)院生專業(yè)課課件-c語(yǔ)言程序設(shè)計(jì)循環(huán)數(shù)組_第1頁(yè)
可靠性與系統(tǒng)工程學(xué)院生專業(yè)課課件-c語(yǔ)言程序設(shè)計(jì)循環(huán)數(shù)組_第2頁(yè)
可靠性與系統(tǒng)工程學(xué)院生專業(yè)課課件-c語(yǔ)言程序設(shè)計(jì)循環(huán)數(shù)組_第3頁(yè)
可靠性與系統(tǒng)工程學(xué)院生專業(yè)課課件-c語(yǔ)言程序設(shè)計(jì)循環(huán)數(shù)組_第4頁(yè)
可靠性與系統(tǒng)工程學(xué)院生專業(yè)課課件-c語(yǔ)言程序設(shè)計(jì)循環(huán)數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語(yǔ)言程序設(shè)計(jì)

TheCProgrammingLanguage

C程序設(shè)計(jì)wlmCH6循環(huán)結(jié)構(gòu)程序設(shè)計(jì)內(nèi)容提要循環(huán)就是在滿足一定條件時(shí)重復(fù)執(zhí)行一段程序構(gòu)成循環(huán)的語(yǔ)句(if…goto、while、do-while、for)幾種循環(huán)的比較循環(huán)嵌套Break、continue語(yǔ)句C程序設(shè)計(jì)wlmwhile

循環(huán)表達(dá)式語(yǔ)句真(非0)下一語(yǔ)句假(0)用while語(yǔ)句實(shí)現(xiàn)當(dāng)型循環(huán)表達(dá)式語(yǔ)句N-S圖一般形式:while(表達(dá)式)語(yǔ)句循環(huán)體#include<stdio.h>voidmain(){ intk=1,s=0;loop: if(k<=3) { s=s+k; k++;

gotoloop; } printf("s=%d\n",s);}while(k<=3)循環(huán)控制變量循環(huán)控制表達(dá)式分析:這是一個(gè)累加求和問(wèn)題s=1+2+3和的新值和的當(dāng)前值求和項(xiàng)當(dāng)前值【例6.1】計(jì)算s=∑3k=1ks=s+ks=0s=s+1s=s+2s=s+3s=0,k=1k<=3s=s+kk++輸出s#include<stdio.h>voidmain(){ intk,s; s=0;k=1; while(k<=3) { s=s+k; k++; } printf("s=%d\n",s);}#include<stdio.h>voidmain(){ intk,s,n;printf(“Entern:”);scanf(“%d”,&n); s=0;k=1; while(k<=n) { s+=k; k++; } printf("Σ%d=%d\n",n,s);}【例6.2】讀程序#include<stdio.h>voidmain(){ intk,t,n;printf(“Entern:”);scanf(“%d”,&n); t=1;k=1; while(k<=n) { t*=k; k++; } printf("%d!=%d\n",n,t);}s=Σnt=n!【例6.3】讀程序#include<stdio.h>voidmain(){ intk,t,n;printf(“Entern:”);scanf(“%d”,&n); t=1;k=1; while(k<=n) { t*=k; k++; } printf("%d!=%d\n",n,t);}s=1!+2!+……+n!t=n!#include<stdio.h>voidmain(){ intk,t,n,s=0;printf(“Entern:”);scanf(“%d”,&n); t=1;k=1; while(k<=n) { t*=k;s+=t; k++; }

printf(“s=%d\n",s);}【例6.4】求100以內(nèi)的奇數(shù)、偶數(shù)之和#include<stdio.h>voidmain(){intn=1,odd=0,even=0;

while(n<100) { odd+=n; even+=n+1;n+=2; }printf("odd=%d,even=%d\n",odd,even);}while(n<100){if(n%2==0)even+=n;elseodd+=n;n++;}分析:設(shè):偶數(shù)和放在even變量中

even=2+4+6+…+100奇數(shù)和放在odd變量中

odd=1+3+5+…+99

計(jì)數(shù)器n初值為1while(n<100){odd=odd+n;even=even+(n+1);n=n+2;}【例6.2】求任意兩個(gè)正整數(shù)m和n的最大公約數(shù)和最小公倍數(shù)1.用輾轉(zhuǎn)相除法求最大公約數(shù)m對(duì)n

求余數(shù)為a,若

a≠0,則mn,na,繼續(xù)求余;否則n

為最大公約數(shù)例如,設(shè)

m=12,n=21,計(jì)算過(guò)程如下:計(jì)算次數(shù)被除數(shù)除數(shù)余數(shù)1 12 21 1222112931293493032.最小公倍數(shù)=

兩個(gè)數(shù)的積最大公約數(shù)輸入m,nm1=m,n1=n,a=m1%n1a≠0m1=n1n1=aa=m1%n1輸出n1及m·n/n1#include<stdio.h>voidmain(){ intm,n,m1,n1,a; printf("輸入兩個(gè)正整數(shù):"); scanf("%d,%d",&m,&n); m1=m;n1=n;

a=m1%n1; while(a!=0) { m1=n1;n1=a;

a=m1%n1; } printf("最大公約數(shù)是%d\n",n1); printf("最小公倍數(shù)是

%d\n",m*n/n1);}C程序設(shè)計(jì)wlmdo-while語(yǔ)句do語(yǔ)句while(表達(dá)式);語(yǔ)句表達(dá)式形式為:do-while語(yǔ)句用來(lái)實(shí)現(xiàn)直到型循環(huán)語(yǔ)句表達(dá)式下一語(yǔ)句真假不可省略!切記切記!!!#include<stdio.h>voidmain(){ intk,s; s=0;k=1; do { s=s+k; k++; }while(k<=3); printf("s=%d\n",s);}#include<stdio.h>voidmain(){ intk,s; s=0;k=1; while(k<=3) { s=s+k; k++; } printf("s=%d\n",s);}【例6.1】計(jì)算s=∑3k=1kC程序設(shè)計(jì)wlmfor循環(huán)求解表達(dá)式1表達(dá)式2語(yǔ)句求解表達(dá)式3真假下一語(yǔ)句求解表達(dá)式1表達(dá)式2語(yǔ)句求解表達(dá)式3

表達(dá)式1在進(jìn)入循環(huán)之前求解

(循環(huán)變量賦初值)

表達(dá)式3是循環(huán)體的一部分for循環(huán)的一般形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

語(yǔ)句表達(dá)式1;表達(dá)式3;{}這個(gè)分號(hào)不能移走這個(gè)分號(hào)不能丟掉for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句表達(dá)式1可以移到for語(yǔ)句的前邊表達(dá)式3可以移到內(nèi)嵌語(yǔ)句的后邊表達(dá)式2為空值永遠(yuǎn)為真成為死循環(huán)for循環(huán)的其他形式:表達(dá)式2省略時(shí),不判斷循環(huán)條件,將成為“死循環(huán)”,需要在循環(huán)體中引入break語(yǔ)句退出循環(huán)說(shuō)明1.表達(dá)式1省略時(shí),應(yīng)在for前給循環(huán)變量賦初值如: k=1; for(;k<=3;k++)s=s+k;2.表達(dá)式2省略時(shí),將成為“死循環(huán)”需要在循環(huán)體中引入break語(yǔ)句以退出循環(huán)如: for(k=1;;k++) {if(k>10)break; s+=k;}3.表達(dá)式3省略時(shí),循環(huán)體內(nèi)應(yīng)有使循環(huán)條件改變的語(yǔ)句如: for( k=1;k<=3;){s=s+k;k++;}如:k=1; k=1; for(;k<=3;) while(k<=3) {s=s+k; {s=s+k; k++; k++; } }4.同時(shí)省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,相當(dāng)于while語(yǔ)句5.表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值不等于0就執(zhí)行循環(huán)體如: for(k=1;k-4;k++) s=s+k;當(dāng)k的值等于4時(shí)終止循環(huán)。k-4是數(shù)值表達(dá)式。#include<stdio.h>voidmain(){charc;for(;(c=getchar())!='\n';)

putchar(c);putchar('\n');}功能:讀入一個(gè)字符,當(dāng)它不是回車符時(shí)就輸出?!纠?.4】讀程序,判斷程序的功能。僅輸出字母如何修改if(c>=65&&c<=90||c>=97&&c<=122)printf(“%c”,c);C程序設(shè)計(jì)wlm【例6.4】求100以內(nèi)的奇數(shù)、偶數(shù)之和#include<stdio.h>voidmain(){intn=1,odd=0,even=0;

while(n<100) { odd+=n; even+=n+1;n+=2; }printf("odd=%d,even=%d\n",odd,even);}#include<stdio.h>voidmain(){intn=1,odd=0,even=0;

for(;n<100;n+=2) { odd+=n; even+=n+1;

}printf("odd=%d,even=%d\n",odd,even);}C程序設(shè)計(jì)wlm循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)包含著另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套內(nèi)嵌的循環(huán)中又可以嵌套循環(huán),從而構(gòu)成多重循環(huán)三種循環(huán)都可以互相嵌套(while、dowhile、for)說(shuō)明:嵌套的循環(huán)控制變量不能相同內(nèi)循環(huán)變化快,外循環(huán)變化慢正確確定循環(huán)體循環(huán)控制變量常與求解的問(wèn)題掛鉤功能:打印乘法口訣#include<stdio.h>voidmain(){ intm,n; for(m=1;m<=9;m++) { for(n=1;n<=m;n++) printf("%1d×%1d=%2d",m,n,m*n); printf("\n"); }}C程序設(shè)計(jì)wlm幾種循環(huán)的比較while(表達(dá)式)

語(yǔ)句do語(yǔ)句while(表達(dá)式)

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)

語(yǔ)句(1)

循環(huán)的控制循環(huán)條件初始化也可在for前循環(huán)控制條件修改循環(huán)條件也可在循環(huán)體內(nèi)while循環(huán):先判斷條件,循環(huán)體可能一次也不執(zhí)行

do~while循環(huán):后判斷條件,循環(huán)體至少執(zhí)行一次

for循環(huán)功能強(qiáng),使用靈活都可以用break語(yǔ)句結(jié)束循環(huán),用continue語(yǔ)句

結(jié)束本次循環(huán)C程序設(shè)計(jì)wlmbreak

語(yǔ)句、continue語(yǔ)句用break語(yǔ)句可以結(jié)束switch結(jié)構(gòu)和三種循環(huán)用continue語(yǔ)句結(jié)束本次循環(huán),即忽略循環(huán)體中剩余的語(yǔ)句開(kāi)始下一次循環(huán)C程序設(shè)計(jì)wlm輸入mk=sqrt(m)i=2 i<=k m%i為0

是否 結(jié)束循環(huán)

i++i>=k+1是否m是素?cái)?shù)m不是素?cái)?shù)#include<math.h>#include<stdio.h>voidmain(){ intm,i,k; printf("輸入一個(gè)整數(shù):"); scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++)

if(m%i==0)break;

if(i>k)printf("%d是素?cái)?shù)\n",m); elseprintf("%d不是素?cái)?shù)\n",m);}結(jié)束循環(huán)break總是作if的內(nèi)嵌語(yǔ)句C程序設(shè)計(jì)wlm#include<math.h>#include<stdio.h>voidmain(){ intm,i,k; printf("輸入一個(gè)整數(shù):"); scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break;

if(i>k)printf("%d是素?cái)?shù)\n",m); elseprintf("%d不是素?cái)?shù)\n",m);}flag=1;{flag=0;break;}flagC程序設(shè)計(jì)wlm打印100~200間所有不能被3整除的數(shù)#include<stdio.h>voidmain(){ intn; for(n=100;n<=200;n++) { if(n%3==0)continue; printf("%d",n); }}能整除,不打印本次循環(huán)結(jié)束,執(zhí)行表達(dá)式3,進(jìn)入下一循環(huán)contiune總是作if的內(nèi)嵌語(yǔ)句if(n%3)

printf("%d",n);C語(yǔ)言程序設(shè)計(jì)——

數(shù)組數(shù)組——主要內(nèi)容概念一維數(shù)組二維數(shù)組字符數(shù)組如何定義如何初始化如何引用一維數(shù)組定義類型說(shuō)明符數(shù)組名[常量表達(dá)式];……a[0]a[1]a[8]a[9]a#defineM10voidmain(){inta[10];floatdata[100];longclass[34];floatx[20],y[4*M+1];….}常量或符號(hào)常量,符號(hào)常量用define定義inta[10];數(shù)組名a,長(zhǎng)度是10,有10個(gè)元素a[0]…a[9]注意沒(méi)有a[10]由具有相同類型的若干個(gè)分量按一定順序排列組成的

代表地址一維數(shù)組定義定義數(shù)組注意事項(xiàng)方括弧a[2]

a(2)命名規(guī)則和簡(jiǎn)單變量相同數(shù)組元素的下標(biāo)從0開(kāi)始,最大下標(biāo)值為(數(shù)組元素個(gè)數(shù)-1)不允許對(duì)數(shù)組的大小做動(dòng)態(tài)定義,即不能用變量符號(hào)定義只能由字母、數(shù)字、下劃線組成第一個(gè)字符不能是數(shù)字;不能使用保留字。intn;scanf(“%d”,&n);inta[n];a[10]

a[0]a[1]……a[9]inta(10),b[x],%[5],8[3],x-y[50],5x[100]是否正確?intn=5,a[n];a[1]=100;printf(“a[1]=%d\n”,a[1]);是否正確性?編譯指出:constantexpressionrequiredinfunctionmain(主函數(shù)中要求常量表達(dá)式)數(shù)組的初始化---實(shí)現(xiàn)方法1.在定義數(shù)組時(shí)對(duì)數(shù)組元素賦初值例如: inta[5]={1,2,3,4,5};2.可以只給部分元素賦初值例如: intb[5]={1,2,3};3.在對(duì)全部數(shù)組元素賦初值時(shí),可不指定數(shù)組長(zhǎng)度.若數(shù)組長(zhǎng)度與初值個(gè)數(shù)不同,數(shù)組長(zhǎng)度不能省略例如: intc[5]={2,4,6,8,10};

intc[]={2,4,6,8,10};效果一樣5.靜態(tài)數(shù)組元素具有自動(dòng)初始值0定義例如: staticintd[5];a[0]=1

a[1]=2a[2]=3a[3]=4a[4]=5b[0]=1b[1]=2b[2]=3b[3]=0b[4]=04.使數(shù)組中全部元素值為0例如: inte[5]={0};inta[5]={0*5}12345a[0]a[1]a[2]a[3]a[4]a一維數(shù)組元素的引用規(guī)則:先定義后使用引用形式:數(shù)組名[下標(biāo)]

下標(biāo):整型常量或整型表達(dá)式inta[10];10個(gè)元素下標(biāo)從0~9

a[0]=a[3]+a[5]+a[2*2];引用方法:逐個(gè)引用,不能一次引用整個(gè)數(shù)組注意下標(biāo)越界的問(wèn)題

如:inta[10];10個(gè)元素a[0]…a[9]

a[10]內(nèi)容隨意變化,不受保護(hù)inta[10];定義數(shù)組b=a[5];引用數(shù)組元素注意區(qū)別一維數(shù)組應(yīng)用#include<stdio.h>voidmain(){inti,a[5];for(i=0;i<=4;i++){a[i]=i+1;printf("a[%d]=%d\n",i,a[i]);}}運(yùn)行結(jié)果:

a[0]=1a[1]=2a[2]=3a[3]=4a[4]=5例1將1,2,3,4,5分別存入數(shù)組a,并打印這些數(shù)組元素。一維數(shù)組應(yīng)用例2對(duì)數(shù)組a順序賦值,逆序輸出。#include<stdio.h>voidmain(){inti,a[5];for(i=0;i<=4;i++)a[i]=i;for(i=4;i>=0;i--)printf(“a[%d]=%d\n",i,a[i]);}運(yùn)行結(jié)果:a[4]=4a[3]=3a[2]=2a[1]=1a[0]=001234a[0]a[1]a[2]a[3]a[4]系統(tǒng)不檢查數(shù)組元素下標(biāo)超過(guò)定義范圍(下標(biāo)越界)問(wèn)題,屬隱形錯(cuò)誤printf("a[%d]=%d\n",5,a[5]);printf("a[%d]=%d\n",6,a[6]);}一維數(shù)組應(yīng)用例3統(tǒng)計(jì)全班某門(mén)功課期末考試的平均分和最高分用簡(jiǎn)單變量實(shí)現(xiàn)(首先求總分)#defineN30//設(shè)全班人數(shù)為30voidmain(){inti,sum=0,high=0,score;floataverage;printf(“inputeveryone’sscore.\n”);fori=0;i<N;i++)//讀成績(jī)求和判斷最高分

{scanf(“%d”,&score);sum+=score;if(score>high)high=score;}average=(float)sum/N;//精度高

printf(“average=%f\n”,average);printf(“highest=%d\n”,high);}一個(gè)變量只保存一個(gè)數(shù),讀到第十個(gè)成績(jī)時(shí),前面九個(gè)成績(jī)沒(méi)有存,只有總分。分析:定義一個(gè)整型讀入數(shù)組score[30],存放全班每位同學(xué)的分?jǐn)?shù)用for循環(huán)讀入分?jǐn)?shù),并求出總分和平均分定義變量high存放當(dāng)前得到的“最高分”,每得到一個(gè)分?jǐn)?shù)都要與high值比較,若比high大,則放入high中,這樣最后high的值一定是最高分#defineN30voidmain(){inti,sum=0,high=0,score[N];floataverage;printf(“inputeveryone’sscore.\n”);for(i=0;i<N;i++)scanf(“%d”,&score[i]);

for(high=score[0],i=0;i<N;i++){sum+=score[i];if(score[i]>high)high=score[i];}average=(float)sum/N;printf(“average=%f\n”,average);printf(“highest=%d\n”,high);}可輸出每位學(xué)生的成績(jī)for(high=0,i=0;i<N;i++){scanf(“%d”,&score[i]);sum+=score[i];if(score[i]>high)high=score[i];}補(bǔ)充:找出n個(gè)數(shù)中超出平均值的那些數(shù),用簡(jiǎn)單變量能實(shí)現(xiàn)嗎?9854209854208959492909998542095848280888420589552045894402458922結(jié)果第㈠輪㈡㈢㈣開(kāi)始㈤024589例4用冒泡法對(duì)6個(gè)數(shù)排序(由小到大)冒泡法的思路是:將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前面比較5次比較4次比較1次如此進(jìn)行,6個(gè)數(shù)比較5輪,可推知若有n個(gè)數(shù),則進(jìn)行n-1輪比較在第j輪比較中要進(jìn)行n-j次兩兩比較(因?yàn)橐延衘-1個(gè)數(shù)排好序)例4用冒泡法對(duì)6個(gè)數(shù)排序(由小到大)冒泡法的思路是:將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前頭voidmain(){ inta[7];inti,j,t; printf(“input6numbers:\n”);

for(i=1;i<7;i++)//----inputdata------ scanf(“%d”,&a[i]);//沒(méi)有使用a[0]元素

for(j=1;j<=5;j++)//N個(gè)數(shù)排序,進(jìn)行j=N-1輪比較

for(i=1;i<=6-j;i++)//每輪進(jìn)行N-j次兩兩比較

if(a[i]>a[i+1])(因?yàn)橐延衘-1個(gè)數(shù)排好序)

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

printf(“thesortednumbers:\n”);

for(i=1;i<7;i++)//----outputdata------ printf(“%d__”,a[i]);}一維數(shù)組應(yīng)用例5:選擇法排序//--------------sort-------------------for(i=0;i<num;i++){max=data[i];n=i;for(j=i;j<num;j++){if(data[j]>max){max=data[j]; n=j;}}temp=data[i];data[i]=data[n];data[n]=temp;} //----------inputdata--------------

for(i=0;i<100;i++){scanf("%f",&data[i]);if(data[i]==9999)break;num=i;//-----datanumber}//----------outputdata--------------

for(i=0;i<num;i++)printf("%f\n",data[i]);思路:1.確定搜索范圍;(保存輸入數(shù)據(jù)個(gè)數(shù))2.遍歷數(shù)據(jù),選出其中的最大值;3.將最大的數(shù)據(jù)和最前面的數(shù)據(jù)交換;4.搜索范圍減小一個(gè);5.重復(fù)步驟2和3,直至排序完畢。二維數(shù)組在C語(yǔ)言中,數(shù)組的元素還可以是數(shù)組,這樣就構(gòu)成二維數(shù)組。二維數(shù)組看作是一種特殊的一維數(shù)組,其元素是一維數(shù)組,即“數(shù)組的數(shù)組”以此類推,還可以構(gòu)成三維數(shù)組、四維數(shù)組(稱多維數(shù)組)等。二維數(shù)組是多維數(shù)組中最簡(jiǎn)單最常用的數(shù)組,它代表多維數(shù)組的基本特征。二維數(shù)組定義如:inta[3][4]a為3×4(3行4列)的整型數(shù)組,有12個(gè)元素。概念上可理解a[3][4]是3行4列的矩陣在此基礎(chǔ)上擴(kuò)展,可類推多維數(shù)組的定義如:floatx[2][3][4];/*可想象成空間矩陣*/inta[3,4],b(3)(4),c(2,3)行列層類型標(biāo)識(shí)符數(shù)組名[常量表達(dá)式][常量表達(dá)式]二維數(shù)組定義可將二維數(shù)組看作是一種特殊的一維數(shù)組,其元素是一維數(shù)組。如:inta[3][4];將a數(shù)組看作是一個(gè)一維數(shù)組,有3個(gè)元素:a[0]a[1]a[2]每個(gè)元素又是包含4個(gè)元素的一維數(shù)組a[0]a[1]a[2]a[0][0]a[0][1]a[0][2]a[0][3]aa[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3][4][4][4]a[0]、a[1]、a[2]

——

一維數(shù)組名二維數(shù)組存儲(chǔ)在內(nèi)存中,二維數(shù)組中元素排列的順序——按行存放如:floatb[2][3];//一個(gè)float變量占4個(gè)字節(jié)b[0][0]b[0][1]b[0][2]b[1][0]b[1][1]b[1][2]右邊的下標(biāo)比左邊下標(biāo)變化快。二維數(shù)組引用數(shù)組元素引用形式:

數(shù)組名[下標(biāo)][下標(biāo)]

如:inta[2][4],b[3][4];//數(shù)組定義,分配空間

//數(shù)組元素引用,對(duì)數(shù)據(jù)進(jìn)行處理

a[2-1][2*2-1]下標(biāo)可以是整型表達(dá)式

b[1][2]=a[1][3]/2數(shù)組元素可出現(xiàn)在表達(dá)式中注意:下標(biāo)的最大取值,即數(shù)組定義與數(shù)組元素引用的區(qū)別使用數(shù)組元素時(shí),應(yīng)注意不要超出其定義的范圍;如:inta[2][3];a[2][3]=5;

a[1][2]=5;尺寸位置二維數(shù)組的初始化1.完全賦初值(含省略形式)如:inta[2][3]={1,2,3,4,5,6};按數(shù)組元素排列的順序如:inta[2][3]={{1,2,3},{4,5,6}};按行如:inta[][3]={1,2,3,4,5,6};省略第一維長(zhǎng)度,如:inta[][3]={{1,2,3},{4,5,6}};不能省第二維長(zhǎng)度2.部分賦初值如:inta[2][3]={2,5,3};按存放順序

inta[2][3]={{2,5},{3}};按行賦值(注意區(qū)別)inta[3][3]={{2,5},{},{3}};250000300

123456

103a=0000100inta[][3]={{1,0,3},{},{0,10}};

分行賦值253000250300二維數(shù)組應(yīng)用二維數(shù)組輸入輸出用二重循環(huán)來(lái)實(shí)現(xiàn)用循環(huán)變量的值控制數(shù)組元素的下標(biāo)#include<stdio.h>voidmain(){inta[3][3],i,j;

for(i=0;i<=2;i++)for(j=0;j<=2;j++)/*---input123456789---*/

scanf(“%d”,&a[i][j]);

for(i=0;i<=2;i++){for(j=0;j<=2;j++) if((i+j)%2)printf(“%5d”,a[i][j]);printf(“\n”);}}

for(i=0;i<=2;i++)for(j=0;j<=2;j++)scanf(“%d”,&a[i][j]);內(nèi)循環(huán)比外循環(huán)變化快,跳躍賦值for(i=0;i<=2;i++){for(j=0;j<=2;j++)if((i+j)%2)printf(“%5d”,a[i][j]);輸入:123456789輸出:2468若輸出:13579應(yīng)如何處理二維數(shù)組應(yīng)用思考:如何修改程序輸出主對(duì)角線上的數(shù)據(jù)如何輸出次對(duì)角線的元素j=n-1-i

二維數(shù)組行和列元素互換(轉(zhuǎn)置)算法:a數(shù)組初始化并輸出P152

用二重循環(huán)進(jìn)行轉(zhuǎn)置

b[j][i]=a[i][j]

輸出b數(shù)組#include<stdio.h>voidmain(){inta[3][3],i,j;

for(i=0;i<=2;i++)for(j=0;j<=2;j++)/*---input123456789---*/

scanf(“%d”,&a[i][j]);

for(i=0;i<=2;i++){for(j=0;j<=2;j++)printf(“%5d”,a[i][j]);printf(“\n”);}}

for(i=0;i<=2;i++)printf(“%5d”,a[i][i]);將一個(gè)二維數(shù)組逆序放在另一個(gè)二維數(shù)組中,并分別打印出來(lái)for(i=0;i<N;i++){for(j=0;j<M;j++)printf("%5d",a[i][j]);printf("\n");}printf("\n\n");

for(i=0;i<N;i++){for(j=0;j<M;j++)printf("%5d",b[i][j]);printf("\n");}}#defineN3#defineM3#include<stdio.h>voidmain(){inta[N][M];intb[N][M],i,j;printf("arraya:\n");for(i=0;i<N;i++)for(j=0;j<M;j++){scanf("%d",&a[i][j]);b[N-i-1][M-j-1]=a[i][j];}習(xí)題已有排好序的數(shù)組(有N個(gè)元素),輸入一數(shù)據(jù),按原序規(guī)律插入數(shù)組中打印初始數(shù)組(由小到大排列)輸入待插入數(shù)值data與數(shù)組元素比較逐個(gè)比較直到找到數(shù)組元素a[i]>data,將data插在a[i]處將原第i個(gè)元素之后的所有元素下標(biāo)依次增1若大于末尾數(shù)組元素則將data插入數(shù)組末尾輸出結(jié)果for(i=0;i<N;i++)scanf("%d",&a[i]);printf(“Insertdata:");

scanf("%d",&data);for(i=0;i<N;i++)printf("%5d",a[i]);for(i=0;i<N;i++)if(a[i]>data){t1=a[i]; a[i]=data; for(j=i+1;j<N+1;j++){t2=a[j];a[j]=t1;t1=t2;}}if(data>a[i-1])a[i]=data;for(i=0;i<N+1;i++)printf("%5d",a[i]);字符數(shù)組在C語(yǔ)言中,沒(méi)有專門(mén)的字符串變量,將字符串存入字符數(shù)組處理字符數(shù)組:用來(lái)存放字符數(shù)據(jù)的數(shù)組其中一個(gè)元素存放一個(gè)字符。一維字符數(shù)組:存放一個(gè)字符串二維字符數(shù)組:存放多個(gè)字符串(行數(shù)是字符串的個(gè)數(shù))字符數(shù)組的定義字符數(shù)組是數(shù)組的一個(gè)特殊情況,定義方法:char數(shù)組名[常量表達(dá)式](一維)char數(shù)組名[常量表達(dá)式1][常量表達(dá)式2](二維)

例:charn[5];n[0]=‘C’;n[1]=‘H’;n[2]=‘I’;n[3]=‘N’;n[4]=‘A’;

字符型與整型互相通用

intn[5];n[0]=‘C’;n[1]=‘H’;n[2]=‘I’;n[3]=‘N’;n[4]=‘A’;效果同上,但浪費(fèi)存儲(chǔ)空間CHINAn[0]n[1]n[2]n[3]n[4]字符數(shù)組的初始化1.按元素賦chara[5]={‘C’,‘H’,‘I’,‘N’,‘A’};charc[5]={‘C’,‘H’,‘I’};charb[5]={‘C’,‘H’,‘I’,‘N’,‘W’,‘U’};

初值個(gè)數(shù)大于數(shù)組長(zhǎng)度,編譯時(shí)將出錯(cuò)chard[]={‘C’,‘H’,‘I’,‘N’,‘A’}系統(tǒng)自動(dòng)確認(rèn)其長(zhǎng)度為5C中將字符串作為字符數(shù)組來(lái)處理,為測(cè)定實(shí)際字符串長(zhǎng)度,C語(yǔ)言中規(guī)定‘\0’為字符串結(jié)束標(biāo)志,遇到第一個(gè)‘\0’,即認(rèn)為該字符串結(jié)束。‘\0’既無(wú)動(dòng)作,也不顯示注意:定義字符數(shù)組的長(zhǎng)度與字符串的長(zhǎng)度是兩個(gè)概念字符串的長(zhǎng)度:第一個(gè)‘\0’以前字符的個(gè)數(shù)CHI\0\0\0空字符,ASCII為0BOY\0\0字符數(shù)組的初始化2.使用字符串常量給字符數(shù)組賦初值

——直觀方便符合習(xí)慣chara[6]={“CHINA”};或chara[6]=“CHINA”;或chara[]=“CHINA”;注意與chara[]={‘C’,‘H’,‘I’,‘N’,‘A’,‘\0’};等價(jià)長(zhǎng)度為6,系統(tǒng)自動(dòng)加\0空字符CHINA\0注:以字符串方式賦值時(shí),須保證數(shù)組元素個(gè)數(shù)≥字符個(gè)數(shù)+1

(字符串后面自動(dòng)加‘\0’

)exp0706#include<stdio.h>voidmain(){chara[7]={'a','p','p','l','e'};charb[7]={"apple"};charc[7];//沒(méi)有初始化

inti;for(i=0;i<=6;i++){printf("%5c%5c%5c",a[i],b[i],c[i]);printf("\n");}for(i=0;i<=6;i++){printf("%5d%5d%5d",a[i],b[i],c[i]);printf("\n");}}字符數(shù)組的初始化字符串給字符數(shù)組賦初值,系統(tǒng)自動(dòng)加空字符‘\0’(終結(jié)符)‘’空格字符,ASCII編碼為32‘\0’空字符,ASCII編碼為0,兩者均無(wú)法打印出來(lái)#include<stdio.h>voidmain(){charstr[]={“Seeyou!"};inti=0;while(str[i]!=‘\0’){printf("%c=%d\n",str[i],str[i]);i=i+1;}printf("%c=%d\n",str[i],str[i]);}S=83e=101e=101=32y=121o=111u=117!=33=0字符數(shù)組的引用與輸入輸出可以逐個(gè)引用字符串中的單個(gè)字符(數(shù)組元素)也可以一次引用整個(gè)字符串(數(shù)組)——數(shù)值數(shù)組不可以1.逐個(gè)字符數(shù)組元素輸入輸出%c2.整個(gè)字符串(數(shù)組)輸入輸出%s

數(shù)組名代表數(shù)組的首地址注:用%s輸出,只要遇‘\0’就結(jié)束用%s輸入,遇空格或回車認(rèn)為輸入結(jié)束對(duì)一維數(shù)組,數(shù)組名就是地址對(duì)二維字符數(shù)組,只寫(xiě)行下標(biāo),表示當(dāng)前行的首地址main(){inti;chara[10]=“CHINA”;for(i=0;i<10;i++)printf(“%c”,a[i]);printf(“\n”);printf(“%s\n”,a);}chara[6];scanf(“%c”,&a[0]);scanf(“%s”,a);//輸入:chinacharstr[3][4]={{“#”},{“##”},{“###”}};printf(“%s\n%s\n%s\n”,str[0],str[1],str[2]);######字符串處理函數(shù)字符串專用輸入函數(shù)——gets(str)str表示字符數(shù)組從鍵盤(pán)輸入一個(gè)字符串到字符數(shù)組與scanf的主要區(qū)別是:可以輸入空格。遇“

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論