欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C語言程序設(shè)計實驗十指針

      時間:2019-05-12 06:54:41下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《C語言程序設(shè)計實驗十指針》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《C語言程序設(shè)計實驗十指針》。

      第一篇:C語言程序設(shè)計實驗十指針

      C語言程序設(shè)計實驗十——指針

      【實驗1】

      實驗題目:

      1、下列代碼片段哪里有錯誤?

      char var1,ptr1;

      var1 = ?x?;

      ptr1 = &var1;

      2、設(shè)有如下定義:

      Double var1, *ptr1, *ptr2;

      Float* ptr3;

      Int var2, *var4;

      那么,var1, *ptr1, ptr2,*ptr2,ptr3,* ptr3,var2, var4,*var4個屬于哪種數(shù)據(jù)類型?

      3、下列代碼片段在哪里有錯誤?

      Char c = ? A ?;

      Char * p;

      p = c;或*p=?A?;

      4、下列代碼片段的輸出結(jié)果是什么?

      charvar1 = ? S ?;

      charvar2 = ? X ?;

      char*ptr1, *ptr2;

      ptr1 = &var1;

      ptr2 = &var2;

      *ptr2 = *ptr1;

      printf(“%ct%cn”, *ptr1, var2);

      【實驗2】

      實驗題目:輸入3個整數(shù),按由小到大的順序輸出。

      【實驗3】

      實驗題目:輸入10個整數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換。

      實驗要求:寫3個函數(shù):(1)輸入10個數(shù);(2)進行處理;(3)輸出10個數(shù)。

      【實驗4】輸入年和天數(shù),輸出對應(yīng)的年、月、日。

      例如:輸入2000和61,輸出2000-3-1。

      要求:都用指針實現(xiàn)。

      第二篇:C語言程序設(shè)計實驗七:函數(shù)、數(shù)組、指針

      C語言程序設(shè)計實驗七:函數(shù)、數(shù)組、指針

      1、程序運行后,用戶任意輸入一個字符串,求出字符串長度,然后輸出字符串內(nèi)容及個 數(shù)。不能使用strlen函數(shù)。

      求字符串長度函數(shù)的函數(shù)原型必須如下:

      int MyStrLenPt(char *str)

      若輸入:nihao123!

      則輸出:nihao123!:9 chars2、編寫一個對一維數(shù)組進行排序的程序。

      要求:

      寫兩個函數(shù),一個主函數(shù),一個sort函數(shù)。在主函數(shù)中完成數(shù)組的輸入和輸出,通過調(diào) 用sort函數(shù)對數(shù)組進行排序。

      sort函數(shù)的原型為:voidsort(int*p, intn);

      說明:

      (1)請大家按學(xué)號來坐,便于考勤和管理。

      (2)請珍惜寶貴的實驗時間!不要做與實驗無關(guān)的事情,比如聊QQ、上網(wǎng)或打游戲。

      (3)直接把C語言代碼粘貼到相應(yīng)的實驗題目下方,上交實驗報告時只交word文檔。

      (4)文檔名稱:班級+學(xué)號后2位+姓名+實驗編號,例如11電1班12張山實驗七.doc。

      第三篇:C語言程序設(shè)計教案 第十章指針

      第十章 指 針

      課題:

      教學(xué)目的: 教學(xué)重點: 教學(xué)難點: 第十章 指針

      §1-§2

      1、了解指針與地址的概念

      2、掌握指針變量的定義、初始化及指針的運算 指針變量的定義、初始化及指針的運算

      指針的運算

      步驟一 復(fù)習(xí)引導(dǎo)

      指針是C語言的一個重要概念,也是C語言的一個重要特色。正確而靈活地運用它,可以有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu);能動態(tài)分配內(nèi)存;能方便地使用字符串;有效而方便地使用數(shù)組;在調(diào)用函數(shù)時能得到多于1個的值;能直接處理內(nèi)存地址等,這對設(shè)計系統(tǒng)軟件是很必要的。

      指針的概念比較復(fù)雜,使用也比較靈活,因此初學(xué)者時常會出錯,務(wù)請在學(xué)習(xí)本章內(nèi)容時十分小心。

      步驟二 講授新課

      §10.1 地址和指針的概念

      計算機的主存儲器被分成一個個存儲單元,為了區(qū)分各存儲單元,要為每個存儲單元編號,這個編號即地址。

      例:i =3;

      或 scanf(“%d”, &i);

      是將3送給 i所在的空間。

      例:將3送到變量I_pointer所“指向”的單元(即I所標志的單元)。

      所謂“指向”,是通過地址來體現(xiàn)的,I_pointer中的值為2000,它是變量I 的地址,這樣就在I_pointer和變量之間建立起一種聯(lián)系,即通過I_pointer能知道I的地址,從而找到變量I的內(nèi)存單元。因而在C語言中,將地址形象化地稱為“指針”。

      意思是通過它能找到以它為地址的內(nèi)存單元。一個變量的地址稱為該變量的“指針”。

      內(nèi)存單元的地址和內(nèi)存單元的內(nèi)容是兩個不同的概念。

      指針:就是地址,即內(nèi)存單元的編號。

      指針變量:用來存放另一變量的地址(即指針)的變量。

      如:地址2000是變量 i的指針;i_pointer是指針變量,其值就是指針2000。

      §10.2變量的指針和指向變量的指針變量

      變量的指針就是變量的地址。

      存放變量地址的變量是指針變量,用來指向另一個變量。

      *i_pointer 表示 i_pointer 所指向的變量。

      一、定義一個指針變量

      指針變量的定義包含三個方面的內(nèi)容:

      ⑴ 指針類型說明,即定義變量為一個指針變量 ⑵ 指針變量名

      ⑶ 變量值(指針)所指向的變量的數(shù)據(jù)類型。格式:

      存儲類型

      基類型

      *指針變量名;例:int *pointer_1, *pointer_2;

      float *pointer_3;

      char *pointer_4;

      二、指針的引用

      指針變量有兩個運算符: & :取地址運算符

      功能:取變量地址;單目,右結(jié)合。

      * :取內(nèi)容運算符(“間接訪問”運算符)

      功能:只能跟地址,取變量所指向單元的內(nèi)容;單目,右結(jié)合。

      例:&a為變量a的地址,*p 為指針變量p所指向的存儲單元。

      例:int a=5, *p=&a;

      printf(“%d”, *p);main(){ int a,b;

      int *pointer_1,*pointer_2;

      a=100;b=10;

      pointer_1=&a;

      /*把變量a的地址賦給pointer_1*/

      pointer_2=&b;

      /*把變量b的地址賦給pointer_2*/

      printf(“%d,%dn”,a,b);

      printf(“%d,%dn”,*pointer_1, *pointer_2);} 輸出結(jié)果:100, 10

      100, 10

      評注:

      1、在第3行雖然定義了兩個指針變量,只是提供了兩個指針變量,但并未指向任何一個整型變量。稱為指針“懸空”。

      2、最后一行的*pointer_1和pointer_2就是變量a和b。

      3、程序中兩處出現(xiàn)*pointer_1等,含義不同。程序第3行中的*pointer_1表示定義指針變量pointer_1。它前面的*只是表示該變量是指針變量。程序最后一行中的*pointer_1則代表變量,即pointer_1所指向的變量。

      4、第5行中的pointer_1=&a 是將a的地址賦給指針變量pointer_1,而不是*pointer_1。

      注意:不應(yīng)寫成:*pointer_1=&a;

      5、從上例中可看出,*pointer_1等價于a,*pointer_2等價于b,故凡在程序中出現(xiàn)a的地方均可用 *pointer_1 代替。所以,若有: int x, y, *px=&x;則下面的運算均是正確的: y=*px+1;

      /*把 x 的內(nèi)容加1 送變量y*/ printf(“%dn”, px);

      /*打印當(dāng)前x 的內(nèi)容*/ d=sqrt((double)px);

      /*把x的平方根送變量d*/ px=0;

      /*把 x 置為0*/ *px+=1;

      /*把 x 的值加 1*/(*px)++;

      /*使 x 的值加 1*/ y=(*px)++;

      /*即y=x, x++*/

      6、假設(shè)px和py都被定義為指向int 對象的指針,而且px當(dāng)前已指向了int 型變量x,則執(zhí)行:

      py=px;

      /*把指針px的內(nèi)容拷貝到指針py中去*/ 即

      py和px 這兩個不同的指針指向了同一對象x

      7、指針不是整數(shù),不能將它與整數(shù)混為一談。例:

      # include main(){ int x=100,*p;p=x;printf(“%d”, p);}

      例如:

      # include main(){ int a, b, *d=&a;

      b = d;

      printf(“%d n”, b);

      ……

      }——編譯不出錯,但得不到希望的值

      關(guān)于&和*運算符的說明:

      假設(shè)已執(zhí)行

      pointer_1=&a;

      1、&*pointer_1含義是什么?

      &*pointer_1與&a相同,即變量a的地址。

      2、*&a的含義是什么?

      先進行&a運算,得a的地址,再進行*運算。

      *&a、*pointer_1及變量a等價。

      3、(*pointer_1)+ + 相當(dāng)于a + +。

      它與*pointer_1 + + 不同。

      4、*pointer_1 + + 等價于*(pointer_1 + +),即先進行*運算,得到a的值,然后使pointer_1的值改變,這樣pointer_1不再指向a了。

      例10.2:輸入a和b兩個整數(shù),按先大后小的順序輸出a和b。

      main(){ int *p1,*p2,*p, a, b;

      scanf(“%d,%d”,&a,&b);

      p1=&a;p2=&b;

      if(a

      {p=p1;p1=p2;p2=p;}

      printf(“n a=%d,b=%dn”,a,b);

      printf(“max=%d,min=%dn”,*p1,*p2);

      } 運行情況: 5,9 a=5,b=9 max=9,min=5

      三、指針變量作為函數(shù)參數(shù)

      例10.3對輸入的兩個整數(shù)按大小順序輸出。先考察如下程序,看是否能得到預(yù)期的結(jié)果

      swap(int p1, int p2){ int temp;temp = p1;p1 = p2;p2 =temp;} main(){ int a, b;

      scanf(“%d, %d”, &a, &b);

      if(a

      printf(“n%d,%dn”,a,b);} 不能得到預(yù)期的結(jié)果。改為:

      swap(int *p1,int *p2){ int temp;

      temp = *p1;

      *p1 = *p2;

      *p2 =temp;} main(){ int a,b;

      int *pointer_1,*pointer_2;

      scanf(“%d,%d”,&a,&b);

      pointer_1=&a;

      pointer_2=&b;

      if(a

      swap(pointer_1,pointer_2);

      printf(“n%d,%dn”,a,b);}

      注:如果想通過函數(shù)調(diào)用得到n個改變的值,可以:

      1、在主調(diào)函數(shù)中設(shè)n 個變量,用n個指針變量指向它們;

      2、然后將指針變量作實參,將這n 個變量的地址傳給所調(diào)用的函數(shù)的形參;

      3、通過形參指針變量,改變該n個變量的值;

      4、主調(diào)函數(shù)中就可以使用這些改變了值的變量。

      四、指針(變量)的初始化 指針置初始化值的格式:

      存儲類型

      基類型

      *指針名=初始化值; 如:main()

      { static int a;

      int *p=&a, *p1=p;

      …… } 再如: int *p = 0;

      int *p = NULL;

      五、指針的運算

      1、指針的算術(shù)運算

      指針僅能進行加、減算術(shù)運算

      如:p+n , p-n , p++ , p--, ++p ,--p

      p-= n , p+= n , p1-p2 等 其中n是整數(shù),p、p1、p2均為指針;

      施行加法運算時,指針向地址增大的方向移動; 施行減法運算時,指針向地址減小的方向移動; 移動長度取決于指針的基類型,由計算機決定; 如有:int a,b,c, *pt =&a;

      pt++ 則指針向后移動兩個字節(jié); 再如:main()

      { int *p1,a=8,b=3;

      p1=&a;

      printf(“%d,%dn”,(*p1)++, *p1++);

      printf(“%d,%dn”,a, *p1);

      } 運行結(jié)果:3,8,4 注:p1+k = p1+k*sizeof(p1的基類型);

      p1-k = p1-k*sizeof(p1的基類型);如:

      strlen(char *s)

      { char *p=s;

      while(*p!=?