




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
掌握一維數(shù)組、二維數(shù)組和指針數(shù)組的定義和初始化掌握數(shù)組元素的下標法和指針法引用掌握C語言中字符串的處理方法掌握常用字符串處理函數(shù)的使用能利用數(shù)組解決向量、矩陣等實際應用問題教學目標重點難點重點:一維數(shù)組、二維數(shù)組的定義、初始化和元素引用,常用字符串處理函數(shù)的使用。難點:指針數(shù)組和數(shù)組元素的指針法引用1.數(shù)組:2.數(shù)組元素:3.元素表示:4.數(shù)據(jù)類型:5.數(shù)組分類①按數(shù)組元素數(shù)據(jù)類型:數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組和結(jié)構(gòu)數(shù)組等。②按維數(shù):一維、二維和多維。類型相同的變量序列數(shù)組必須先定義后使用序列中的每個變量稱為數(shù)組元素構(gòu)造類型數(shù)組元素用一個統(tǒng)一的標識符“數(shù)組名”和序號“下標”來表示,下標從0開始。一維數(shù)組及指針1.一維數(shù)組的定義一維數(shù)組定義的一般形式
類型標識符
數(shù)組名[常量表達式]數(shù)組長度數(shù)組元素的類型符合標識符取名規(guī)則
如:shortinta[6];定義了一個一維數(shù)組,數(shù)組名為a,數(shù)據(jù)類型為短整型,數(shù)組中有6個元素,分別是:a[0],a[1],a[2],a[3],a[4],a[5]。一、一維數(shù)組的定義和初始化如:#definen6shortinta[n];
①不允許對數(shù)組的大小作動態(tài)定義。③C語言對數(shù)組元素的下標不作越界檢查。如:shortinta[6];a[6]=10;/*使用a[6]并不作錯誤處理*/②數(shù)組元素的下標從0開始。(√)如:shortinta[6];
數(shù)組元素:a[0],a[1],a[2],a[3],a[4],a[5]。④可以同時定義多個數(shù)組,也可以同時定義數(shù)組和變量。如:shortinta[6],b[10];floatc[20],d,f;intn=6;shortinta[n];
(×)說明數(shù)組所占字節(jié)數(shù)=sizeof(類型標識符)*數(shù)組長度a如:shortinta[6];12個字節(jié)⑤系統(tǒng)為數(shù)組分配的存儲空間是連續(xù)的,數(shù)組元素按其下標遞增的順序依次占用相應字節(jié)的內(nèi)存單元。a[0]a[1]a[2]a[3]a[4]a[5]數(shù)組名代表數(shù)組在內(nèi)存首地址,是地址常量在定義數(shù)組時,對數(shù)組的全部元素或部分元素賦初值,稱為數(shù)組的初始化。2.一維數(shù)組初始化(1)全部元素初始化(此時可以省略數(shù)組長度)如:inta[10]={1,2,3,4,5,6,7,8,9,10};inta[]={1,2,3,4,5,6,7,8,9,10};初始化時省略長度,數(shù)組長度就是{}內(nèi)的值個數(shù)數(shù)組元素a[0]至a[9]的值依次為:1,2,3,4,5,6,7,8,9,10
部分元素初始化時,數(shù)組的長度不能省略,并且是依次賦值給前面的元素,沒有被賦值的數(shù)組元素,數(shù)值型數(shù)組的值為0,字符型數(shù)組的值為'\0'。#include"stdio.h"voidmain(){inta[6]={1,2},i;for(i=0;i<6;i++)printf("%4d",a[i]);
}120000運行結(jié)果:程序1?【例】寫出下列程序的運行結(jié)果。(2)部分元素初始化(此時數(shù)組長度不能省略)如:inta[6]={1,2};二、一維數(shù)組元素的下標法引用#include"stdio.h"voidmain(){inta[10]={1,2,3,4,5,6,7,8,9,10},i=3;
printf("%3d%3d%3d%3d",a[++i],a[i],a[3*2],a['b'-'a']);}運行結(jié)果:5472數(shù)組元素的使用與同類型的變量相同程序2?一維數(shù)組元素的下標表示形式數(shù)組名[表達式]其中,表達式的類型任意,一般為算術(shù)表達式,其值為數(shù)組元素的下標?!纠繉懗鱿铝谐绦虻倪\行結(jié)果。1假設(shè)輸入:12345678910↙i【例】將整型數(shù)組a中存放的10個整型數(shù)逆序存放。#include"stdio.h"voidmain(){inta[10],i,j,t;
}/*輸入數(shù)據(jù)*//*逆置*//*輸出數(shù)據(jù)*/②數(shù)值型數(shù)組值只能單個元素輸出for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0,j=9;i<j;i++,j--){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i<10;i++)printf("%4d",a[i]);程序3?①數(shù)值型數(shù)組值只能單個元素輸入scanf("%d",a);printf("%d",a);××0123456789i2345678910j【例】從鍵盤輸入10個整型數(shù)并存放到數(shù)組中,找出其中的最大值并輸出。#include"stdio.h"voidmain(){inta[10],i,max;/*輸入數(shù)據(jù)*/for(i=0;i<10;i++)scanf("%d",&a[i]);/*找最大值*/max=a[0];for(i=1;i<=9;i++){if(max<a[i])max=a[i];}
/*輸出最大值*/printf("max=%d\n",max);}程序4?
數(shù)組首地址
C語言規(guī)定,數(shù)組存儲空間的首地址存放在數(shù)組名中數(shù)組元素地址
&數(shù)組名[下標]數(shù)組元素a[0]的地址:_________數(shù)組元素a[3]的地址:_________數(shù)組名是地址常量對數(shù)組名用取地址符“&”進行運算沒有意義
三、一維數(shù)組的指針如:shortinta[6];aa[0]a[1]a[2]a[3]a[4]a[5]&a[0]或a&a[3]定義與指向變量的指針變量的定義相同#include"stdio.h"voidmain(){shortinta[6]={1,2,3,4,5,6},*p,*q;p=&a[3];
q=a;
printf("%3hd%3hd\n",*p,*q);}指針變量的類型必須與它指向的數(shù)組元素的類型一致pq程序5?1.指向一維數(shù)組元素的指針變量如:shortinta[6]={1,2,3,4,5,6};
shortint*p=&a[3],*q=a;運行結(jié)果:【例】寫出下列程序的運行結(jié)果a[0]1a[1]2a[2]3a[3]4a[4]5a[5]6a
41①賦值運算
如:shortint*p,a[6];
p=&a[2];②指向數(shù)組元素的指針可以加(減)一個整型數(shù)
假設(shè)p是指向數(shù)組元素的指針,n是一個整型數(shù)
p+n:指向p所指向元素后的第n個數(shù)組元素p-n:指向p所指向元素前的第n個數(shù)組元素如:若有定義shortinta[6],*p=&a[2];
a+3指向_______
p-1指向_______
p+2指向_______
pa+3p-1p+2a[1]a[4]a[3]2.指針運算a[0]1a[1]2a[2]3a[3]4a[4]5a[5]6a若有定義:inta[6],*p=a,*q=a+2;,則:①數(shù)組元素a[i]的地址有幾種表示方式?②q+2是哪個元素的地址?運行結(jié)果:③指向數(shù)組元素的指針變量可以進行自加自減運算p++或++p:等價于p=p+1,自加后指向原來指向元素的后一個元素p--或—p:等價于p=p-1,自減后指向原來指向元素的前一個元素數(shù)組名是常量,不能進行自加自減運算#include"stdio.h"voidmain(){,*p,*q;
p=&a[3];
q=p++;
printf("%3d%3d\n",*p,*q);}/*等價于q=p;p=p+1;*/【例】寫出下列程序的運行結(jié)果程序6?pa[0]1a[1]2a[2]3a[3]4a[4]5a[5]6aqinta[6]={1,2,3,4,5,6}54若有定義:shortinta[6],*p=&a[2],*q=&a[4];p-a的值為_____
q-p的值為_____
若有定義:shortinta[6],*p=&a[2],*q=&a[4];p>a的值為_____q>a+4的值為_____④指向同一個數(shù)組中元素的兩個指針可以進行減運算
含義:
兩個指針之間的數(shù)組元素個數(shù)⑤指向同一個數(shù)組中元素的兩個指針可以進行關(guān)系運算pqa[0]1a[1]2a[2]3a[3]4a[4]5a[5]6a指向同一個數(shù)組中元素的兩個指針不能進行加運算2210若有定義:inta[6],*p=a;數(shù)組名法指針變量法下標法四、一維數(shù)組元素的指針法引用&a[i]、a+i、p+i、&p[i]等價a[i]、*(a+i)、*(p+i)、p[i]等價(數(shù)組元素a[i]的地址)(數(shù)組元素a[i])1.數(shù)組名法引用用數(shù)組名引用數(shù)組元素的一般形式*(數(shù)組名+表達式)其中,表達式類型任意,一般為算術(shù)表達式,其值為數(shù)組元素的下標。如:*(a+3-1)表示數(shù)組元素a[2]
【例】將整型數(shù)組a中的10個整型數(shù)逆序存放。#include"stdio.h"voidmain(){inta[10],i,j,t;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0,j=9;i<j;i++,j--){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i<10;i++)printf("%4d",a[i]);}{t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;}
printf("%4d",*(a+i));scanf("%d",a+i);下標法數(shù)組名法程序7?編譯時系統(tǒng)自動將下標法引用改為數(shù)組名法引用2.指針變量法用指針變量引用數(shù)組元素的一般形式
*(指針變量+表達式)或指針變量[表達式]其中,指針變量為指向一維數(shù)組元素的指針變量;表達式類型任意,一般為算術(shù)表達式。
若有定義:inta[10],*p=a+3;*p等價于___________________
*(p+2+2)等價于_________________
p[2]等價于__________________
p[1]-p[-1]等價于______________________apa[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]a[3]或*(a+3)a[7]或*(a+7)a[5]或*(a+5)a[4]-a[2]或*(a+4)-*(a+2)p#include"stdio.h"voidmain(){inta[10],*p,*q,t;for(p=a;p<a+10;
p++)scanf("%d",p);for(p=a,q=a+9;
p<q;p++,q--){t=*p;*p=*q;*q=t;}for(p=a;p<a+10;p++)printf("%4d",*p);}p假設(shè)輸入:
12345678910↙【例】將整型數(shù)組a中的10個整型數(shù)逆序存放。程序8?指向數(shù)組元素的指針變量也可用下標法表示數(shù)組元素,程序如何修改?
0123456789q12345678910/*輸入數(shù)據(jù)*//*逆置*//*輸出數(shù)據(jù)*/⑩--(*p)/*先將p指向的元素值減1,然后再用p指向的元素值*/使用指針變量引用數(shù)組元素時,應注意下列情況①*(p++)/*先使用p指向的元素值,然后p指向下一個元素*/②*(++p)/*p先指向下一元素,然后用p指向的元素值*/③*(p--)/*先用p指向的元素值,然后p指向上一個元素*/④*(--p)/*p先指向上一元素,然后用p指向的元素值*/⑤*p++/*與*(p++)等價*/⑥*p--/*與*(p--)等價*/⑦(*p)++/*先用p指向的元素值,然后將p指向的元素值加1*/⑧(*p)--/*先用p指向的元素值,然后將p指向元的素值減1*/⑨++(*p)/*先將p指向的元素值加1,然后再用p指向的元素值*/#include"stdio.h"voidmain(){inta[]={1,3,6},*p;p=&a[1];printf("*(p++)=%d\n",*(p++));printf("*p=%d\n",*p);p=&a[1];printf("*(++p)=%d\n",*(++p));printf("*p=%d\n",*p);p=&a[1];printf("*p++=%d\n",*p++);printf(“*p=%d\n",*p);
p=&a[1];printf("(*p)++=%d\n",(*p)++);printf("*p=%d\n",*p);p=&a[1];
printf("++(*p)=%d\n",++(*p));printf("*p=%d\n",*p);}*(p++)=3*p=6*(++p)=6*p=6*p++=3*p=6
(*p)++=3*p=4++(*p)=5*p=5136a【例】寫出下列程序的運行結(jié)果。p運行結(jié)果ppp45程序9?1.設(shè)有定義:inta[10],*p=a;,對數(shù)組元素的正確引用是()①a[p]②p[a]③*(p+2)④p+2③練習題一、單項選擇題4.運行下列程序的輸出結(jié)果是()
#include"stdio.h"voidmain(){inta[]={1,2,3,4,5},i,*p=a+2;printf("%d",p[1]-p[-1]);}①出錯,因下標不能為負值②1③2④33.設(shè)有定義:inta[10],*p=a+6,*q=a;,則下列運算哪種是錯誤的()①p-q②p+3③p+q④p>q2.若有如下定義,則值為3的表達式是()
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;①p+=2,*(p++)②p+=2,*++p③p+=3,*p++④p+=2,++*p①③③二、程序填空題1.下列程序的功能是輸出數(shù)組s中最大元素的下標。
#include"stdio.h"
voidmain(){intk,i;ints[]={3,-8,7,2,-1,4};for(i=0,k=i;i<6;i++)if(s[i]>s[k])
;printf("k=%d\n",k);}k=i2.下列程序的功能是輸入N個實數(shù),然后依次輸出前l(fā)個實數(shù)和、前2個實數(shù)和、…、前N個實數(shù)和。#include"stdio.h"#defineN10voidmain(){floatf[N],x=0.0;inti;
for(i=0;i<N;i++)scanf("%f",
);
for(i=1;i<=N;i++){
;printf("sumofNO%2d---------%f\n",i,x);}}x=x+f[i-1]&f[i]3.以下程序的功能是將數(shù)組x中各相鄰兩個元素的和依次存放到a數(shù)組中。#include"stdio.h"voidmain(){intx[10],a[9],i;printf("往數(shù)組x中讀入10個整數(shù):");for(i=0;i<10;i++)scanf("%d",
);for(i=1;i<10;i++)a[i-1]=x[i]+
;for(i=0;i<9;i++)printf("%d",a[i]);}4.以下程序統(tǒng)計從終端輸入的字符中大寫字母的個數(shù),num[0]中統(tǒng)計字母A的個數(shù),num[1]中統(tǒng)計字母B的個數(shù),其它依次類推.用#號結(jié)束輸入。#include<stdio.h>voidmain(){intnum[26]={0},i;charc;while((c=
)!='#')if(
)num[c-'A']+=1;for(i=0;i<26;i++)
printf("%c:%d\n",i+'A',num);}&x[i]c>='A'&&c<='Z'x[i-1]getchar()2.下列程序的運行結(jié)果是()
#include"stdio.h"voidmain(){inta[]={2,4,6,8,10};inty=1,x,*p;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n",y);}193.下列程序的運行結(jié)果是()#include"stdio.h"voidmain(){inti,n[6]={0};
for(i=1;i<=4;i++)n[i]=n[i-1]*2+1;pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題代寫申報書是什么
- 課題申報評審書范例范文
- 就業(yè)心理 課題申報書
- 河南小學課題申報書范例
- 兌換房子合同范本
- 公司外匯借款合同范本
- 益智課堂課題研究申報書
- 閱讀推廣 課題申報書
- 課題申報項目書推廣價值
- 同城工程勞務合同范例
- 2024年浙江省煙草專賣局(公司)管理類崗位招聘筆試真題
- 2024年財政部會計法律法規(guī)答題活動題目及答案一
- 《冠心病》課件(完整版)
- 人教版(2024)六年級全一冊 第17課 設(shè)計我的種植園
- 2024年聊城職業(yè)技術(shù)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 執(zhí)業(yè)(助理)醫(yī)師資格證書遺失補辦申請表
- 精品資料(2021-2022年收藏)垃圾焚燒發(fā)電廠監(jiān)理規(guī)劃
- 建筑工程消防安全技術(shù)交底
- 建筑工程原材料構(gòu)配件及試件檢驗的項目規(guī)則取樣規(guī)定_文檔
- 六十仙命配二十四山吉兇選擇一覽表
- 農(nóng)村信用社流水模版
評論
0/150
提交評論