C語言項(xiàng)目化教程(基于智能制造軟件) 課件 項(xiàng)目七 汽車數(shù)據(jù)間接顯示指針_第1頁
C語言項(xiàng)目化教程(基于智能制造軟件) 課件 項(xiàng)目七 汽車數(shù)據(jù)間接顯示指針_第2頁
C語言項(xiàng)目化教程(基于智能制造軟件) 課件 項(xiàng)目七 汽車數(shù)據(jù)間接顯示指針_第3頁
C語言項(xiàng)目化教程(基于智能制造軟件) 課件 項(xiàng)目七 汽車數(shù)據(jù)間接顯示指針_第4頁
C語言項(xiàng)目化教程(基于智能制造軟件) 課件 項(xiàng)目七 汽車數(shù)據(jù)間接顯示指針_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

C語言程序設(shè)計項(xiàng)目七汽車數(shù)據(jù)間接顯示(指針)C語言程序設(shè)計項(xiàng)目七

汽車數(shù)據(jù)間接顯示(指針)C語言程序設(shè)計理解指針就是地址理解直接訪問和間接訪問熟悉“&”取地址運(yùn)算符和“*”間接尋址運(yùn)算符知識目標(biāo)會準(zhǔn)確指針變量的定義、引用、初始化、做函數(shù)參數(shù)及相應(yīng)的運(yùn)算。能準(zhǔn)確利用指針對一維數(shù)組進(jìn)行操作。能基本通過字符串指針對字符串進(jìn)行操作的能力。能力目標(biāo)項(xiàng)目八項(xiàng)目七01

0203統(tǒng)計某車企的汽車數(shù)量(指針和變量)汽車一年銷售額顯示(指針和數(shù)組)某車企多項(xiàng)數(shù)據(jù)顯示(指針作為函數(shù)參數(shù))引入:

01日常生活中,我們在郵寄物品時需要填寫地址,我們程序中在運(yùn)算時也可以通過地址來完成這種功能,現(xiàn)在我們就來學(xué)習(xí)一下。知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口任務(wù)目標(biāo)

某車企的上半年的銷售量為56,下半年的銷售量為78,用指針實(shí)現(xiàn)求一年的銷售量。(變量名:上半年銷售量,下半年銷售量)知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉一、間接地址與直接地址我們在上學(xué)時,每個班級都有教室,打個比方高一三班的教室在A樓311室,那么我們需要將一疊材料送過去可以說請將材料送到高一三班教室或者說請將材料送到A樓311教室。這兩種說法都可以,一種就是直接告訴地址,另一種就是直接說名稱。知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉間接地址與直接地址1.直接訪問和間接訪問在C語言中給變量賦值也有兩種方法:直接訪問賦值:直接按照變量名進(jìn)行的訪問,比如直接用變量名賦值,系統(tǒng)會準(zhǔn)確地將值存入該變量的內(nèi)存單元中,你不必清楚該變量具體的內(nèi)存地址;另一種是將該變量地址存放在另一個特殊變量(即指針變量)中,通過這個指針變量,將值存入到指定的內(nèi)存單元。前者屬于直接存取,后者屬于間接存取。2.指針和地址指針:將指針看作是內(nèi)存中的一個地址,一般情況下指針需要指向另一個變量的地址。知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉一、間接地址與直接地址#include"stdio.h"voidmain(){intx=0;int*p;/*定義指針變量*/p=&x;/*將變量X的地址賦給指針變量*p*/*p=100;/*相當(dāng)于x=100*/*p=*p+50;/*相當(dāng)于x=x+50*/printf("x=%d",x);}示例1:閱讀以下的程序,理解通過指針變量訪問普通變量的方法知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉二、歸納分析(1)指針變量也必須先定義后使用,指針變量的一般定義形式是:類型名*指針變量名:(2)變量的地址按如下形式表示:&變量名(3)如果intx,*p;p=&x;

那么p與&x等價

*p與x等價

