c語言實驗題 絕對值排序,C語言實驗題 絕對值排序

2022-02-06 09:39:48 字數 4793 閱讀 1349

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個數是整數,然後用一種排序演算法就行了

C語言中絕對值怎麼表示,C語言中絕對值怎麼表示啊?

abs x 是對整數x求絕對值的函式 fbs x 是對浮點數x求絕對值的函式 整數用abs 浮點數用fabs c語言中 絕對值 怎麼表示?方法一 用c語言中自帶的絕對值函式表示 如果a是整數 include include int a 100,b b abs a printf d b 如果a是浮點數...

C語言實現!謝謝大俠了

以下 供參考,主要功能見reverselink函式 include using namespace std typedef struct nodenode 建立n個元素的連結串列 node creatlink int n return phead 逆置連結串列 node prev null node...

C語言的空值怎麼表示?C語言中 絕對值 怎麼表示

int型別變數沒有空值這一說,只有在堆上申請的變數才能是空值,用null表示。c語言中空值一般是針對指標而言,空值用null表示,表示不指向任何記憶體。比如,int p null 宣告變數並初始化為空值,不指向任何記憶體位址。c語言基本資料型別有void 空型別 int 整型 float 浮點型別 ...