版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
6.1一維數(shù)組6.2二維數(shù)組6.3字符數(shù)組與字符串一、數(shù)組的引入為了便于處理一批類型相同的數(shù)據(jù),引入了數(shù)組類型.
假設(shè)現(xiàn)在要保存每個學(xué)生的成績,那就需要40個變量,但這樣一來輸入、輸出、計算都會變得繁瑣。
在這種情況下,我們可以使用數(shù)組類型,聲明一個含有40個元素的數(shù)組,每個數(shù)組元素存放一個成績,成績的輸入、輸出、計算都可通過循環(huán)來實現(xiàn)。例:某班有40名學(xué)生,求該班成績的平均分#include<stdio.h>main(){intj,sum,s;floatave;sum=0;
for(j=1;j<=40;j++)
{scanf(“%d”,&s);sum=sum+s;
}ave=sum/40;printf(“ave=%f”,ave);}二、數(shù)組的概念構(gòu)造數(shù)據(jù)類型之一1.數(shù)組:由具有相同類型的有序數(shù)據(jù)的集合。用數(shù)組名標(biāo)識。#include<stdio.h>main(){intj,sum,s[40];
floatave;
sum=0;
for(j=0;j<=39;j++)
{scanf(“%d”,&s[j]);sum=sum+s[j];
}ave=sum/40;printf(“ave=%f”,ave);}2.數(shù)組元素:每一個數(shù)組元素都是一個變量,為了與一般的變量相區(qū)別,我們稱數(shù)組元素為下標(biāo)變量3.下標(biāo)變量在數(shù)組中的位置序號稱下標(biāo),c語言中下標(biāo)
從0開始
6.1一維數(shù)組6.1.1一維數(shù)組的定義
定義方式:數(shù)據(jù)類型數(shù)組名[常量表達(dá)式];
合法標(biāo)識符表示元素個數(shù)下標(biāo)從0開始例
inta[10];數(shù)組名表示數(shù)組所在內(nèi)存首地址也是a[0]的地址,是地址常量84:668095a[0]a[1]a[2]:a[9]a6.1.2數(shù)組元素的引用數(shù)組必須先定義,后使用下標(biāo)可以是常量或整型表達(dá)式如:a[1],a[2*3]只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組下標(biāo)不要超范圍(越界)區(qū)分:數(shù)組定義:inta[10],數(shù)組元素引用t=a[6];例inta[10];printf(“%d”,a);(
)必須
for(j=0;j<10;j++)printf(“%d\t”,a[j]);(
)引用形式:數(shù)組名[下標(biāo)]
例intdata[5];data[5]=10;(
)
//C語言對數(shù)組不作越界檢查,使用時要注意6.1.3數(shù)組元素的初始化與賦值在定義數(shù)組時,為數(shù)組元素賦初值(在編譯階段使之得到初值)inta[5]={1,2,3,4,5};等價于:a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;說明:
數(shù)組不初始化,其元素值為隨機數(shù)
對static數(shù)組元素不賦初值,系統(tǒng)會自動賦以0值
當(dāng)全部數(shù)組元素賦初值時,可不指定數(shù)組長度
可以只給部分?jǐn)?shù)組元素賦初值
一維數(shù)組的賦值是指數(shù)組已經(jīng)定義完畢,對數(shù)組元素作動態(tài)賦值。例如:
inta[5]; /*定義一維數(shù)組a,每個元素的值是不確定的*/a[0]=1;a[1]=2;a[2]=3; /*逐個賦值*/3.inta[5];a={1,2,3,4,5};×4.inta[10];floati=3;a[i]=10;×1.charname[0];×floatweight[10.3];×intarray[-100];×6.inti,a[5];for(i=0;i<5;i++)scanf(“%d”,&a[i]);for(i=0;i<5;i++)printf(“%d”,a[i]);√2.inti=5;inta[i]={1,2,3,4,5};×5.inta[5];scanf(“%d”,&a);printf(“%d”,a);×討論:以下幾種用法是否正確?一維數(shù)組的賦值【例6.1】編程,輸入10個整數(shù),計算最大值并輸出。源程序:#include<stdio.h>main(){ inti,max,a[10]; printf("Input10numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); max=a[0];
for(i=1;i<10;i++) if(a[i]>max) max=a[i]; printf("Max=%d\n",max);}控制輸入10個數(shù)據(jù)核心算法語句【例6.2】用冒泡排序法對N個數(shù)進(jìn)行排序(從小到大),用6個演示冒泡排序方法:依次比較相鄰的兩個數(shù),將小數(shù)放前面,大數(shù)放后面.經(jīng)過第1輪(共5次比較與交換)后最大的數(shù)9已“沉底”。再對余下的前面5個數(shù)進(jìn)行第二輪比較,次大的數(shù)又被安置。n個數(shù)排序需要進(jìn)行n-1輪比較,從第1輪到第n-1輪,各輪的比較次數(shù)依次為:n-1次、n-2次…1次,第i輪比較中要進(jìn)行n-i次兩兩比較。972541a[0]a[1]a[2]a[3]a[4]a[5]72541
927754712541794515241
5
7921
4
5
7
914129725419999972541初始狀態(tài)第1輪第2輪第3輪第4輪第5輪76.2二維數(shù)組姓名高等數(shù)學(xué)大學(xué)英語C程序設(shè)計王青808286陳丹788980趙樂767281李磊536770羅鵬878291該表共有15個數(shù)值,我們可以把它看作是由5行3列組成的矩陣。在數(shù)學(xué)中,我們使用雙下標(biāo)變量來表示矩陣中的某個值,其中一個變量表示行,另一個變量表示列。在C語言中可以使用二維數(shù)組來定義這樣的表。該表在C中可以這樣來定義:intv[5][3];/*v是二維數(shù)組名稱,5表示行數(shù),3表示列數(shù),int表示元素類型*/6.2.1二維數(shù)組的定義定義形式:
類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];
如:inta[3][4];
6.2.2二維數(shù)組的引用
數(shù)組元素的表示形式:
數(shù)組名[下標(biāo)][下標(biāo)]
注意:(1)每個下標(biāo)都要用[]括起來,如a[2][1]不能寫成a[2,1](2)下標(biāo)從0開始,且不要超過定義的范圍6.2.3二維數(shù)組的初始化與賦值1.分行初始化
inta[3][4]={
{1,2,3,4},{5,6,7,8},{9,10,11,12}};
此方法較直觀,第一對{}內(nèi)的數(shù)據(jù)賦給第一行數(shù)組元素,依次類推2.按數(shù)據(jù)的排列順序?qū)?shù)組元素賦初值
inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
將數(shù)據(jù)依次賦給元素a[0][0],a[0][1]……a[2][3]123456789101112注意:此方法數(shù)據(jù)無明顯的界限,當(dāng)數(shù)據(jù)較多時容易出錯3.對數(shù)組的部分元素賦初值,未賦值元素自動取0
inta[3][4]={{1,2},{3},{4,5,6}};
inta[3][4]={1,2,3,4,5,6};1200300045601234560000004.對數(shù)組的全部元素賦初值時可以省略第一維的長度(行下標(biāo)),
系統(tǒng)會根據(jù)數(shù)據(jù)的個數(shù)和第二維的長度自動求出第一維長度,
但第二維下標(biāo)不可省.
intb[][2]={1,2,3,4,5,6,7,8};數(shù)組a第一維長度為3
數(shù)組b第一維長度為4
如僅對部分元素賦初值,要想省略數(shù)組的行數(shù),則必須分行賦值。
inta[][4]={{1,2},{0,3,4},{5}};【例6.3】求一個4×4矩陣的主對角線上各元素之和。#include<stdio.h>main(){ inta[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; inti,j,sum=0; for(i=0;i<4;i++) for(j=0;j<4;j++)
if(i==j) sum=sum+a[i][j]; printf("sum=%d",sum);}方陣主對角線上元素的特征是:行標(biāo)值等于列標(biāo)值。6.3字符數(shù)組與字符串一、字符數(shù)組1.定義 例charc[10],ch[3][4];
例charch[5];ch[0]=‘H’;ch[1]=‘e’;ch[2]=‘l’;ch[3]=‘l’;ch[4]=‘o’;ch[0]Hello逐個字符賦值ch[1]ch[2]ch[3]ch[4]注意{}
例charch[5]={‘H’,’e’,’l’,’l’,’o’};ch[0]Hello逐個字符賦值ch[1]ch[2]ch[3]ch[4]
例charch[5]={‘B’,’o’,’y’};ch[0]Boy\0\0逐個字符賦值ch[1]ch[2]ch[3]ch[4]
例charch[5]=“Boy”;ch[0]Boy\0\0用字符串常量ch[1]ch[2]ch[3]ch[4]
例charch[6]={“Hello”};charch[6]=“Hello”;charch[]=“Hello”;用字符串常量ch[0]Helloch[1]ch[2]ch[3]ch[4]\0ch[5]
例chardiamond[][5]={{'.','.','*'},{'.','*','.','*'}, {'*','.','.','.','*'},{'.','*','.','*'},{'.','.','*'}};二維字符數(shù)組初始化..*\0\0.*.*\0*...*.*.*\0..*\0\0diamond[0]diamond[1]diamond[2]diamond[3]diamond[4]
例charfruit[][7]={“Apple”,”O(jiān)range”,”Grape”,”Pear”,”Peach”};二維字符數(shù)組初始化fruit[0]fruit[1]fruit[2]fruit[3]fruit[4]Apple\0\0Orange\0Grape\0\0Pear\0\0\0Peach\0\0例輸出一個字符數(shù)組#include<stdio.h>main(){charc[10]={'I','','a','m','','a','','b','o','y'};inti;for(i=0;i<10;i++)printf("%c",c[i]);printf("\n");}Iamaboy0123456789二、字符串1、字符串存放及其結(jié)束標(biāo)志無字符串變量,用字符數(shù)組處理字符串字符串結(jié)束標(biāo)志:‘\0’例“hello”共5個字符,在內(nèi)存占6個字節(jié)字符串長度5
'h'
'e'
'l'
'l'
'o'
'\0'
1041011081081110內(nèi)存存放字符ASCII碼等價于:chars1[]={'C','h','i','n','a','\0'};chars2[10]={'C','h','i','n','a'};chars1[]=“China”
;
chars2[10]="China"
;字符串在字符數(shù)組中的存放s2[4]s2[5]s2[7]s2[6]s2[8]s2s2[0]s2[2]s2[1]s2[3]10個字節(jié)'C''i''n''a''h''\0's2[9]'\0'
'\0'
'\0'
'\0''\0's3[5]s1s3[0]s3[2]s3[1]s3[3]6個字節(jié)s3[4]'C''i''n''a''h'
數(shù)組名:字符數(shù)組(字符串)在內(nèi)存的首地址。
作為字符串進(jìn)行存儲時,字符串與字符數(shù)組的長度可以不等,系統(tǒng)自動加‘\0’為結(jié)束標(biāo)志。ss1[0]s1[2]s1[1]s1[3]5個字節(jié)s1[4]'C''i''n''a''h''\0's3[5]s1s3[0]s3[2]s3[1]s3[3]6個字節(jié)s3[4]'C''i''n''a''h'字符串在字符數(shù)組中的存放不等價于:chars[5]={'C','h','i','n','a'};chars1[]=“China”
;
不能寫成:chars1[5]="China"
;
用字符串作初值時,數(shù)組的長度應(yīng)足夠大以便能容納全部字符和‘\0’。2、字符串的輸入輸出逐個字符I/O:%c整個字符串I/O:%s例用%cmain(){charstr[5];inti;for(i=0;i<5;i++)scanf(“%c”,&str[i]);for(i=0;i<5;i++)printf(“%c”,str[i]);}例用%smain(){charstr[5];scanf(“%s”,str);printf(“%s”,str);}main(){chara[5]={‘H’,’e’,’l’,’l’,’o’};printf(“%s”,a);}main(){chara[]=“Hello”;printf(“%s”,a);}結(jié)果:因為沒有‘\0’結(jié)束符,輸出Hello,后面的字符不確定。結(jié)果:Helloprintf的%s輸出字符串main(){chara[]={'h','e','l','\0','l','o','\0'};printf("%s",a);}輸出:hel
hel\0lo\0數(shù)組中有多個‘\0’時,遇第一個結(jié)束用“%s”輸出時,遇‘\0’結(jié)束hello02314main(){inti;chara[5];scanf("%s",a);for(i=0;i<5;i++)printf("%d,",a[i]);}運行情況:(1)若輸入hel,正常(2)若輸入hell,正常(3)若輸入hello,用%s輸出時,會出現(xiàn)問題輸入字符串長度<數(shù)組維數(shù)scanf的%s輸入字符串
hel\0
hell\0
helloscanf的%s輸入字符串#include<stdio.h>main(){chara[15],b[5],c[5];
scanf("%s%s%s",a,b,c);printf("a=%s\nb=%s\nc=%s\n",a,b,c);
scanf("%s",a);printf("a=%s\n",a);}運行情況:輸入:Howareyou?輸出:a=Howb=arec=you?輸入:Howareyou?輸出:a=Howscanf中%s輸入時,遇空格或回車結(jié)束
How\0
are\0
you?\0
3、常用的字符串處理函數(shù)除puts和gets外,包含在頭文件string.h(1)字符串輸出函數(shù)puts格式:puts(字符數(shù)組)功能:向顯示器輸出字符串(輸出完,換行)說明:字符數(shù)組必須以‘\0’結(jié)束(2)字符串輸入函數(shù)gets格式:gets(字符數(shù)組)功能:從鍵盤輸入一以回車結(jié)束的字符串放入字符數(shù)組中,并自動加‘\0’說明:輸入串長度應(yīng)小于字符數(shù)組維數(shù)例#include<stdio.h>main(){charstring[80];printf(“Inputastring:”);gets(string);puts(string);}輸入:Howareyou?輸出:Howareyou?
#include<stdio.h>main(){chara[15],b[5],c[5];scanf("%s",a);printf("a=%s\n",a);}運行情況:輸入:Howareyou?輸出:a=How#include<stdio.h>main(){chara[15],b[5],c[5];gets(a);printf("a=%s\n",a);}
使用scanf()的%s整體輸入,空格或回車結(jié)束使用gets()函數(shù),只以回車鍵結(jié)束輸入運行情況:輸入:Howareyou?輸出:a=Howareyou?討論:scanf()的%s與gets()函數(shù)的區(qū)別?(3)字符串連接函數(shù)strcat格式:strcat(字符
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版白酒銷售顧問銷售數(shù)據(jù)分析合同3篇
- 2025年度個人自用房產(chǎn)交易合同范本4篇
- 二零二五版建筑公司員工勞動合同范本3篇
- 一個簡短的自我介紹四篇
- 2024年中級經(jīng)濟(jì)師考試題庫含答案(b卷)
- 擋墻及護(hù)坡施工方案
- 訓(xùn)練音樂節(jié)奏課程設(shè)計
- 2025年度退休員工專業(yè)培訓(xùn)與指導(dǎo)合同3篇
- 輸電線路防雷施工方案
- 二零二五版合伙購買二手房裝修及改造協(xié)議3篇
- 中小銀行上云趨勢研究分析報告
- 機電安裝工程安全培訓(xùn)
- 洗浴部前臺收銀員崗位職責(zé)
- 2024年輔警考試公基常識300題(附解析)
- GB/T 43650-2024野生動物及其制品DNA物種鑒定技術(shù)規(guī)程
- 暴發(fā)性心肌炎查房
- 工程質(zhì)保金返還審批單
- 【可行性報告】2023年電動自行車項目可行性研究分析報告
- 五月天歌詞全集
- 商品退換貨申請表模板
- 實習(xí)單位鑒定表(模板)
評論
0/150
提交評論