任務(wù)分析與實(shí)踐C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉算法分析1.聲明指針2.定義變量3.調(diào)用指針進(jìn)行運(yùn)算

4.輸出某車企的上半年的銷售量為56,下半年的銷售量為78,用指針實(shí)現(xiàn)求一年的銷售量。(變量名:上半年銷售量,下半年銷售量)任務(wù)分析與實(shí)踐C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉程序代碼#include"stdio.h"voidmain(){intun=78,on=56,sale,*p,*q,*t;printf("已知某車企的上半年的銷售量為%d,下半年的銷售量為%d\n",on,un);

p=&un;q=&on;t=&sale;*t=*p+*q;printf("總銷售額為%d",*t);}項(xiàng)目七任務(wù)一C語言程序設(shè)計

(2)行進(jìn)中的分叉路口問題的提出

在實(shí)際生活中,車量有很多數(shù)據(jù)比如汽車銷量,電池使用年限,載客人數(shù)等,我們需要對數(shù)據(jù)進(jìn)行計算,那我們看看我們?nèi)绾芜\(yùn)用指針解決這些問題。項(xiàng)目七任務(wù)一C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例1某輛新能源汽車的電池壽命是8年,從鍵盤輸入已經(jīng)使用的年限,輸出剩余年限。(變量名:電池壽命Battery_life,使用年限D(zhuǎn)urable_years,剩余年限Remain_years)算法過程:1.聲明指針2.定義變量3.調(diào)用指針進(jìn)行運(yùn)算

4.輸出項(xiàng)目七任務(wù)一C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例1某輛新能源汽車的電池壽命是8年,從鍵盤輸入已經(jīng)使用的年限,輸出剩余年限。(變量名:電池壽命attery_life,使用年限D(zhuǎn)urable_years,剩余年限Remain_years)#include"stdio.h"voidmain(){ intDurable_years,Battery_life=8,Remain_years,*D,*B,*R;printf("已知某輛新能源汽車的電池壽命是%d年\n",Battery_life);printf("從鍵盤輸入已經(jīng)使用的年限:\n");scanf("%d",&Durable_years);

D=&Durable_years;B=&Battery_life;R=&Remain_years;*R=*B-*D;printf("已知某輛新能源汽車的電池壽命是%d年,已經(jīng)使用的年限為%d年,剩余年限為%d年",*B,*D,*R);}}項(xiàng)目七任務(wù)一C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例2從鍵盤輸入某輛新能源車的載客人數(shù),輸入目前已經(jīng)有的人數(shù),輸出還有可以有幾人坐?(變量名總載客人數(shù)Headcount,目前已有人數(shù)Somepeople,剩余人數(shù)Remainpeople)算法過程:1.聲明指針2.定義變量3.調(diào)用指針進(jìn)行運(yùn)算

4.輸出項(xiàng)目七任務(wù)一C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例2#include"stdio.h"voidmain(){intHeadcount,Somepeople,Remainpeople,*H,*S,*R;H=&Headcount;S=&Somepeople;printf("從鍵盤輸入某輛新能源車的載客人數(shù)\n");scanf("%d",H);

printf("輸入目前已經(jīng)有的人數(shù)\n");scanf("%d",S);R=&Remainpeople;*R=*H-*S;printf("還有可以有%d人坐",*R);}C語言程序設(shè)計項(xiàng)目七汽車數(shù)據(jù)間接顯示(指針)C語言程序設(shè)計項(xiàng)目八項(xiàng)目七0102

03統(tǒng)計某車企的汽車數(shù)量(指針和變量)汽車一年銷售額顯示(指針和數(shù)組)某車企多項(xiàng)數(shù)據(jù)顯示(指針作為函數(shù)參數(shù))引入:

02當(dāng)數(shù)據(jù)的接收和發(fā)送需要多個數(shù)據(jù)時,我們?nèi)绾芜\(yùn)用指針解決問題?知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口任務(wù)目標(biāo)

