版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)組回顧for循環(huán)逗號運(yùn)算符嵌套循環(huán)while和do-while循環(huán)goto、break和continue語句exit()函數(shù)目標(biāo)理解數(shù)組的存儲機(jī)制掌握數(shù)組的定義和使用掌握數(shù)組的初始化理解二維和多維數(shù)組什么時候需要使用數(shù)組當(dāng)我們需要存儲一個分?jǐn)?shù)時,可以聲明變量:float
score;但是當(dāng)我們需要存放30個人的分?jǐn)?shù)時,應(yīng)該怎么辦?數(shù)組是具有相同類型的數(shù)據(jù)元素的集合。數(shù)組中的元素在內(nèi)存中連續(xù)存放。例如:float
score[30];聲明數(shù)組數(shù)組元素和索引數(shù)組元素由索引或下標(biāo)標(biāo)識數(shù)組維數(shù)由索引數(shù)決定索引存放從0
開始的整數(shù)一個包含11
個元素的數(shù)組player[0]player[1]player[2]…
…player[10]聲明數(shù)組2-1數(shù)組的特性必須在使用前定義存儲類型(static
register auto
extern
…)數(shù)據(jù)類型數(shù)組名數(shù)組大小注意:數(shù)組名的命名規(guī)范和變量的命名規(guī)范一樣。這里數(shù)組長度必須是一個常量表達(dá)式,且值為正整數(shù)聲明數(shù)組2-2聲明數(shù)組的格式:存儲類型例如:#define
N
5數(shù)據(jù)類型數(shù)組名[數(shù)組長度];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];則是不正確的(不能在方括號中用變量來表示元素的個數(shù))數(shù)組的規(guī)范所有數(shù)組元素具有相同的類型允許使用變量的地方都可以使用數(shù)組元素?cái)?shù)組的下標(biāo)可以是有有效值的整型表達(dá)式在C語言中使用數(shù)組2-1在C語言中處理數(shù)組的方式與處理變量的方式不同:即使兩個數(shù)組的類型和大小相同,也不能檢驗(yàn)其是否相等不能直接將一個數(shù)組賦給另一個數(shù)組除了數(shù)組聲明時初始化外,不能在程序其它地方對數(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)變量會初始化為0printf("\n數(shù)組b的元素值:\n");for(i=0;i<5;i++)printf("%d\t",b[i]);//局部變量會初始化為隨機(jī)值
printf("\n數(shù)組c的元素值:\n");for(i=0;i<5;i++)printf("%d\t",c[i]);//全局變量會初始化為0printf("g=%d
s=%d
l=%d",g,s,l);}初始化數(shù)組1(給數(shù)組元素賦值)數(shù)組也可以進(jìn)行初始化,數(shù)組的初始化就是在數(shù)組聲明時對所有的數(shù)組元素賦初值。extern和static數(shù)組元素自動初始化為0聲明數(shù)組時對數(shù)組元素賦以初值–
舉例:int
data[5]=
{2,4,6,8,10};可以給一部分元素賦值,其它元素自動賦值為0–
int
data[5]
=
{2,4,6};–
局部變量的數(shù)組,如果沒賦初值,則會自動賦隨機(jī)值對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度 例如:int
data[]={11,23,22,45,66};此時數(shù)組的元素個數(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;//此處若改為使用鍵盤輸入5個分?jǐn)?shù)呢?for(i=0;i<5;i++)printf(“%d\t”,score[i]);}在C語言中使用數(shù)組例1:從鍵盤輸入5個數(shù)存入數(shù)組,計(jì)算5個數(shù)之和并輸出.在C語言中使用數(shù)組例1:從鍵盤輸入5個數(shù)存入數(shù)組,計(jì)算5個數(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語言中使用數(shù)組練習(xí)1:從鍵盤輸入10個數(shù),計(jì)算10個數(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);聲明賦值比較,求最大值從鍵盤輸入10個數(shù),計(jì)算10個數(shù)的平均值,并求最大值。練習(xí)2:要求計(jì)算Fibonacci數(shù)列的前20個數(shù),并輸出注意:數(shù)列的前兩個數(shù)都是1,從第三個數(shù)開始,每個數(shù)是前兩個數(shù)之和。11
2
3
5
8
13
…練習(xí)2
答案:要求計(jì)算Fibonacci數(shù)列的前20個數(shù),并輸出注意:數(shù)列的前兩個數(shù)都是1,從第三個數(shù)開始,每個數(shù)是前兩個數(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ù)組是用來存放多個字符的。字符串是以”\0”結(jié)尾的字符型數(shù)組字符串中每個字符占一個字節(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]從鍵盤輸入字符串存入字符數(shù)組中,之后顯示該字符串:#include
<stdio.h>void
main(){char
ary[5];int
i=2;printf("\nEnter
string
:
");scanf("%s",ary); //當(dāng)輸入的個數(shù)(含回車)>5時,會把后面的變量賦給,如果大于這段代碼的棧空間,就會出現(xiàn)段錯誤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語言中沒有用于字符串計(jì)算的運(yùn)算符,主要是采用函數(shù)進(jìn)行計(jì)算:名稱作用strcpy(s1,s2)將s2復(fù)制到s1strcat(s1,s2)將s2附加到s1的末尾strlen(s1)返回s1的長度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碼順序比較兩個數(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ù)組名)功能:測字符串的實(shí)際長度(不含字符串結(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:從鍵盤輸入一個字符串,若是“end”則結(jié)束程序,否則繼續(xù)輸入練習(xí)2
答案:從鍵盤輸入一個字符串,若是“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ù)組可以看成是由多個一維數(shù)組組成的數(shù)組類似于一個由行和列組成的表格二維數(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個人的考試成績(每人4科),從鍵盤輸入,最后顯示到屏幕上:數(shù)組示例1:用數(shù)組存放3個人的考試成績(每人4科),從鍵盤輸入,最后顯示到屏幕上:#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:從鍵盤輸入多個字符串,直到輸入的是
“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]);}}排序從鍵盤輸入多個字符串,直到輸入的是“END”,升序排列字符串:補(bǔ)充:#include
"stdio.h"void
main(){int
k;//char
a[100]=“hkjhf”;//整體賦值,則字符串后的全自動為’\n’,即ASIC碼為0。char
a[100];//”sdafsadf\0”printf("please
input
words:");scanf(“%s”,a);//逐個賦值,則字符串后的自動加一個’\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("請輸入一個正整數(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)增加一個}i--;//倒序輸出
for(;i>=0;i--)printf("%d",arr[i]);printf("\n");}作業(yè)2:接受鍵盤輸入一個字符串,將之反轉(zhuǎn)如abcd->dcba#include
"stdio.h"#include
"string.h"voidmain(){char
names[100];char
names2[100];puts("請輸入一個字符串");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個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個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輸入一個種子for(int
i=0;i<10;i++)//產(chǎn)生10個隨機(jī)數(shù){int
num=rand()%16+5;//先產(chǎn)生一個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ù),如果有任意一個相等則重復(fù)}return
0;//0表示不重復(fù),//如果全部比較一次后還沒發(fā)現(xiàn)重復(fù)項(xiàng)則返回0表示沒有重復(fù)項(xiàng)}作業(yè)4:在主涵數(shù)中輸入圓的半徑,定義一個函數(shù),計(jì)算圓的面積和周長,然后又在主函數(shù)中輸出圓的面積和周長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)//逐個比較//求出最長字符串的長度{if(a[i]>b[i])//如果前面比后面大,返回1return
1;else
if(a[i]<b[i])//如果前面比后面小,返回-1return
-1;else
if(a[i]==b[i])//如果前面與后面相同,i++比較下一個i++;}return
0;//如果全部比較一次后還沒分出大小,則返回0表示相等}????????????????????int
mystrcmp2(char
a[],char
b[]){int
i=0;//字符串下標(biāo)
while(1){if(a[i]>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《培養(yǎng)契約精神》課件
- 養(yǎng)老院老人物品寄存制度
- 養(yǎng)老院老人緊急救援人員考核獎懲制度
- 向量的數(shù)量積課件
- 房屋封陽臺協(xié)議書(2篇)
- 《廣汽鄉(xiāng)鎮(zhèn)巡展》課件
- 2025年威海c1貨運(yùn)從業(yè)資格證模擬考試
- 《學(xué)會與父母溝通》課件-圖
- 2024年度物業(yè)維修基金管理合同示范3篇
- 2025年遵義貨運(yùn)資格證培訓(xùn)考試題
- pdca循環(huán)在護(hù)理教學(xué)中的應(yīng)用學(xué)習(xí)教案
- 鄭修1011美沙酮社區(qū)維持治療工作情
- 月之故鄉(xiāng)F調(diào) 五線譜正譜 鋼琴伴奏譜 高清晰
- 青島版一年級上冊數(shù)學(xué)知識點(diǎn)以及考點(diǎn)匯總總復(fù)習(xí)
- 第4章組合體視圖尺寸標(biāo)注
- 壓裝時壓入力的計(jì)算公式(整理)
- 論文熱連軋主傳動控制系統(tǒng)常見故
- 內(nèi)科護(hù)理學(xué)_肺炎
- 派爾科化工材料(啟東)有限公司年產(chǎn)75500噸年合成材料搬遷改造項(xiàng)目環(huán)境影響評價(jià)
- 匹茨堡睡眠質(zhì)量指數(shù)量表(PSQI)與評分方法
- 公安派出所檔案員崗位職責(zé)(共19篇)
評論
0/150
提交評論