1樓:匿名使用者
你這樣編寫有錯,你的在比較的時候你都認為p1指向a,p2指向b,p3指向c,但是其實如果指標交換其值以後就不是這麼指向了,所以結果出錯。但是就是你這樣不錯,你也最好不要這麼寫,你在將變數a,b,c的值賦給指標p1,p2,p3指向的值以後最好不要在利用變數a,b,c。不然程式某些稍微修改下,其它地方也得修改,這樣很不好,例如你修改"p1=&a;p2=&b;p3=&c;"為"p1=&c;p2=&b;p3=&a;"後下面的比較都要做大幅改動,按你的思路該這麼寫:
#include
int main()
if(*p2 > *p3)
if(*p1 > *p2)
printf("由小到大排列是:\n");
printf("%d,%d,%d\n", *p1, *p2, *p3);
return 0;
}其實排序的話比較簡單的演算法是用氣泡排序,但這裡不能用,因為氣泡排序一般用於陣列等存放有規律的數的排序,雖不能用,但是排序時你要用這個思想。氣泡排序原理比較簡單,就是將最小或的數往一個方向冒就行。比如要將n個數從小到大排序,就有兩種方法,一種是將小數往前冒,另一種是將大數往後冒。
採取大的數往後冒的話,就要先找出n個數中最大的數,將其放在最後,然後不管最後一個數,找出n-1個數中最大的數將其放在最後(注意:是n-1個數的最後,不是所有數的最後),然後n-2個……,n-3個……,……,當只剩下一個時就排好了。
2樓:匿名使用者
#include
int main()
if(a>c)
if(b>c)
printf("由小到大排列是\n");
printf("%d,%d,%d",*p1,*p2,*p3);
return 0;}
3樓:匿名使用者
a=3,b=1,c=2,假設a的地址是r,b的地址是s,c的地址是t,
一開始 p1→r p2→s p1→t第一次比較 p1→s p2→r p3→t第二次比較 p1→t p2→r p3→s第三次不成立 p1→t p2→r p3→s那麼最後的地址就是p1的地址就是t,p2的地址是r,p3的地址是s,輸出p1,p2,p3的地址對應的值是t(c)、r(a)、s(b)你的目的是要p1指向數最小的資料,p3指向最大的資料,但是由於第二次交換的時候指標的指向發生了變化,所以產生了錯誤。
你可以用冒泡法等演算法進行排序。
4樓:匿名使用者
你的程式指示交換指標,即交換了變數地址,變數a,b,c的值並沒有改變。
當你輸入 a=8,b=5,c=6時:
第一個 if a>b(8>5),所以執行後得:p1=&b,p2=&a,p3=&c;
第二個 if a>c(8>6,因為只是改變地址,a,b,c的值沒有改變),所以執行後得:p1=&c,p2=&a,p3=&b;
第三個 if b 自己看看應該能明白吧! 5樓:匿名使用者 在第一次判斷是你的指標p1指向的值為5,即指向b;但是第二次判斷之後又將p1指向a、c中的較小者c,但是c的值並不比p1原來指向的a小,故與p1始終指向值最小的變數的初衷不一樣。 c語言:輸入3個整數,按由小到大的順序輸出(要求用指標)。。 6樓:劉素芹實歌 這個是要連續比三次才能排序出來,你只用了一次比較怎麼能處理呢,把else去掉就好了 if(a>b) if(a>c) if(b>c) 7樓:侯馥駒宇寰 比較大小時,for要巢狀,你才迴圈一次。即3和5比較,3小,無變化,然後5和1比較,1小,1到了5前面,但1沒和3比較過,1就在3的後面,這時外面就要再巢狀一層for 8樓:夏天的青雲 #include void main() if(*pa>*pc) if(*pb>*pc) printf("這3個數由小到大的排列順序為%d,%d,%d",*pa,*pb,*pc);} 9樓:匿名使用者 pa=&a才對 pa是指標變數 而*pa對應a的值非a的地址 c語言程式設計,輸入4個整數,按從小到大順序輸出 10樓:匿名使用者 #include int main( ) for(int i = 0 ; i < 4 ; i++)} if(k != i) }for(int i = 0 ; i < 4 ; i++)return 0;} 這裡給出一個從檔案裡讀的例子吧,個人感覺吧,從鍵盤也一樣的。只不過我懶的從鍵盤輸入,呵呵。程式執行沒有問題。樓主執行程式的時候可以在程式相應的目錄下建立一個 abc.txt 的檔案形式如下 abcccc akjhjhg adasdasdasd 每一行儲存一個字串。如果不願意呢,也可以定義char 的... int com int p,int n return 0 c語言從鍵盤輸入10個數,使用冒泡法對這10個數進行排序。要求使用指標實現。include stdio.h void main printf the result for i 9 i 0 i 冒泡演算法排序 把結果列印出來。for i 0 i... 用氣泡排序法對輸入的十個整數按由小到大的順序進行排序,要求排序用一個名為sort的子函式完成,在主函式中呼叫它完成排序,用指標實現引數的傳遞,最後輸出排序結果.c語言題目 用冒泡法對任意輸入的10個整數由小到大的順序排序 1 新建一個工程和.c檔案。2 定義變數型別。3 用一個for語句遍歷整個陣列...輸入字串,按從小到大的順序輸出
輸入n個整數,將它們從小到大排序後輸出。要求 使用冒泡法或選擇法排序,使用指標作為函式形式引數
用氣泡排序法對輸入的整數按由小到大的順序進行排序,要求排序用名為sort的子函式完成,在主函式