已知某品牌4S店的一年12月的銷售量分別為{10,12,15,14,16,8,7,14,16,17,11,12},輸出12個月的銷售數(shù)據(jù)。(變量名銷售量數(shù)組,銷售量指針)知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉數(shù)組與指針一個變量有地址,一個數(shù)組包含若干個元素,每個數(shù)組元素都在內(nèi)存中占有存儲單元,他們也都有自己對應(yīng)的地址。數(shù)組元素的指針就是數(shù)組元素的地址。一維數(shù)組中指針的初始化:方法一:inta[10],*p=NULL

;p=a

;方法二:inta[10],*p=NULL

;p=&a[0]

;當(dāng)進(jìn)行如上條件時,可以有如下的等價替換。數(shù)組地址:p+i,&a[i],a+i三者相互等價知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉數(shù)組與指針一個變量有地址,一個數(shù)組包含若干個元素,每個數(shù)組元素都在內(nèi)存中占有存儲單元,他們也都有自己對應(yīng)的地址。數(shù)組元素的指針就是數(shù)組元素的地址。例如:scanf(“%d”,&a[i]);scanf(“%d”,p+i);scanf(“%d”,a+i);三種輸入效果一樣的,運(yùn)用指針能夠提高計算機(jī)的執(zhí)行效率。數(shù)組元素:*(p+i),a[i],*(a+i)三者相互等價例如:printf(“%d”,a[i]);printf(“%d”,*(p+i));printf(“%d”,*(a+i));三種輸出效果一樣的,運(yùn)用指針能夠提高計算機(jī)的執(zhí)行效率。知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉指針運(yùn)算前面已經(jīng)說明了指針就是地址,對地址進(jìn)行賦值會是什么意思呢?前面也可以看出來p+1就是a[1]的地址,同時p+1也可以寫成p++,則指針就有以下的特點(diǎn)。p+1:指向同一個數(shù)組中的下一個元素。p-1:指向同一個數(shù)組中的上一個元素。知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉指針運(yùn)算技巧(1)先執(zhí)行p++,再計算*p通過分析,p++執(zhí)行的是下一個元素的地址,則*p就是下一個元素的值。(2)*p++由于++和*同優(yōu)先級,結(jié)合方向自右而左,因此等價與*(p++)。(3)*(p++)與*(++p)是否相同不相同,*(p++)為先選*p的值,然后值再加1。*(p++)為p先指向下一個元素的地址,然后求下一個元素的值。知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉數(shù)組與指針一維數(shù)組中指針的初始化:方法一:inta[10],*p=NULL

;p=a

;方法二:inta[10],*p=NULL

;p=&a[0]

指針移動時for(p=a

;;p-a<10;p++)scanf(“%d”,p);能夠提高計算機(jī)的執(zhí)行效率。指針不移動時*(p+i)相當(dāng)于a[i];scanf(“%d”,&a[i]);與scanf(“%d”,&p[i]);任務(wù)分析與實(shí)踐C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉算法分析1.聲明指針2.定義變量3.調(diào)用指針進(jìn)行運(yùn)算

4.輸出已知某品牌4S店的一年12月的銷售量分別為{10,12,15,14,16,8,7,14,16,17,11,12},輸出12個月的銷售數(shù)據(jù)。(變量名銷售量數(shù)組,銷售量指針)任務(wù)分析與實(shí)踐C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉程序代碼#include"stdio.h"voidmain(){intSale[12]={10,12,15,14,16,8,7,14,16,17,11,12},*p;printf("請輸出12月份的銷售數(shù)據(jù):");for(p=Sale;p<(Sale+12);p++){ printf("%d",*p);}}

項(xiàng)目七任務(wù)二C語言程序設(shè)計

(2)行進(jìn)中的分叉路口問題的提出

