輸入整數,按從小到大的順序輸出(用指標處理)

2021-05-02 20:12:20 字數 2342 閱讀 2841

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 的...

輸入n個整數,將它們從小到大排序後輸出。要求 使用冒泡法或選擇法排序,使用指標作為函式形式引數

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的子函式完成,在主函式

用氣泡排序法對輸入的十個整數按由小到大的順序進行排序,要求排序用一個名為sort的子函式完成,在主函式中呼叫它完成排序,用指標實現引數的傳遞,最後輸出排序結果.c語言題目 用冒泡法對任意輸入的10個整數由小到大的順序排序 1 新建一個工程和.c檔案。2 定義變數型別。3 用一個for語句遍歷整個陣列...