指標練習 15

2021-08-13 03:49:03 字數 3822 閱讀 6166

實驗十五  指標的使用

實驗要求:

1、掌握指標的定義;

2、理解指標的含義;

3、掌握指標的基本使用;

4、能進行程式除錯,並修改程式。

特別要求:

在實驗中遇到困難時,切忌不要動不動就問老師,而是應該先思考。如果確實不能解決困難,先與坐在旁邊的同學討論,而無論這個同學在以前是否認識。如果有同學問你問題,無論你是否能解決這個問題,都應該和他討論。如果討論了仍然不能解決問題,就一起問老師。討論問題的好處在於能夠深刻的理解問題,記住問題。

程式設計

1.      指標初識

題目描述

定義int、double、float、char指標變數,要求輸出指標變數的位址(&p)、指標變數的分配的記憶體空間(sizeof(p))、指標變數(*p).

int示例程式如下:

#include

intmain()

int *p;

int a=9;

p=&a;

printf("%d\n",&p);

printf("%d\n",sizeof(p));

printf("%d\n",*p);

return 0;

/*p11_1.c*/

#include

int main()

int *p;double *a;float *b;char *c;

int p=9;double a=8.00;float b=7.0;char c=k;

p=&p;a=&a;b=&b;c=&c;

printf("%d %d %d %d\n",&p,&a,&b,&c);

printf("%d %d %d %d\n",sizeof(p),sizeof(a),sizeof(b),sizeof(c));

printf("%d %lf %f %c\n",*p,*a,*b,*c);

return 0;

2,指向字元 10分

題目描述

定義2個字元變數c1,c2,  輸入兩個字元,乙個為數字,乙個為字母,定義兩個字元指標p1,p2,讓p1指向數字字元,p2指向字母字元,然後輸出             

輸入描述

兩個字元,乙個字母,乙個數字             

輸出描述

數字在前,字母在後             

樣例輸入

a 3               

樣例輸出

3 a 

/*p11_2.c*/

#include

int main()

{ char c1,c2,*p1,*p2;

p1=&c1;p2=&c2;

scanf("%c %c",&c1,&c2);

if(c2>='0' && c2<='9')

p1=&c2;

p2=&c1;

printf("%c %c\n",*p1,*p2);

return 0;

3、定義二個整型變數a、b和二個指標變數qa、qb,輸入2個整數,通過指標qa、qb,將兩個整數分別儲存到變數a、b後,通過指標qa、qb操作,使qa指向較小的整數,qb指向較大的整數,並輸出。 10分

題目描述

定義二個整型變數a、b和二個指標變數qa、qb,輸入2個整數,通過指標qa、qb,將兩個整數分別儲存到變數a、b後,通過指標qa、qb操作,使qa指向較小的整數,qb指向較大的整數,並輸出。             

輸入描述

輸入2個整數給指標qa、qb             

輸出描述

使qa指向較小的整數,qb指向較大的整數             

樣例輸入

6 3               

樣例輸出

3 6/*p11_3.c*/

#include

int main()

int a,b,*qa,*qb,t;

qa=&a;qb=&b;

scanf("%d %d",qa,qb);

if(*qa>*qb)

{   t=*qa;

*qa=*qb;

*qb=t;

printf("%d %d\n",*qa,*qb);

return 0;

4、指向最大值 10分

題目描述

定義整形變數a,b, 定義指標p,q, 輸入兩個整數,利用p,q,通過指標操作,使q指向較大的數,q指向較小的數              

輸入描述

兩個整數             

輸出描述

大的整數在前,小的整數在後             

樣例輸入

1 2               

樣例輸出

2 1        

/*p11_4.c*/

#include

int main()

int a,b,*p,*q,t;

p=&a;q=&b;

scanf("%d %d",p,q);

if(*p<*q)

{   t=*p;

*p=*q;

*q=t;

printf("%d %d\n",*p,*q);

return 0;

5、使用指標的方式來按從大到小的交換兩個整數。要求編寫編寫乙個函式void swap(int *p1,int *p2),在主函式中呼叫swap函式。

輸入樣例

6 9輸出描述

9 6/*p11_5.c*/

#include

int main()

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

int a,b,*p,*q;

p=&a;q=&b;

scanf("%d %d",p,q);

swap(p,q);

printf("%d %d\n",*p,*q);

return 0;

void swap(int *p1,int *p2)

{  int t;

if(*p1<*p2)

{   t=*p1;

*p1=*p2;

*p2=t;

6、題目描述

編寫函式void reverse(char* s);

將形參s所指向的字串反轉(如s指向字串為」hello world」,反轉後為」dlrow olleh」)。編寫main函式,在main中呼叫reverse函式,並輸出反轉後的字串。           

輸入描述

輸入字串」hello world」,             

輸出描述

輸出」dlrow olleh」             

樣例輸入

hello world               

樣例輸出

dlrow olleh

/*p11_6.c*/

#include

int main()

void reverse(char* s);

char *q,*p,a[100];

q=a;p=a;

gets(a);

reverse(a);

while(*q!='\0')

q++;

while(q!=p-1)

printf("%c",*(--q));

printf("\n");

return 0;

void reverse(char* s)

總結(本次實驗遇到的問題、解決方法,今後要注意的地方)

1 不同型別變數定義用『,』號,沒有用『;』

2  注意指標變數可以當陣列使用。

每日練習15

位址 128.10.0.0 是 位址。正確答案 b 你的答案 b 正確 a.a類 b.b類 c.c類 d.d類 int fun int a fun 21 結果是 正確答案 d 你的答案 a 錯誤 a.10 b8c.5 d.31 解析 答案 d 1 5,這裡1左移5位相當於1乘以2的5次方,也就是32...

SICP練習 1 練習1 1 練習1 5

練習1.1 這道題主要是關於簡單的數字運算,我們看完之後可以在 mit scheme 中進行驗算。如果環境不熟悉,可以參見 scheme 歸納 的第一篇博文。如果發現在 mit scheme 等環境上的運算結果和自己算的不一樣,也應該再仔細看看在書寫 的時候有沒有手誤。練習1.2 這是一道將表示式轉...

shell指令碼練習 15

題目 請嘗試寫乙個指令碼。呼叫指令碼,會列印當前系統時間和日期,所有已登入的使用者和系統執行時間。並將這些資訊儲存到乙個日誌檔案中。1.date 注意,區別與其他語言的獲取時間的對應選項字元 如分是 m秒是 s 獲取時間 time date y m d h m s 2.獲取當前登入使用者。w log...