版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
6.1一維數(shù)組(1)掌握一維數(shù)組的概念。(2)掌握一維數(shù)組的定義和引用。學習目標
6.1一維數(shù)組
TC
IDE一、一維數(shù)組的定義方法:類型標識符數(shù)組名[元素總數(shù)];
E.g.inta[5];charc[10];二、一維數(shù)組的初始化
1、數(shù)組的初始化:指在定義數(shù)組時對各元素指定初始值。
E.g.staticcharc[7]={‘c’,‘’,‘l’,‘a(chǎn)’,‘n’,‘g’,‘u’};1、全體初始化:staticinta[]={1,3,5,7,9};2、部分初始化staticinta[5]={1,3,5};
說明:(1)如果對數(shù)組的全部元素賦以初值,定義時可以不指定數(shù)組長度(系統(tǒng)根據(jù)初值個數(shù)自動確定)。如果被定義數(shù)組的長度,與初值個數(shù)不同,則數(shù)組長度不能省略。(2)“初值表”中的初值個數(shù),可以少于元素個數(shù),即允許只給部分元素賦初值。(3)根據(jù)存儲類型的不同,數(shù)組有靜態(tài)數(shù)組(static)和動態(tài)數(shù)組(auto)之分;根據(jù)定義的位置不同,數(shù)組有內(nèi)部數(shù)組(在函數(shù)內(nèi)部定義的數(shù)組)和外部數(shù)組(在函數(shù)外部定義的數(shù)組)之分。三、數(shù)組元素的引用:
數(shù)組元素的引用形式如下:
a[0]數(shù)組名[下標];a[1]
E.g.inta[5];a[2]
a[0]=2;a[1]=3;a[3]a[2]=a[1];a[3]=8;a[4]a[4]=10;printf(“%d”,a[1]);
Notes:(1)數(shù)組只有在定義后,方可引用。(2)C編譯不檢查下標是否“越界”。TC
IDE233810實例6_1定義一個含10個元素的整型數(shù)組,從鍵盤輸入各個元素值,并輸出。main(){inta[10],i;printf("Pleaseinputdata:\n");/*提示用戶輸入數(shù)據(jù)*/for(i=0;i<=9;i++)/*利用for語句輸入數(shù)組的各個元素值*/scanf("%d",&a[i]);printf("TheArrayis:\n");for(i=0;i<=9;i++)/*利用for語句輸出數(shù)組的各個元素值*/printf("%5d",a[i]);}運行結(jié)果:實例分析:(1)本實例定義了整型數(shù)組a[10],其中a是數(shù)組名,元素個數(shù)為10,首元素是a[0],最后一個元素是a[9]。數(shù)組元素類型為整型。(2)需要從鍵盤輸入10個元素值,如果不使用循環(huán)語句來處理輸入操作,那么我們要在scanf()語句中,指定10次格式字符“%d”和10項輸出列表用以指定要獲取數(shù)據(jù)的數(shù)組元素。顯然,這種方法不可取。(3)細看第一個for
語句,初值i=0;因此第一個從鍵盤輸入的值是賦給a[0]元素的(注意輸入數(shù)據(jù)時要用地址符&)。以此類推,最后一個輸入是賦給元素a[9]的。輸入各元素時,按本例的scanf語句格式,應使用空格或回車作為分隔。(4)第二個for語句是用來輸出數(shù)組各元素的,printf("%5d",a[i])語句中的格式控制符“%5d”表示用5位列寬輸出每一個元素值。實例6_3用數(shù)組來處理Fibonacci數(shù)列問題。main(){inti;intf[20]={1,1};/*為數(shù)組f的前2個元素賦值1*/for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];/*從第3個元素起,每一個元素等于它的前兩個元素之和*/for(i=0;i<20;i++){if(i%5==0)printf("\n");/*第輸出5個元素插入一個換行符*/printf("%8d",f[i]);/*用8位列寬輸出每一個元素值*/}}程序運行結(jié)果如下:
11235813213455實例分析:(1)本實例采用了為數(shù)組元素部分初始化的方式,intf[20]={1,1},即f[0]=1,f[1]=1,f[2]~f[19]的值默認為0。(2)數(shù)列從第3項起,使用數(shù)組元素方式來求得:f[i]=f[i-2]+f[i-1],即f[2]=f[0]+f[1],f[3]=f[1]+f[2]……,f[19]=f[17]+f[18]。因為數(shù)組各元素在內(nèi)存中占據(jù)獨立的存儲空間,因此,直接用下標方式引用各元素,而不需像前面采用普通變量實現(xiàn)時,求下一項時,要不斷覆蓋前兩項的值??梢娪行﹩栴}采用數(shù)組來解決會更方便。891442333776109871597258441816765main(){floata[10],max;/*定義含10個元素的浮點數(shù)組a和變量max*/inti;printf("pleaseinputarraya:\n");for(i=0;i<=9;i++)scanf("%f",&a[i]);max=a[0];/*假定第1個元素a[0]是最大值*/for(i=1;i<=9;i++)if(a[i]>max)/*從a[1]~a[9]元素逐個和max進行比較*/max=a[i];/*如果某個a[i]比max大,則用a[i]覆蓋max*/printf(“maxis%f”,max);}實例6_4輸出一維數(shù)組中,10個數(shù)的最大者。運行結(jié)果:實例分析:(1)本實例定義了一個實型數(shù)組,因此最值max也應該定義為實型。(2)一維數(shù)組求最大值(或最小值)問題用一重循環(huán)即可解決。思路是:假定第1個元素(即下標為0)是最值,從第2個元素開始(下標為1)逐個和當前的max進行比較,一旦有比該最值更大(或更?。r,則要重新給最值變量賦值實例6_5用冒泡法對10個數(shù),按從小到大進行排序。10個數(shù)需比較9趟,n個數(shù)需比較n-1趟?,F(xiàn)題目不單要求找最大(或最小),而且要按從小到大順序進行排序。如何由上題逐步加深解決本題呢?思想的轉(zhuǎn)變:10個數(shù)進行9趟比較,每趟可得出一個最大者,第一趟:在10個數(shù)中選最大值,需比較9次。剩余9個數(shù)需比較。第二趟:在9個數(shù)中選最大值,需比較8次。剩余8個數(shù)需比較。三:87四:76。。。。。。。。。九:21由上面可歸納出:
第i趟需比較10–
i次9837趟數(shù)比較次數(shù)兩種思路:1、將大的數(shù)往下沉。
2、將小的數(shù)往上浮。main(){inta[10];inti;
if(a[j]>a[j+1]){t=a[i];a[j]=a[j+1];a[j+1]=t;}for(i=0;i<=9;i++)scanf(“%d”,&a[i]);printf(“\n”);for(i=0;i<9;i++)for(j=0;j<10-i-1;j++)for(i=0;i<=9;i++)printf(“%4d”,a[i]);}運行結(jié)果如下:6.2二維數(shù)組的定義和引用6.2.1二維數(shù)組的概念:1、二維數(shù)組:如果有一個一維數(shù)組,它的每一個元素又是類型相同的一維數(shù)組時,就形成一個二維數(shù)組。2、二維數(shù)組的定義方法:
E.g.chara[2][3]Notes:在內(nèi)存中的存儲,是先變化第二個下標,然后變化第一個下標。intage[3][5];變化過程:
age[0][0]->age[0][1]->age[0][2]->age[0][3]->age[0][4]age[1][0]->age[1][1]->age[1][2]->age[1][3]->age[1][4]age[2][0]->age[2][1]->age[2][2]->age[2][3]->age[2][4]對一個二維數(shù)組初始化可以分別對各元素進行賦值。
intA[2][3]={{1,2,3,},{4,5,6}};
6.2.2二維數(shù)組的初始化:6.2.3二維數(shù)組元素的引用引用二維數(shù)組中的任意一個元素的形式:數(shù)組名[行下標表達式][列下標表達式]說明:(1)“行下標表達式”和“列下標表達式”的值,都應在已定義數(shù)組大小的范圍內(nèi)。假設有數(shù)組a[2][3],則可用的行下標范圍為0~1,列下標范圍為0~2。(2)對基本數(shù)據(jù)類型的變量所能進行的操作,也都適合于相同數(shù)據(jù)類型的二維數(shù)組元素。(3)數(shù)組必須遵循:先定義后使用的原則。C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。實例6_6從鍵盤上給2X3數(shù)組賦值,并在屏幕上顯示出來。#include"stdio.h"main(){inti,j,array[2][3];/*定義1個2行3列的2維數(shù)組array*/for(i=0;i<2;i++)/*外循環(huán):控制2維數(shù)組的行*/for(j=0;j<3;j++)/*內(nèi)循環(huán):控制2維數(shù)組的列*/{printf("pleaseinputarray[%2d][%2d]:",i,j);scanf("%d",&array[i][j]);/*從鍵盤輸入a[i][j]的值*/}printf("\n");for(i=0;i<2;i++){for(j=0;j<3;j++)printf("%d\t",array[i][j]);/*將a[i][j]的值顯示在屏幕上*/printf("\n");/*輸完一行插入一個換行符*/}}運行結(jié)果:實例分析:(1)二維數(shù)組要用二重循環(huán)來處理。本實例外循環(huán)變量使用i,內(nèi)循環(huán)變量使用j,則array[i][j]元素下標的變化是隨i、j變化而變化的。(2)二維數(shù)組在內(nèi)存中占據(jù)的存儲空間是連續(xù)的,為了使輸出效果顯示二維關系,通常在輸出二維數(shù)組時會在內(nèi)外重循環(huán)之間插入一個換行符。6.3字符數(shù)組和字符串1、字符數(shù)組的定義:字符數(shù)組的定義:charc[10];以上定義了一個包含10個元素的字符數(shù)組c。由于字符型與整型是互相通用的,因此上面的定義也可以為:
intc[10];2、字符數(shù)組的初始化:
charc[5]={‘C’,’h’,’i’,’n’,’a’};China注意:1、如果花括弧提供的字符個數(shù)大于數(shù)組長度,則按語法錯誤處理。如:charc[4]={‘C’,’h’,’i’,’n’,’a’};錯誤!2、如果提供的字符個數(shù)小于數(shù)組長度,則剩余的元素,系統(tǒng)自動補空字符(即‘\0’)。Chinacharc[7]={‘C’,’h’,’i’,’n’,’a’};\0\0在遇到第一個‘\0’時,就當作字符串結(jié)束?!甛0’后邊的字符不輸出。
3、字符數(shù)組賦初值:
TC
IDE先定義后賦c[0]=‘I’;c[1]=‘
’;c[2]=‘a(chǎn)’;c[3]=‘m’;c[4]=‘
’;c[5]=‘h’;c[6]=‘a(chǎn)’;c[7]=‘p’;c[8]=‘p’;c[9]=‘y’;Iamhapypc[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]charc[10];6.3.3字符數(shù)組元素的引用實例6_8定義一個字符數(shù)組,初始化并輸出。main(){charc[20]={'I','','a','m','','a','','s','t','u','d','e','n','t','.'};/*定義一個字符數(shù)組并初始化
inti;for(i=0;i<20;i++)printf("%c",c[i]);/*輸出字符數(shù)組的元素*/printf("\n");}運行結(jié)果:
Iamastudent.用下標法引用字符數(shù)組的元素,可以訪問數(shù)組中的每一個元素。一、字符數(shù)組的輸入:1、逐個地為數(shù)組中各元素輸入值。
charstr[10];inti;for(i=0;i<=9;i++)scanf(“%c”,&str[0]);
TC
IDE6.3.4字符數(shù)組的輸入輸出2、對一個字符數(shù)組一次輸入一個串值。
char
str[9];
scanf(“%s”,str);
Notes:(1)數(shù)組名本身就代表地址。(2)字符串以空格或回車作為結(jié)束標記。系統(tǒng)會自動加上一個結(jié)束標記“\0”。3、字符串輸入函數(shù)gets(
):#include“string.h”
charstr[10];gets(str);gets()在接收字符串時,僅以回車作結(jié)束標志,當輸入帶空格的字符串時,應用gets()而不能用scanf(“%s”,str)。
1、輸出函數(shù)printf():
charstr[10];printf(“%s”,str);
TC
IDENotes:(1)輸出串時只要用數(shù)組名即可;(2)數(shù)組名表示地數(shù)組首地址。二、字符串的輸出:2、字符串輸出函puts(str):
charstr[]={“China\nBeijing”};puts(str);輸出:
ChinaBeijing注:輸出時最后的結(jié)束標志‘\0’將轉(zhuǎn)換成換行符‘\n’的功能。1.輸入字符串──gets()函數(shù)(1)調(diào)用方式:gets(字符數(shù)組)(2)函數(shù)功能:從標準輸入設備──鍵盤上,讀取1個字符串(可以包含空格),并將其存儲到字符數(shù)組中去。(3)使用說明:
1)gets()讀取的字符串,其長度沒有限制,編程者要保證字符數(shù)組有足夠大的空間,存放輸入的字符串。
2)該函數(shù)輸入的字符串中允許包含空格,而scanf()函數(shù)不允許。6.3.5常用字符串處理函數(shù)
2.輸出字符串──puts()函數(shù)(1)調(diào)用方式:puts(字符數(shù)組)(2)函數(shù)功能:把字符數(shù)組中所存放的字符串,輸出到標準輸出設備中去。(3)使用說明:1)字符串中允許包含轉(zhuǎn)義字符,輸出時產(chǎn)生一個控制操作。2)該函數(shù)一次只能輸出一個字符串,而printf()函數(shù)也能用來輸出字符串,且一次能輸出多個。3.拷貝字符串──strcpy()函數(shù)(1)調(diào)用方式:strcpy(字符數(shù)組,字符串),其中“字符串”可以是串常量,也可以是字符數(shù)組。(2)函數(shù)功能:將“字符串”完整地復制到“字符數(shù)組”中,字符數(shù)組中原有內(nèi)容被覆蓋。(3)使用說明:1)字符數(shù)組必須定義得足夠大,以便容納復制過來的字符串。復制時,連同結(jié)束標志'\0'一起復制。2)不能用賦值運算符“=”將一個字符串直接賦值給一個字符數(shù)組,只能用strcpy()函數(shù)來處理。4.字符串比較──strcmp()函數(shù)(1)調(diào)用方式:strcmp(字符串1,字符串2),其中“字符串”可以是串常量,也可以是字符數(shù)組。(2)函數(shù)功能:比較兩個字符串的大小。如果:字符串1=字符串2,函數(shù)返回值等于0;字符串1<字符串2,函數(shù)返回值負整數(shù);字符串1>字符串2,函數(shù)返回值正整數(shù)。(3)使用說明:1)如果一個字符串是另一個字符串從頭開始的子串,則母串為大。2)不能使用關系運算符“==”來比較兩個字符串,只能用strcmp()函數(shù)來處理。5.連接字符串──strcat()函數(shù)(1)調(diào)用方式:strcat(字符數(shù)組,字符串)。(2)函數(shù)功能:把“字符串”連接到“字符數(shù)組”中的字符串尾端,并存儲于“字符數(shù)組”中。“字符數(shù)組”中原來的結(jié)束標志,被“字符串”的第一個字符覆蓋,而“字符串”在操作中未被修改。(3)使用說明:
1)由于沒有邊界檢查,編程者要注意保證“字符數(shù)組”定義得足夠大,以便容納連接后的目標字符串;否則,會因長度不夠而產(chǎn)生問題。
2)連接前兩個字符串都有結(jié)束標志'\0',連接后“字符數(shù)組”中存儲的字符串的結(jié)束標志'\0'被舍棄,只在目標串的最后保留一個'\0'。6.求字符串長度──strlen()函數(shù)(len是length的縮寫)(1)調(diào)用方式:strlen(字符串)(2)函數(shù)功能:求字符串(常量或字符數(shù)組)的實際長度(不包含結(jié)束標志)。7.將字符串中大寫字母轉(zhuǎn)換成小寫──strlwr()函數(shù)(1)調(diào)用方式:strlwr(字符串)(2)函數(shù)功能:將字符串中的大寫字母轉(zhuǎn)換成小寫,其它字符(包括小寫字母和非字母字符)不轉(zhuǎn)換。8.將字符串中小寫字母轉(zhuǎn)換成大寫──strupr()函數(shù)(1)調(diào)用方式:strupr(字符串)(2)函數(shù)功能:將字符串中小寫字母轉(zhuǎn)換成大寫,其它字符(包括大寫字母和非字母字符)不轉(zhuǎn)換。
實例6_9定義一字符數(shù)組用來存放用戶輸入的密碼,如果用戶輸入的密碼等于“123”,則輸出歡迎登錄的提示信息;否則提示重新輸入密碼,輸入3次錯誤則結(jié)束程序。#include"stdio.h"main(){charpassword[30];/*定義字符數(shù)組password*/inti=0;clrscr();while(1)/*檢驗密碼*/{printf("Inputpassword\n");gets(password);/*輸入密碼*/if(strcmp(password,"123")!=0) /*如果密碼不等于123*/printf("Wrongpassword!Youcanentrythreetimes.\n");elsebreak;/*輸入正確的密碼,中止循環(huán)*/getch();i++;if(i==3)exit(0); /*輸入三次錯誤的密碼,退出程序*/}printf("WelcometoLogin!");/*輸入正確密碼所進入的程序段*/getch();}運行結(jié)果:實例分析:(1)本實例while語句中的條件表達式是1,表示永真(永遠成立),而退出循環(huán)是利用循環(huán)體中的break語句實現(xiàn)的。即當strcmp(password,"123")==0時表示密碼等于“123”,則跳
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版城市住宅抵押借款合同示范4篇
- 二零二五年度農(nóng)產(chǎn)品電商平臺農(nóng)產(chǎn)品質(zhì)量保險合同4篇
- 二零二五年度滅鼠防治項目監(jiān)理合同3篇
- 2025年度紡織面料品牌形象設計與推廣合同4篇
- 2025年度自然人與音樂制作人創(chuàng)作合同3篇
- 二零二五年度出境領隊培訓基地建設合同4篇
- 2025物業(yè)保潔與緊急維修值班服務一體化項目合同9篇
- 2025年度智能停車設施門面房產(chǎn)權轉(zhuǎn)讓合同4篇
- 2025年度個人與公司租賃合同糾紛處理條款4篇
- 二零二五年度啤酒品牌市場推廣代理合同3篇
- 中國人民銀行清算總中心直屬企業(yè)2023年招聘筆試上岸歷年典型考題與考點剖析附帶答案詳解
- 2024年湖南高速鐵路職業(yè)技術學院單招職業(yè)技能測試題庫及答案解析
- (正式版)SJT 11449-2024 集中空調(diào)電子計費信息系統(tǒng)工程技術規(guī)范
- 廣州綠色金融發(fā)展現(xiàn)狀及對策的研究
- 人教版四年級上冊加減乘除四則混合運算300題及答案
- 合成生物學技術在生物制藥中的應用
- 消化系統(tǒng)疾病的負性情緒與心理護理
- 高考語文文學類閱讀分類訓練:戲劇類(含答案)
- 協(xié)會監(jiān)事會工作報告大全(12篇)
- WS-T 813-2023 手術部位標識標準
- 同意更改小孩名字協(xié)議書
評論
0/150
提交評論