在實(shí)際生活中,有很多數(shù)據(jù)比如汽車銷售額,員工工資等,我們需要對數(shù)據(jù)進(jìn)行計算,那我們看看我們?nèi)绾谓鉀Q這些問題。項(xiàng)目七任務(wù)二C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例1從鍵盤輸入某客車集團(tuán)5名員工的工資,并輸出。(變量名:員工數(shù)組,員工指針)算法過程:1.聲明指針2.定義變量,定義數(shù)組3.調(diào)用指針進(jìn)行運(yùn)算

4.輸出項(xiàng)目七任務(wù)二C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例1從鍵盤輸入某客車集團(tuán)5名員工的工資,并輸出。(變量名:員工數(shù)組,員工指針)voidmain(){inti,employee[5],*p;printf("請輸入五名工人的工資\n");for(i=0;i<5;i++)scanf("%d",&employee[i]);for(p=employee;p<employee+5;p++)printf("工人的工資為%d\n",*p);}項(xiàng)目七任務(wù)二C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例2從鍵盤輸入一名員工1到12月的工資,求和并輸出。(變量名:工資數(shù)組,工資指針)算法過程:1.聲明指針2.定義變量,定義數(shù)組3.調(diào)用指針進(jìn)行運(yùn)算

4.輸出項(xiàng)目七任務(wù)二C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例2voidmain(){ inti,month[12],*p,salary=0;printf("請輸入1到12月的工資\n");for(i=0;i<12;i++)scanf("%d",&month[i]);for(p=month;p<month+12;p++){salary=*p+salary;}printf("工人的總工資為%d\n",salary);}C語言程序設(shè)計項(xiàng)目七汽車數(shù)據(jù)間接顯示(指針)C語言程序設(shè)計項(xiàng)目八項(xiàng)目七010203

統(tǒng)計某車企的汽車數(shù)量(指針和變量)汽車一年銷售額顯示(指針和數(shù)組)某車企多項(xiàng)數(shù)據(jù)顯示(指針作為函數(shù)參數(shù))引入:

03前面我們講解了指針在變量、數(shù)組結(jié)合完成的知識,本節(jié)課我們主要講解指針在函數(shù)中又如何應(yīng)用。知識儲備C語言程序設(shè)計

(2)行進(jìn)中的分叉路口任務(wù)目標(biāo)

已知某品牌4S店的一年12月的銷售量分別為{10,12,15,14,16,8,7,14,16,17,11,12},輸出12個月的銷售數(shù)據(jù)。(變量名銷售量數(shù)組,銷售量指針)知識儲備C語言程序設(shè)計

(1)樹生長程中的分叉一、數(shù)組名可以用作函數(shù)的實(shí)參和形參例如:#include<stdio.h>sort(intarray[]){

…}

voidmain(){intscore[10];

…sort(score);

…}用數(shù)組名作參數(shù)時,若形參數(shù)組中各元素的值發(fā)生變化,實(shí)參數(shù)組元素的值也隨之變化。因?yàn)閷?shí)參數(shù)組和形參數(shù)組共占同一段內(nèi)存單元。知識儲備C語言程序設(shè)計

(1)樹生長程中的分叉二、動態(tài)存儲方式與靜態(tài)存儲方式靜態(tài)存儲方式:程序運(yùn)行期間分配固定的存儲空間。動態(tài)存儲方式:程序運(yùn)行期間根據(jù)需要進(jìn)行動態(tài)的分配存儲空間的方式。知識儲備C語言程序設(shè)計

(1)樹生長程中的分叉三、局部變量和全局變量程序中變量中使用的范圍不同:作用域(Scope),就是變量的有效范圍。變量的作用域取決于變量的訪問性。局部變量:函數(shù)內(nèi)部的變量稱為局部變量(LocalVariable),它的作用域僅限于函數(shù)內(nèi)部,離開該函數(shù)后就是無效的,再使用就會報錯。1.主函數(shù)中定義的變量也只能在主函數(shù)中使用,不能在其他函數(shù)中使用。2.允許在不同的函數(shù)中使用相同的變量名,他們代表不同變量,分配不同的存放單元,互不相干,不會發(fā)生混淆。3.形參變量、在函數(shù)體內(nèi)定義的變量都是局部變量。實(shí)參給形參傳值的過程也就是給局部變量賦值的過程。知識儲備C語言程序設(shè)計

