u010479604 2018-11-13 03:44 采纳率: 83.3%
浏览 449
已采纳

用C语言完成数组排序,并对最后一列数据按条件求和,具体任务如下:

排序前:
1 1 1 1.1
1 1 3 1.2
2 1 3 2.9
1 2 1 1.2
2 1 2 2.8
1 2 2 1.5
2 2 2 3.1
1 2 3 2.3
2 2 1 3.0
1 1 2 2.5
1 2 4 2.4
1 3 1 2.6
2 1 1 2.7
2 2 3 3.2

排序并计算后:
1 1 1 1.1 1.1
1 1 2 2.5 3.6
1 1 3 1.2 4.8
1 2 1 1.2 1.2
1 2 2 1.5 2.7
1 2 3 2.3 5.0
1 2 4 2.4 7.4
1 3 1 2.6 2.6
2 1 1 2.7 2.7
2 1 2 2.8 5.5
2 1 3 2.9 8.4
2 2 1 3.0 3.0
2 2 2 3.1 6.1
2 2 3 3.2 9.3

  • 写回答

1条回答 默认 最新

  • Italink 2018-11-13 05:46
    关注
     #include<stdio.h>
    typedef struct list {
        int key[3] = {0};
        double date = 0;
        double sum = 0;
    };
    int judge(int a[], int b[]) {
        if (a[0] != b[0])
            return a[0] > b[0];
        else if (a[1] != b[1])
            return a[1] > b[1];
        else
            return a[2] > b[2];
    }
    int main(){
        int len = 14;
        list my[14], tmp;
        for (int i = 0; i < len; i++) {
            scanf("%d%d%d%lf", &my[i].key[0], &my[i].key[1], &my[i].key[2], &my[i].date);
        }
        for (int i = 0; i < len; i++) {
            for (int j = i + 1; j < len; j++) {
                if (judge(my[i].key, my[j].key)) {
                    tmp = my[i];
                    my[i] = my[j];
                    my[j] = tmp;
                }
            }
        }
        my[0].sum = my[0].date;
        for (int i = 1; i < len; i++) {
            if (i!=0&&my[i].key[0] == my[i - 1].key[0] && my[i].key[1] == my[i - 1].key[1] ) 
                my[i].sum = my[i - 1].sum + my[i].date;
            else 
                my[i].sum = my[i].date;
        }
        for (int i = 0; i < len; i++) 
            printf("%d %d %d %0.1lf %0.1lf\n", my[i].key[0], my[i].key[1], my[i].key[2], my[i].date, my[i].sum);
        return 0;
    }
    

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料