日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

交换两个整形变量的数值

發(fā)布時間:2023/12/13 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 交换两个整形变量的数值 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?課堂問題一:

#include<stdio.h>void swap(int *p,int *q) {int *m;printf("m=%d\n",m);printf("%s\n",*m);*m=*p;*p=*q;*q=*m; } int main(){int a,b;scanf("%d,%d",&a,&b);swap(&a,&b);printf("a=%d b=%d\n",a,b);return 0;}

?

因為*m沒有被初始化所以在直接對它進行使用的時候,它指向的是一個未知的單元格所以所以在對它它所指向的單元進行更改的時候是一種危險的操作是錯誤的,即使執(zhí)行成功可能也是碰運氣。

?

課堂問題二:

#include<stdio.h>void swap(int *p,int *q) {int *m;m=p;p=q;q=m;printf("p=%x q=%x\n",p,q);} int main(){int a,b;scanf("%d,%d",&a,&b);swap(&a,&b);printf("a=%d b=%d\n",a,b);return 0;}

我們可以理解a b m p q是幾個大房間 a b 房間中存放著我們想要的東西 而p q房間中存放著a b房間的鑰匙 也就是a b的地址 想要打開房間就需要地址也就是鑰匙

但是在swap中用m對p q進行交換的只是a b兩個房子的鑰匙

把原來a 的鑰匙放在了q原來在q中的b放在了p中這樣 只是換了一個房子存儲了鑰匙既a b的地址

這樣a b中存儲的東西是不會發(fā)生變化的。

?

課堂問題三:

#include<stdio.h>int *comp(int *p,int *q) {if(*p>*q){return p;}else {return q;} } int main() {int a=6;int b=23;int *c,*p,*q;p=&a;q=&b;c=comp(p,q);printf("a=%d b=%d\n",a,b);printf("max=%d\n",*c);return 0;}

?

指針在使用時常見的錯誤:

*和[]在定義的時候只是說明作用不能誤解為運算符

*,[]和&是C語言提供的運算符

分別是取地址運算符、指針運算符和下標(biāo)運算符,其中,&與*互為逆運算.在表達式中,它們的意義很明確,但是在定義中*、[]

只是起說明作用,不能看作運算符

?

指針變量未初始化

指針在使用的時候必須進行初始化,如果使用未初始化的指針,因為它沒有初始化他將會得到一個不確定的值,

那么它的和指向也是不確定的,那么它就有可能指向了系統(tǒng)所在的地址這種操作是十分危險的。

?

指針類型錯誤

指針變量只能存儲相同類型的變量的地址 如果存儲的類型不同將會發(fā)生錯誤。

?

用數(shù)據(jù)直接給指針變量賦值

指針變量中存儲的其實就是一些整數(shù)的地址數(shù)據(jù),但是如果直接用數(shù)據(jù)給指針變量賦值那么編譯就會出現(xiàn)錯誤。

如:

int a,*p; a=11021; p=a;

?

指針之間相互賦值

如果指針之前相互賦值不當(dāng)會造成內(nèi)存空間丟失現(xiàn)象

?

?

1 #include<stdio.h> 2 #include<time.h> 3 #include<windows.h> 4 5 void swap(int *a,int *b); //全局聲明swap函數(shù) 6 int main和 7 { 8 int a,b,choose; //定義整型變量 用于存儲a,b的值 和對選擇操作提示輸入值的存儲 9 int *ip1,*ip2; //定義兩個指針變量 用于存儲a,b的地址 10 ip1=&a; 11 ip2=&b; //將a,b的地址傳遞給指針變量 ip1和ip2 12 srand(time(NULL)); 13 a=rand()%100+1; 14 b=rand()%100+1; //生成兩個隨機數(shù)并賦值給a,b 15 printf("輸入‘1’對兩數(shù)進行交換:"); 16 scanf("%d",&choose); //輸入選擇操作的提示 17 18 if(choose==1) //當(dāng)輸入值為1的時候 執(zhí)行swap函數(shù) 19 { 20 printf("正在為您進行交換請稍后"); 21 for(int i=0;i<5;i++) 22 { 23 Sleep(1000); //模擬系統(tǒng)正在進行處理 Sleep(1000) 讓系統(tǒng)暫停一秒 24 printf("."); //也起到了讓系統(tǒng)釋放內(nèi)存的效果 讓程序運行更加高效 25 } 26 printf("\n"); 27 printf("交換前 a=%d\tb=%d\n",a,b); 28 swap(ip1,ip2); 29 } 30 else 31 { 32 printf("輸入錯誤退出程序!"); 33 34 exit(0); 35 } 36 37 } 38 39 void swap(int *a,int *b) //定義的swap 函數(shù)內(nèi)容 40 { 41 int z; 42 z=*a; 43 *a=*b; 44 *b=z; //通過指針對a,b的進行交換 45 printf("交換后 a=%d\tb=%d",*a,*b); 46 }

?

輸入‘1’對兩數(shù)進行交換:1 正在為您進行交換請稍后..... 交換前 a=69 b=72 交換后 a=72 b=69

  

輸入‘1’對兩數(shù)進行交換:a 輸入錯誤退出程序!

  

?

?

總結(jié):通過生成1到100的隨機數(shù)來填充a,b的值 并將a,b的地址賦給相應(yīng)的指針變量

同過輸入數(shù)字進行判斷 是否執(zhí)行后續(xù)的程序如果輸入不為1將直接退出程序

如果輸入正確 通過Sleep()模擬系統(tǒng)正在處理將調(diào)用swap函數(shù) 對a,b的值進行調(diào)換并輸出

?

轉(zhuǎn)載于:https://www.cnblogs.com/foreverW/p/6597158.html

總結(jié)

以上是生活随笔為你收集整理的交换两个整形变量的数值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。