(1)樹生長程中的分叉三、局部變量和全局變量全局變量:在所有函數(shù)外部定義的變量稱為全局變量(GlobalVariable),它的作用域默認(rèn)是整個程序,也就是所有的源文件,包括.c和.h文件。它的作用域是從聲明時刻開始,到程序結(jié)束。1.全局變量定義必須在所有函數(shù)之外。2.全局變量可加強(qiáng)函數(shù)模塊之間的數(shù)據(jù)聯(lián)系,但是函數(shù)又依賴這些變量,降低函數(shù)的獨(dú)立性。3.在同一源文件中,允許全局變量和局部變量同名,在局部變量作用域內(nèi),同名的全局變量不起作用。知識儲備C語言程序設(shè)計

(1)樹生長程中的分叉四、示例#include"stdio.h"intsum1=0;//全局變量voidaddNumbers(intnum1,intnum2){intsum=0;//局部變量sum=sum+num1+num2;sum1=sum1+num1+num2;printf("\n兩數(shù)之和子函數(shù)sum=的值是%d\n",sum);printf("\n兩數(shù)之和子函數(shù)sum1=的值是%d\n",sum1);}voidmain(){intsum=0;//局部變量intnum1,num2;//局部變量printf("\n請輸入兩個數(shù);");scanf("%d%d",&num1,&num2);addNumbers(num1,num2);addNumbers(num1,num2);printf("\n兩數(shù)之和主函數(shù)sum=的值是%d\n",sum);}知識儲備C語言程序設(shè)計

(1)樹生長程中的分叉四、示例觀察可以看到第二次sum1的值為20了。任務(wù)分析與實(shí)踐C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉算法分析1.聲明指針2.定義變量3.調(diào)用指針進(jìn)行運(yùn)算

4.輸出已知某品牌4S店的一年12月的銷售量分別為{10,12,15,14,16,8,7,14,16,17,11,12},輸出12個月的銷售數(shù)據(jù)。(變量名銷售量數(shù)組,銷售量指針)任務(wù)分析與實(shí)踐C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉程序代碼#include"stdio.h"voidprint12(intsale[],intn){int*s; printf("12個月的銷售數(shù)據(jù)為:"); for(s=sale;s<(sale+n);s++) { printf("%d",*s); }

}voidmain(){ intsale[12]={10,12,15,14,16,8,7,14,16,17,11,12},*s; print12(sale,12);

}項(xiàng)目七任務(wù)三C語言程序設(shè)計

(2)行進(jìn)中的分叉路口問題的提出

在實(shí)際生活中,有很多數(shù)據(jù)比如汽車銷售額,員工工資等,我們需要對數(shù)據(jù)進(jìn)行計算,那我們看看我們?nèi)绾谓鉀Q這些問題。項(xiàng)目七任務(wù)三C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例1從鍵盤輸入某客車集團(tuán)5名員工的工資,并輸出。

(變量名:員工數(shù)組,員工指針)算法過程:1.聲明指針2.定義變量,定義數(shù)組3.調(diào)用輸入函數(shù)

4.調(diào)用輸出函數(shù)項(xiàng)目七任務(wù)三C語言程序設(shè)計

(2)行進(jìn)中的分叉路口(1)樹生長程中的分叉典型案例1從鍵盤輸入某客車集團(tuán)5名員工的工資,并輸出。(變量名:員工數(shù)組,員工指針)voidscanfEmployees(intEmployees[],intn){int*p,i;for(p=Employees,i=1;p<(Employees+n);p++,i++){ printf("請輸入第%d個人的工資:",i); scanf("%d",p);}}

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論