1樓:匿名使用者
任何排序演算法都涉及到被排序元素間的「比較」操作,排序演算法根據元素比較的結果執行相應的元素移動操作,因此,「比較」過程與「移動」過程是相互獨立的,也就是說如何比較是可任意定義的,你的這個問題可以使用任意一種排序演算法進行排序,唯一要求的是你必須額外提供乙個比較函式,該比較函式中執行的是絕對值比較而不是真值比較,c語言的庫函式
void qsort(void *base, size_t num, size_t width, int(__cdecl*compare)(const void *elem1, const void *elem2));就可以完成你的任務,其中的引數compare就是乙個執行比較操作的函式指標。
2樓:昌珈藍歆
求絕對值的函式abs()知道麼?冒泡法排序會麼?
如果都知道就好辦了。
排序中的交換判斷這麼寫。
if(abs(a[i])>abs(a[i-1]))其他的按一般的冒泡法排序程式寫就行了
3樓:
排序比較時,通常用 if a>b,你換成 if (abs(a) > abs(b)) 就行了
c語言程式設計:按絕對值排序 求大神啊。
4樓:
#include
int abs_val(int x);
int main(void)
else if (abs_val(a[j]) == abs_val(a[j + 1]) && a[j] > a[j + 1])
/* 確保絕對值相同時,正數在負數之後 */ }}for (i = 0; i < n; ++i)printf("%d ", a[i]);
printf("\n");
return 0;
}int abs_val(int x)
這個程式是鍵盤輸入,螢幕輸出。
5樓:匿名使用者
#include
#include "math.h"
#define n 99
void main()
/*選擇排序法*/
for(j=1;jfabs(a[j])) //與a[i]後面的元素進行比較
printf("n=%d\n",n);
printf("排序後:\n");
for(i=0;i
c語言陣列程式設計,輸入n個整數,將這n個數按絕對值由大到小排序輸出
6樓:凌亂心扉
#include<stdio.h>
intmain()
{intn,i,j,t;
inta[11];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{for(j=0;j<n-i;j++)
{if(a[j]<a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;}}
}for(i=0;i<n;i++)
{if(i<n-1)
printf("%d",a[i]);
else
printf("%d\n",a[n-1]);
}return0;
}擴充套件資料:printf函式定義
函式宣告
intprintf(char*format...);
呼叫格式
printf("<格式化字串>",<參量表>);
格式化字串包含三種物件,分別為:
(1)字串常量;
(2)格式控制字串;
(3)轉義字元。
字串常量原樣輸出,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式控制字串和各輸出項在數量和型別上應該一一對應。其中格式控制字串是以%開頭的字串,在%後面跟有各種格式控制符,以說明輸出資料的型別、寬度、精度等。
格式控制字串format
format--是字串,包含了要被寫入到標準輸出stdout的文字。它可以包含嵌入的format標籤,format標籤可被隨後的附加引數中指定的值替換,並按需求進行格式化。
printf的格式控制字串format組成如下:
%[flags][width][.prec][length]type即:%[標誌][最小寬度][.精度][型別長度]型別功能在c語言中產生格式化輸出的函式(定義在stdio.h中),其向未重定向終端(顯示器、控制台等)輸出字元。
7樓:瀚漠
#include
#include
int main()
for(i=0; i abs(a[j]))}}for(i=0; i printf("\n"); return 0; }好了,除錯通過,輸入陣列後,先列印排序前的陣列,然後排序,之後輸出排序後的陣列。。。 8樓:尤潔留寅 #include #include intmain()}} for(i=0;i評論0 0載入更多 9樓:沐閔馬佳晉 #include #include intmain() for(int i=0;i for(int j=0;j }for(a=0;a if(a==n-1) }return0;} 10樓:諾英申屠聽雲 #include #include main() for(i=0;i printf("%d ",a[i]); printf("\n");} c語言用絕對值排序 11樓: #include #include int main() } for (i=0;i printf("%d ",a[i]); return 0; }試一下這樣改?!應該沒問題了! 你的氣泡排序有問題,把j寫成i相當於單層迴圈,「for(j=0;j 12樓:匿名使用者 if(abs(a[i])>abs(a[i+1])) 把i改成j 13樓: 絕對值是fabs if(fabs(a[i])>fabs(a[i+1])) c語言 輸入10個數,將這10個數按照絕對值從大到小次序排序。絕對值相同則按照先正後負的原則排序。 14樓:匿名使用者 int arr=; for (int i=0;i0 ;j-- )else if (math.abs(arr[j])==math.abs(arr[j-1]))}} for (int i=0;i 15樓:刀無極啊 #include int main() ;for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) f(fabs(a[i])==fabs(a[j]))}}}for(i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); return 0;} c語言絕對值排序問題求助 16樓:右手毅絲溫暖 弄那麼多中間變數幹什麼 自己搞亂自己的思路#define swap(a,b) #include int main() 要養成用i,j做迭代變數的習慣,你的排序排反了吧 c語言輸入10個整數,將這10個數按絕對值由大到小排序輸出 17樓:匿名使用者 int a[10],i,j,t; for(i=0;i<10;i++)scanf("%d",&a[i]); for(i=0;i<10;i++) for(j=i;j<10;j++) if((a[j]>a[i]||-a[j]>a[i])&&(a[j]>-a[i]||-a[j]>-a[i])) for(i=0;i<10;i++)printf("%4d",a[i]); 。。。主要是那個if語句,我都搞暈了,你去執行下看看。 18樓:匿名使用者 定義乙個陣列,然後分別賦值,然後用什麼冒泡之類的方法排序就可以了,還有題目是絕對值的大小 19樓:匿名使用者 #include void main() printf("\n"); for(j=0;j<9;j++) }for(i=0;i<10;i++) printf("\n");} 20樓:匿名使用者 首先要保證這10個數是整數,然後用一種排序演算法就行了 abs x 是對整數x求絕對值的函式 fbs x 是對浮點數x求絕對值的函式 整數用abs 浮點數用fabs c語言中 絕對值 怎麼表示?方法一 用c語言中自帶的絕對值函式表示 如果a是整數 include include int a 100,b b abs a printf d b 如果a是浮點數... 以下 供參考,主要功能見reverselink函式 include using namespace std typedef struct nodenode 建立n個元素的連結串列 node creatlink int n return phead 逆置連結串列 node prev null node... int型別變數沒有空值這一說,只有在堆上申請的變數才能是空值,用null表示。c語言中空值一般是針對指標而言,空值用null表示,表示不指向任何記憶體。比如,int p null 宣告變數並初始化為空值,不指向任何記憶體位址。c語言基本資料型別有void 空型別 int 整型 float 浮點型別 ...C語言中絕對值怎麼表示,C語言中絕對值怎麼表示啊?
C語言實現!謝謝大俠了
C語言的空值怎麼表示?C語言中 絕對值 怎麼表示