![預(yù)習(xí)嵌入式課程chapter6數(shù)組_第1頁(yè)](http://file4.renrendoc.com/view/c3a444e75f1ed001d8cab3772a1903c4/c3a444e75f1ed001d8cab3772a1903c41.gif)
![預(yù)習(xí)嵌入式課程chapter6數(shù)組_第2頁(yè)](http://file4.renrendoc.com/view/c3a444e75f1ed001d8cab3772a1903c4/c3a444e75f1ed001d8cab3772a1903c42.gif)
![預(yù)習(xí)嵌入式課程chapter6數(shù)組_第3頁(yè)](http://file4.renrendoc.com/view/c3a444e75f1ed001d8cab3772a1903c4/c3a444e75f1ed001d8cab3772a1903c43.gif)
![預(yù)習(xí)嵌入式課程chapter6數(shù)組_第4頁(yè)](http://file4.renrendoc.com/view/c3a444e75f1ed001d8cab3772a1903c4/c3a444e75f1ed001d8cab3772a1903c44.gif)
![預(yù)習(xí)嵌入式課程chapter6數(shù)組_第5頁(yè)](http://file4.renrendoc.com/view/c3a444e75f1ed001d8cab3772a1903c4/c3a444e75f1ed001d8cab3772a1903c45.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)組回顧for循環(huán)逗號(hào)運(yùn)算符嵌套循環(huán)while和do-while循環(huán)goto、break和continue語(yǔ)句exit()函數(shù)目標(biāo)理解數(shù)組的存儲(chǔ)機(jī)制掌握數(shù)組的定義和使用掌握數(shù)組的初始化理解二維和多維數(shù)組什么時(shí)候需要使用數(shù)組當(dāng)我們需要存儲(chǔ)一個(gè)分?jǐn)?shù)時(shí),可以聲明變量:float
score;但是當(dāng)我們需要存放30個(gè)人的分?jǐn)?shù)時(shí),應(yīng)該怎么辦?數(shù)組是具有相同類(lèi)型的數(shù)據(jù)元素的集合。數(shù)組中的元素在內(nèi)存中連續(xù)存放。例如:float
score[30];聲明數(shù)組數(shù)組元素和索引數(shù)組元素由索引或下標(biāo)標(biāo)識(shí)數(shù)組維數(shù)由索引數(shù)決定索引存放從0
開(kāi)始的整數(shù)一個(gè)包含11
個(gè)元素的數(shù)組player[0]player[1]player[2]…
…player[10]聲明數(shù)組2-1數(shù)組的特性必須在使用前定義存儲(chǔ)類(lèi)型(static
register auto
extern
…)數(shù)據(jù)類(lèi)型數(shù)組名數(shù)組大小注意:數(shù)組名的命名規(guī)范和變量的命名規(guī)范一樣。這里數(shù)組長(zhǎng)度必須是一個(gè)常量表達(dá)式,且值為正整數(shù)聲明數(shù)組2-2聲明數(shù)組的格式:存儲(chǔ)類(lèi)型例如:#define
N
5數(shù)據(jù)類(lèi)型數(shù)組名[數(shù)組長(zhǎng)度];int
player[N];包括的數(shù)組元素:player[0],player[1],player[2]float
salary[2+3];包括的數(shù)組元素:salary[0],salary[1],salary[2],salary[3],salary[4]而int
n=10;–
char
name[n];則是不正確的(不能在方括號(hào)中用變量來(lái)表示元素的個(gè)數(shù))數(shù)組的規(guī)范所有數(shù)組元素具有相同的類(lèi)型允許使用變量的地方都可以使用數(shù)組元素?cái)?shù)組的下標(biāo)可以是有有效值的整型表達(dá)式在C語(yǔ)言中使用數(shù)組2-1在C語(yǔ)言中處理數(shù)組的方式與處理變量的方式不同:即使兩個(gè)數(shù)組的類(lèi)型和大小相同,也不能檢驗(yàn)其是否相等不能直接將一個(gè)數(shù)組賦給另一個(gè)數(shù)組除了數(shù)組聲明時(shí)初始化外,不能在程序其它地方對(duì)數(shù)組進(jìn)行整體賦值數(shù)組的初始化#include
<stdio.h>int
c[5];intg;void
main(){static
int
a[5],s;int
b[5],l;inti;printf("數(shù)組a的元素值:\n");for(i=0;i<5;i++)printf("%d\t",a[i]);//靜態(tài)變量會(huì)初始化為0printf("\n數(shù)組b的元素值:\n");for(i=0;i<5;i++)printf("%d\t",b[i]);//局部變量會(huì)初始化為隨機(jī)值
printf("\n數(shù)組c的元素值:\n");for(i=0;i<5;i++)printf("%d\t",c[i]);//全局變量會(huì)初始化為0printf("g=%d
s=%d
l=%d",g,s,l);}初始化數(shù)組1(給數(shù)組元素賦值)數(shù)組也可以進(jìn)行初始化,數(shù)組的初始化就是在數(shù)組聲明時(shí)對(duì)所有的數(shù)組元素賦初值。extern和static數(shù)組元素自動(dòng)初始化為0聲明數(shù)組時(shí)對(duì)數(shù)組元素賦以初值–
舉例:int
data[5]=
{2,4,6,8,10};可以給一部分元素賦值,其它元素自動(dòng)賦值為0–
int
data[5]
=
{2,4,6};–
局部變量的數(shù)組,如果沒(méi)賦初值,則會(huì)自動(dòng)賦隨機(jī)值對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度 例如:int
data[]={11,23,22,45,66};此時(shí)數(shù)組的元素個(gè)數(shù)為5初始化數(shù)組24)使用for
循環(huán)為數(shù)組元素賦值#include
<stdio.h>void
main(){float
score[5];int
i;for(i=0;
i<5;
i++)score[i]=i;//此處若改為使用鍵盤(pán)輸入5個(gè)分?jǐn)?shù)呢?for(i=0;i<5;i++)printf(“%d\t”,score[i]);}在C語(yǔ)言中使用數(shù)組例1:從鍵盤(pán)輸入5個(gè)數(shù)存入數(shù)組,計(jì)算5個(gè)數(shù)之和并輸出.在C語(yǔ)言中使用數(shù)組例1:從鍵盤(pán)輸入5個(gè)數(shù)存入數(shù)組,計(jì)算5個(gè)數(shù)之和并輸出#include
<stdio.h>void
main(){ int
cnt,num[5],sum;for(cnt=0,sum=0;cnt<5;cnt++){printf("enter
the
%d
number:",cnt+1);scanf("%d",&num[cnt]);sum+=num[cnt];}printf("the
sum
of
the
five
numbers
is
%d",sum);}在C語(yǔ)言中使用數(shù)組練習(xí)1:從鍵盤(pán)輸入10個(gè)數(shù),計(jì)算10個(gè)數(shù)的平均值,并求最大值。例1
答案:#include
<stdio.h>void
main()
{int
ary[10];int
i,
total,
high,aver;for(i=0;
i<10;
i++){
printf(“Entervalue:%d:”,i+1);scanf("%d",&ary[i]);
}high
=
ary[0];for(i=1;
i<10;
i++){
if(ary[i]
>
high)high
=
ary[i];}for(i=0,total=0;
i<10;
i++)total
=
total
+
ary[i];aver
=
total/10;printf(“\n
The
max
is
%d\nThesum
is
%d\n”
high
aver);聲明賦值比較,求最大值從鍵盤(pán)輸入10個(gè)數(shù),計(jì)算10個(gè)數(shù)的平均值,并求最大值。練習(xí)2:要求計(jì)算Fibonacci數(shù)列的前20個(gè)數(shù),并輸出注意:數(shù)列的前兩個(gè)數(shù)都是1,從第三個(gè)數(shù)開(kāi)始,每個(gè)數(shù)是前兩個(gè)數(shù)之和。11
2
3
5
8
13
…練習(xí)2
答案:要求計(jì)算Fibonacci數(shù)列的前20個(gè)數(shù),并輸出注意:數(shù)列的前兩個(gè)數(shù)都是1,從第三個(gè)數(shù)開(kāi)始,每個(gè)數(shù)是前兩個(gè)數(shù)之和。void
main(){ int
i;int
f[20]={1,1};for
(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if
(i%5==0)
printf("\n");printf("%12d",f[i]);}}字符串/字符數(shù)組2-1字符數(shù)組是用來(lái)存放多個(gè)字符的。字符串是以”\0”結(jié)尾的字符型數(shù)組字符串中每個(gè)字符占一個(gè)字節(jié)void
main(){char
alpha[26];int
i,
j;for(i=65,j=0;
i<91;
i++,j++){if(j%5==0)printf("\n
");alpha[j]
=
i;printf("
%c
",
alpha[j]);}}字符串/字符數(shù)組2-2ary[0]ary[1]ary[2]ary[3]ary[4]從鍵盤(pán)輸入字符串存入字符數(shù)組中,之后顯示該字符串:#include
<stdio.h>void
main(){char
ary[5];int
i=2;printf("\nEnter
string
:
");scanf("%s",ary); //當(dāng)輸入的個(gè)數(shù)(含回車(chē))>5時(shí),會(huì)把后面的變量賦給,如果大于這段代碼的??臻g,就會(huì)出現(xiàn)段錯(cuò)誤printf("\n
The
string
is
%s
\n\n",
ary);for
(i=0;
i<7;
i++)printf("\t%c",
ary[i]);printf("\ni=%d",i);}字符串函數(shù)在C語(yǔ)言中沒(méi)有用于字符串計(jì)算的運(yùn)算符,主要是采用函數(shù)進(jìn)行計(jì)算:名稱作用strcpy(s1,s2)將s2復(fù)制到s1strcat(s1,s2)將s2附加到s1的末尾strlen(s1)返回s1的長(zhǎng)度strcmp(s1,s2)判斷s1和s2是否相等strchr(s1,ch)返回s1中第一次出現(xiàn)字符ch的位置(內(nèi)存地址)strst在r(標(biāo)s1準(zhǔn),s頭2)文件返回s1中第一次出現(xiàn)字符串s2的位置(內(nèi)存<地s址tri)ng.h>中定義strcpy#include"string.h"main(){char
st1[15],st2[]="CLanguage";strcpy(st1,st2);puts(st1);printf("\n");}strcmp格式:strcmp(字符數(shù)組名1,字符數(shù)組名2)功能:按照ASCII碼順序比較兩個(gè)數(shù)組中的字符串,并由函數(shù)返回值返回比較結(jié)果。字符串1=字符串2,返回值=0;字符串1〉字符串2,返回值〉0;(一般是1)字符串1〈字符串2,返回值〈0。(一般是-1)strcmp#include"string.h"main(){ int
k;static
char
st1[15],st2[]="C
Language";printf("input
a
string:\n");gets(st1);k=strcmp(st1,st2);if(k==0)
printf("st1=st2\n");if(k>0)
printf("st1>st2\n");if(k<0)
printf("st1<st2\n");}strlen格式:strlen(字符數(shù)組名)功能:測(cè)字符串的實(shí)際長(zhǎng)度(不含字符串結(jié)束標(biāo)志
‘\0’)
并作為函數(shù)返回值。#include"string.h"main(){ int
k;static
char
st[]="C
language";k=strlen(st);printf("The
lenth
of
the
string
is
%d\n",k);}Strchr、strstr#include
<stdio.h>#include
<string.h>main(){char*k1,*k2;int
i1,i2;chara='g';static
char
st1[]="language";static
char
st2[]="age";k1=strchr(st1,a);i1=k1-st1;????}k2=strstr(st1,st2);i2=k2-st1;//printf("k1=
%dst1=%d
偏移%d\n",k1,st1,i1);//內(nèi)存地址printf("k2=%d st1=%d
偏移%d\n\n",k2,st1,i2);//偏移地址練習(xí)2:從鍵盤(pán)輸入一個(gè)字符串,若是“end”則結(jié)束程序,否則繼續(xù)輸入練習(xí)2
答案:從鍵盤(pán)輸入一個(gè)字符串,若是“End”則結(jié)束程序,否則繼續(xù)輸入#include
<stdio.h>#include
<string.h>void
main(){char
flag[10];do{printf("please
Enter
a
string:");scanf("%s",flag);}while(strcmp(flag,“end")!=0);}二維數(shù)組最常用的多維數(shù)組可以看成是由多個(gè)一維數(shù)組組成的數(shù)組類(lèi)似于一個(gè)由行和列組成的表格二維數(shù)組的聲明方式:int
temp[4][3];//4行3列數(shù)據(jù)二維數(shù)組的初始化3-1int
ary[3][4]
={{1,2,3,4},{5,6,7,8},{9,10,11,12}};ary0123012341567829101112二維數(shù)組的初始化3-2int
ary[3][4]={{1,2,3},{4,5,6},{7,8,9}};ary0123012301456027890數(shù)組練習(xí):用數(shù)組存放3個(gè)人的考試成績(jī)(每人4科),從鍵盤(pán)輸入,最后顯示到屏幕上:數(shù)組示例1:用數(shù)組存放3個(gè)人的考試成績(jī)(每人4科),從鍵盤(pán)輸入,最后顯示到屏幕上:#include
<stdio.h>void
main(){float
score[3][4];int
i,j;for(i=0;i<3;i++){for(j=0;j<4;j++){printf("第%d人的科目%d",i+1,j+1);scanf("%f",&score[i][j]);}}for(i=0;i<3;i++){for(j=0;j<4;j++){printf("第%d人的科目%d
是%f\t",i+1,j+1,score[i][j]);}printf("\n\n");}}數(shù)組示練習(xí)2:從鍵盤(pán)輸入多個(gè)字符串,直到輸入的是
“END”,升序排列字符串:數(shù)組示練習(xí)
2
答案:#include
<stdio.h>#include
<string.h>void
main
(){int
i,
n
=
0;int
item;char
x[10][12];char
temp[12];printf("Enter
string\n\n");printf("Type
'END'
whenover\n\n");do{printf("String
%d:",n+1);scanf("%s",
x[n]);}while(strcmp(x[n++],"END"));n
=
n
-1;for(item=0;
item<n-1;
++item){for(i=item+1;
i<n;
i++){if(strcmp
(x[item],
x[i])
>0){strcpy
(temp,
x[item]);strcpy
(x[item],
x[i]);strcpy
(x[i],
temp);}}}printf("Recorded
list
ofstrings:\n");for(i
=
0;
i
<
n
;
++i){printf("\nString
%d
is%s",i+1,x[i]);}}排序從鍵盤(pán)輸入多個(gè)字符串,直到輸入的是“END”,升序排列字符串:補(bǔ)充:#include
"stdio.h"void
main(){int
k;//char
a[100]=“hkjhf”;//整體賦值,則字符串后的全自動(dòng)為’\n’,即ASIC碼為0。char
a[100];//”sdafsadf\0”printf("please
input
words:");scanf(“%s”,a);//逐個(gè)賦值,則字符串后的自動(dòng)加一個(gè)’\0’,其他的是隨機(jī)值。printf("%d
%d
%d
%d\n",a[3],a[6],a[80],a[99]);}作業(yè)1:十進(jìn)制轉(zhuǎn)二進(jìn)制#include<stdio.h>#include<string.h>//十進(jìn)制轉(zhuǎn)二進(jìn)制
void
main(){int
num;int
arr[100];//用于存放010101int
i=0;//數(shù)組下標(biāo)printf("請(qǐng)輸入一個(gè)正整數(shù)");scanf("%d",&num);//除2取余商0為止倒序輸出while(num!=0)//商0為止{arr[i]=num%2;//取余num=num/2;//除2,減少一半,如果不為0則繼續(xù)除2取余
i++;//數(shù)組下標(biāo)增加一個(gè)}i--;//倒序輸出
for(;i>=0;i--)printf("%d",arr[i]);printf("\n");}作業(yè)2:接受鍵盤(pán)輸入一個(gè)字符串,將之反轉(zhuǎn)如abcd->dcba#include
"stdio.h"#include
"string.h"voidmain(){char
names[100];char
names2[100];puts("請(qǐng)輸入一個(gè)字符串");gets(names);int
j=0;int
i=strlen(names);printf("strlennames=%d\n",i);//方法一/*for(
i=i-1;i>=0;i--){names2[j]=names[i];j++;}names2[j]='\0';puts("倒序后的結(jié)果如下:");printf("%s\n",names2);
//puts(names[i]);//==*///方法二
for(i=i-1;i>=0;i--)putchar(names[i]);}作業(yè)3:用rand()產(chǎn)生10個(gè)5--20期間的隨機(jī)整數(shù),不能有重復(fù)項(xiàng),如果重復(fù)則重新產(chǎn)生隨機(jī)數(shù)#include
<stdio.h>
#include
<string.h>
#include<stdlib.h>
#include
<math.h>
#include
<time.h>
void
rand10(void);voidmain(){rand10();}//產(chǎn)生10個(gè)5到20之間的隨機(jī)整數(shù),不能有重復(fù)項(xiàng)
void
rand10(void){int
isRepeat(int
a[],int
num);//此涵數(shù)先使用,后定義,故在此聲明此涵數(shù)
intarr[10];srand((unsigned)time(
NULL));//Sets
a
random
starting
point.給rand輸入一個(gè)種子for(int
i=0;i<10;i++)//產(chǎn)生10個(gè)隨機(jī)數(shù){int
num=rand()%16+5;//先產(chǎn)生一個(gè)5到20之間的隨機(jī)數(shù)while(isRepeat(arr,num))//如果重復(fù),則{num=rand()%16+5;//則重新產(chǎn)生此隨機(jī)數(shù)}arr[i]=num;//把不重復(fù)的隨機(jī)數(shù)放入數(shù)組printf("%d
",num);}}int
isRepeat(int
a[],int
num){for(int
i=0;i<10;i++){if(a[i]==num)return
1;
//1表示重復(fù),如果有任意一個(gè)相等則重復(fù)}return
0;//0表示不重復(fù),//如果全部比較一次后還沒(méi)發(fā)現(xiàn)重復(fù)項(xiàng)則返回0表示沒(méi)有重復(fù)項(xiàng)}作業(yè)4:在主涵數(shù)中輸入圓的半徑,定義一個(gè)函數(shù),計(jì)算圓的面積和周長(zhǎng),然后又在主函數(shù)中輸出圓的面積和周長(zhǎng)double
l,s;void
round
(double
x);//函數(shù)聲明void
main(){round(8);printf("\nl
=
%f
s
=%f",l,s);}void
round
(double
x){l=2*3.14*x;s=x*x*3.14;}作業(yè)5:實(shí)現(xiàn)自定義的string函數(shù):mystringfuntion.cpp//mystrlen
mystrcmp
mystrcpy
mystrcat??????#include
<stdio.h>
#include
<string.h>
#include
<stdlib.h>
#include<assert.h>//int
isRepeat(int
a[],int
num);int
mystrlen(char
a[]){????????int
i=0;
while(a[i]!='\0'){i++;}return
i;}??????????????????int
mystrcmp(char
a[],char
b[]){int
alen=mystrlen(a);
int
blen=mystrlen(b);
int
i=0;//字符串下標(biāo)int
maxlen=alen>blen?alen:blen;
while(i<maxlen)//逐個(gè)比較//求出最長(zhǎng)字符串的長(zhǎng)度{if(a[i]>b[i])//如果前面比后面大,返回1return
1;else
if(a[i]<b[i])//如果前面比后面小,返回-1return
-1;else
if(a[i]==b[i])//如果前面與后面相同,i++比較下一個(gè)i++;}return
0;//如果全部比較一次后還沒(méi)分出大小,則返回0表示相等}????????????????????int
mystrcmp2(char
a[],char
b[]){int
i=0;//字符串下標(biāo)
while(1){if(a[i]>
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)天王補(bǔ)心丹市場(chǎng)調(diào)查研究報(bào)告
- 2025年熱封口帶行業(yè)深度研究分析報(bào)告
- 2024-2025年中國(guó)PSTN普通電話機(jī)行業(yè)市場(chǎng)運(yùn)營(yíng)現(xiàn)狀及投資規(guī)劃研究報(bào)告
- 采購(gòu)工作計(jì)劃模板
- 2025-2030年中國(guó)老鼠藥行業(yè)深度研究分析報(bào)告
- 高三普通班下學(xué)期班主任計(jì)劃
- 中國(guó)手寫(xiě)板市場(chǎng)競(jìng)爭(zhēng)策略及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 中國(guó)微型面包車(chē)市場(chǎng)全景評(píng)估及發(fā)展趨勢(shì)研究預(yù)測(cè)報(bào)告
- 2025年搪瓷制品相關(guān)日用品生產(chǎn)設(shè)備項(xiàng)目發(fā)展計(jì)劃
- 山東石油化工學(xué)院《與化學(xué)相關(guān)的法律法規(guī)知識(shí)簡(jiǎn)介》2023-2024學(xué)年第二學(xué)期期末試卷
- 一年級(jí)下冊(cè)勞動(dòng)《變色魚(yú)》課件
- 初驗(yàn)整改報(bào)告格式范文
- 商務(wù)星球版地理八年級(jí)下冊(cè)全冊(cè)教案
- 天津市河西區(qū)2024-2025學(xué)年四年級(jí)(上)期末語(yǔ)文試卷(含答案)
- 2023青島版數(shù)學(xué)三年級(jí)下冊(cè)全冊(cè)教案
- 2025年空白離婚協(xié)議書(shū)
- 校長(zhǎng)在行政會(huì)上總結(jié)講話結(jié)合新課標(biāo)精神給學(xué)校管理提出3點(diǎn)建議
- (2024)竹產(chǎn)業(yè)生產(chǎn)建設(shè)項(xiàng)目可行性研究報(bào)告(一)
- 《零起點(diǎn)學(xué)中醫(yī)》課件
- 2025年護(hù)理質(zhì)量與安全管理工作計(jì)劃
- 湖南大學(xué) 嵌入式開(kāi)發(fā)與應(yīng)用(張自紅)教案
評(píng)論
0/150
提交評(píng)論