您的位置:首页 > 运维架构 > Linux

Linux下完成的一个作业程序

2010-02-19 12:02 295 查看
文档创建日期:2010-02-19

[文件1: test06-08.c]

01 // P174: 2.编程题 (8)把有序的两个数组a和b合并,要求合并后的数组依然有序

02

03 // The beginning of C program: test06-08.c.

04

05 // Header files included.

06 #include <stdio.h>

07 #include "head06-08.h"

08

09 // Macro definition.

10 #define MAX_SIZE 100

11

12 // Main function's declaration.

13 int main ( void )

14 {

15 int i=0, j=0, m=10, n=10;

16 float list_1[MAX_SIZE], list_2[MAX_SIZE], element=0.0;

17

18 printf ( "Please input 10 float numbers for list_1: " );

19 for ( i=0; i<m; i++ )

20 scanf ( "%f", &list_1[i] );

21

22 printf ( "Please input 10 float numbers for list_2: " );

23 for ( j=0; j<n; j++ )

24 scanf ( "%f", &list_2[j] );

25

26 for ( i=0; i<m; i++ )

27 list_1[i] = rounding (list_1[i]);

28 for ( j=0; j<n; j++ )

29 list_2[i] = rounding (list_2[j]);

30 select_sort ( list_1, m );

31 select_sort ( list_2, n );

32

33 for ( j=0; j<n; j++ )

34 {

35 element = list_2[j];

36 if ( insert (list_1, &m, element) == 0 )

37 return (1);

38 }

39 printf ( "The new list is:/n" );

40 for ( i=0; i<20; i++ )

41 {

42 printf ( "%8.2f", list_1[i] );

43 if ( (i+1)%5==0 )

44 printf ( "/n" );

45 }

46 printf ( "/n" );

47

48 return (0);

49 }

50

51 // The end of C program: test06-07.c.

52

--------------------------------------------------------------------------------------------------------------------------------------------------------------

[文件2: head06-08.h]

01 // 以下声明的函数为程序test06-08.c使用到的相关函数,以头文件形式进行保存和调用;

02

03 // The beginning of C header file user_def: head06-08.h.

04

05 // No.1: Subroutine: float rounding ( float f_num );

06 float rounding ( float f_num );

07

08 // No.2: Subroutine: void select_sort ( float list[], int size ); 选择排序子函数

09 void select_sort ( float list[], int size );

10

11 // No.3: Subroutine: int insert ( float list[], int *size, float element );

12 int insert ( float list[], int *size, float element );

13

14 // The end of C header file user_def: head06-08.h.

15

--------------------------------------------------------------------------------------------------------------------------------------------------------------

[文件3: head06-08.c]

01 // 以下函数为head06-08.h中声明的函数的实现,依照相关的顺序排列给出

02

03 // The beginning of C header file program: head06-08.c.

04

05 // Header files included.

06 #include <stdio.h>

07

08 // Macro definition.

09 #define MAX_SIZE 100

10

11 // No.1: Subroutine: float rounding ( float f_num );

12 float rounding ( float f_num )

13 {

14 long int temp=0;

15 temp = (long int) (f_num * 100);

16 temp = (long int) ((f_num*100 - temp)*2 + temp);

17 f_num = temp / 100.0;

18

19 return (f_num);

20 }

21

22 // No.2: Subroutine: void select_sort ( float list[], int size ); 选择排序子函数

23 void select_sort ( float list[], int size )

24 {

25 int i, j, min;

26 float temp=0.0;

27 for ( i=0; i<size-1; i++ )

28 {

29 min = i;

30 for ( j=i+1; j<size; j++ )

31 if ( list[j] < list[min] )

32 min = j;

33 temp = list[i];

34 list[i] = list[min];

35 list[min] = temp;

36 }

37 }

38

39 // No.3: Subroutine: int insert ( float list[], int *size, float element );

40 int insert ( float list[], int *size, float element )

41 {

42 int i=0, tag=0;

43 if ( *size >= MAX_SIZE )

44 {

45 printf ( "The list is too full to insert new element./n" );

46 return (0);

47 }

48 for ( i=0; i<*size; i++ )

49 {

50 if ( element >= list[i] )

51 continue;

52 else

53 if ( element < list[i] )

54 break;

55 }

56 tag = i;

57 if ( tag == *size ) // 在有序表的尾部插入

58 list[*size] = element;

59 else // 在有序表的其他位置插入

60 {

61 for ( i=*size; i>tag; i-- )

62 list[i] = list[i-1];

63 list[tag] = element;

64 }

65 *size = *size + 1;

66 // 返回1表示元素插入成功,返回0表示操作失败.

67 return (1);

68 }

69

70 // The end of C header file program: head06-08.c.

71

让看代码像欣赏“高山流水”一样——心情舒畅啊 (*^__^*)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: