#include <stdio.h>
int main(void)
{
int a[10],b[10],i,j,*p;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
*p=a[j];
else
*p=a[j+1];
}
b[i]=*p;
}
for(i=0;i<10;i++)
printf("%d",b[i]);
return 0;
}
想把輸入的10個數從大到小排序,為啥運行不下去了
uj5u.com熱心網友回復:
*p=a[j]; p是個野指標uj5u.com熱心網友回復:
int p;變數就夠了,不用指標,用指標的話你初始化為誰呢,不管是a還是b都會改變陣列的值uj5u.com熱心網友回復:
你這思路也有些問題,如果第一個數值就是最大的,但你總是從第一個開始找,選中后,你也沒有排除uj5u.com熱心網友回復:
你可以用冒泡排序或者選擇排序uj5u.com熱心網友回復:
這種思路有問題,每次選中的值應該在下一次回圈前洗掉。所以還是用冒牌排序吧uj5u.com熱心網友回復:
#include <stdio.h>
int main(void)
{
int a[10],b[10],i,j, *p;
tmp = a[0];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
//*p = a[j];
p = &a[j];
else
//*p = a[j+1];
p = &a[j+1];
}
b[i] = *p;
}
for(i=0;i<10;i++)
printf("%d",b[i]);
return 0;
}
供參考~
代碼還有問題,最小的值沒有放到b中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69203.html
標籤:C語言
下一篇:c語言請教大佬
