Linux下完成的一个作业程序

文档创建日期: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   


让看代码像欣赏“高山流水”一样——心情舒畅啊    (*^__^*)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值