C語言實(shí)驗(yàn)八、指針程序設(shè)計(jì)詳解_第1頁
C語言實(shí)驗(yàn)八、指針程序設(shè)計(jì)詳解_第2頁
C語言實(shí)驗(yàn)八、指針程序設(shè)計(jì)詳解_第3頁
C語言實(shí)驗(yàn)八、指針程序設(shè)計(jì)詳解_第4頁
C語言實(shí)驗(yàn)八、指針程序設(shè)計(jì)詳解_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

實(shí)用標(biāo)準(zhǔn)文案實(shí)驗(yàn)八 指針的應(yīng)用一、實(shí)驗(yàn)?zāi)康?.掌握指針變量的定義和引用。2.掌握指針與變量的程序設(shè)計(jì)方法3.掌握指針與數(shù)組的程序設(shè)計(jì)方法4.掌握指針與字符串的程序設(shè)計(jì)方法5.掌握指針與函數(shù)的程序設(shè)計(jì)方法二、實(shí)驗(yàn)內(nèi)容1.[目的]訪問變量的地址。[ 題 目 內(nèi) 容 ] 已 知 , char a;int x;float p,q; 而 且a=’A’;x=125;p=10.25;q=18.75; 編寫程序顯示變量 a,x,p,q的值及其地址。[輸入]無[輸出]變量a,x,p,q的值及其地址[提示]使用運(yùn)算符&,地址輸出采用%u格式(因?yàn)閮?nèi)存地址是無符號(hào)的整數(shù))。#include<stdio.h>voidmain(){chara;intx;floatp,q;a='A';x=125;p=10.25;q=18.75;printf("%cisstoredataddr%u.\n",a,&a);printf("%disstoredataddr%u.\n",x,&x);printf("%fisstoredataddr%u.\n",p,&p);精彩文檔實(shí)用標(biāo)準(zhǔn)文案printf("%fisstoredataddr%u.\n",q,&q);}Aisstoredataddr1245052.125isstoredataddr1245048.10.250000isstoredataddr1245044.18.750000isstoredataddr1245040.Pressanykeytocontinue2.[目的]通過指針訪問變量。[題目內(nèi)容]已知,intx,y;int*ptr; 而且x=10;ptr=&x;y=*ptr; ,運(yùn)行下列程序,使用運(yùn)算符*來訪問指針?biāo)傅闹?。[輸入]無[輸出]x,&x、*&x,&x、*ptr,ptr、y,&*ptr、ptr,&ptr 、y,&y。[提示]地址輸出采用%u格式#include<stdio.h>voidmain(){intx,y;int*ptr;x=10;ptr=&x;y=*ptr;printf("%disstoredataddr%u.\n",x,&x);精彩文檔實(shí)用標(biāo)準(zhǔn)文案printf("%disstoredataddr%u.\n",*&x,&x);printf("%disstoredataddr%u.\n",*ptr,ptr);printf("%disstoredataddr%u.\n",y,&*ptr);printf("%disstoredataddr%u.\n",ptr,&ptr);printf("%disstoredataddr%u.\n",y,&y);*ptr=25;printf("\nNowx=%d\n",x);}3.[目的]練習(xí)指針表達(dá)式。[ 題 目 內(nèi) 容 ] 已 知 , int x,y,a,b;int *ptr1,*ptr2; 而 且x=12;y=4;ptr=&x;ptr2=&y; ,編寫程序,當(dāng)執(zhí)行表達(dá)式: a=*ptr1**ptr2-6;以及: b=(4*(-*ptr2))/(*ptr1)+10; 后,各變量的值分別為多少?[輸入]無[輸出]各變量的值。[提示]地址輸出采用%u格式#include<stdio.h>voidmain(){intx,y,a,b;int*ptr1,*ptr2;x=12;y=4;ptr1=&x;精彩文檔實(shí)用標(biāo)準(zhǔn)文案ptr2=&y;a=*ptr1**ptr2-6;b=(4*(-*ptr2))/(*ptr1)+10;printf("%disstoredataddr%u.\n",x,&x);printf("%disstoredataddr%u.\n",y,&y);printf("%disstoredataddr%u.\n",*ptr1,ptr1);printf("%disstoredataddr%u.\n",*ptr2,ptr2);printf("a=%d \n",a);printf("b=%d \n",b);}4.[目的]指針與數(shù)組[題目內(nèi)容]已知,int*p,sum,i; int x[5]={5,9,6,3,7}; ,編寫程序,使用指針來計(jì)算數(shù)組中所有元素的總和。[輸入]無[輸出]Element Value Addressx[0]51245024x[1]91245028x[2]61245032x[3]31245036x[4]71245040精彩文檔實(shí)用標(biāo)準(zhǔn)文案sum=30[提示]關(guān)鍵語句:sum=sum+*p; 以及p++;#include<stdio.h>voidmain(){int*p,sum=0,i;intx[5]={5,9,6,3,7};p=x;printf("Element Value Address\n\n");for(i=0;i<5;i++){printf("x[%d] %d %u\n",i,*p,p);sum=sum+*p;p++;}printf("sum=%d\n",sum);}5.[目的]指針與數(shù)組[題目內(nèi)容]編寫一個(gè)函數(shù),用于對(duì)作為參數(shù)的數(shù)組中的元素求平均值,函數(shù)以指針方式進(jìn)行處理。平均值為函數(shù)的返回值。[輸入]10個(gè)實(shí)數(shù)[輸出]平均值精彩文檔實(shí)用標(biāo)準(zhǔn)文案[提示]函數(shù)原型 floataverage(intx[],intn); 關(guān)鍵語句:float*p;p=x;for(i=0;i<n;i++,p++)sum=sum+*p;#include<stdio.h>voidmain(){floataverage(floatx[],intn);inti;floata[10],ave;printf("Enter10numbers:");for(i=0;i<10;i++)scanf("%f",&a[i]);ave=average(a,10);printf("ave=%f\n",ave);}floataverage(floatx[],intn){floatave1,sum=0.0;inti;float*p;精彩文檔實(shí)用標(biāo)準(zhǔn)文案p=x;for(i=0;i<n;i++,p++)sum=sum+*p;ave1=sum/n;returnave1;}6.[目的]指針與字符串[題目內(nèi)容] 已知,char name[20]="DELHIk"; int length; char*cptr=name;,編寫程序,使用指針來確定字符串的長度。[輸入]無[輸出]字符串的長度[提示]關(guān)鍵語句: while(*cptr!='\0') cptr++; length=cptr-name; 先將指針定位于字符串開始處,利用循環(huán)結(jié)構(gòu)將指針移動(dòng)到字符串尾部,length=cptr-name; 即為字符串長度。#include<stdio.h>voidmain(){charname[20]="DELHIk";intlength;char*cptr=name;精彩文檔實(shí)用標(biāo)準(zhǔn)文案printf("%s\n",name);while(*cptr!='\0'){printf("%c %u\n",*cptr,cptr);cptr++;}length=cptr-name;printf("length=%d\n",length);}7.[目的]指針與函數(shù)[題目內(nèi)容]使用指針作函數(shù)參數(shù),編寫用于交換兩個(gè)參數(shù)值的函數(shù)。調(diào)用該函數(shù)用于對(duì)從鍵盤輸入的兩個(gè)整數(shù)進(jìn)行交換。[輸入]x=100,y=200[輸出]x=200,y=100[提示]用于交換兩個(gè)參數(shù)值的函數(shù)原型為: exchange(int*a,int*b);#include<stdio.h>voidmain(){voidexchange(int*a,int*b);intx,y;printf("Entertwointegers:");scanf("%d%d",&x,&y);精彩文檔實(shí)用標(biāo)準(zhǔn)文案printf("x=%d y=%d\n",x,y);exchange(&x,&y);printf("x=%d y=%d\n",x,y);}voidexchange(int*a,int*b){intt;t=*a;*a=*b;*b=t;}8.[目的]函數(shù)返回指針[題目內(nèi)容]有函數(shù):int*larger(int*a,int*b){if(*a>*b)returna;elsereturnb;}和主函數(shù):#include<stdio.h>voidmain()精彩文檔實(shí)用標(biāo)準(zhǔn)文案{int*larger(int*a,int*b);intx=10,y=20;int*p;p=larger(&x,&y);printf("%d\n",*p);}運(yùn)行程序,給出運(yùn)行結(jié)果,并說明此程序的功能。9.[目的]指針綜合應(yīng)用[題目內(nèi)容]假設(shè)已有函數(shù):voidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}編寫程序,輸入 3個(gè)整數(shù),調(diào)用 swap函數(shù),完成將 3個(gè)整數(shù)按從小到大順序輸出的功能。[輸入]3個(gè)數(shù)[輸出]從小到大順序輸出[提示]關(guān)鍵語句:if(a>b)swap(p1,p2);if(a>c)swap(p1,p3);精彩文檔實(shí)用標(biāo)準(zhǔn)文案if(b>c)swap(p2,p3);#include<stdio.h>voidmain(){voidswap(int*p1,int*p2);inta,b,c;int*p1,*p2,*p3;pr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論