我当时写了这个东西:
1044.c
// Item 1044
// john11 / Mifulu
// 2021.06.05
// 解题思路
// 1. 录入元素, 数列数据
// 2. 准备数对空间, 对元素执行相加减操作
// 3. 对结果的绝对值进行冒泡排序
// 4. 输出
//#define _CRT_SECURE_NO_WARNINGS // VS 2019
#include <stdio.h>
#include <stdlib.h>
// int:argnum = 元素数量
// int:arraynum = 数列组内单位数量
// int*:args = 元素数组
int argnum;
int arraynum;
int *args;
// 数对结构体
// int num1 = 数字
// int num2 = 数字的绝对值
struct NUMBER_AB {
int num1, num2;
};
// 数列单位结构体
struct ARRAYNUM_DATA {
int num0;
struct NUMBER_AB **number_ab_ptr;
};
// 数列组
struct ARRAYNUM_DATA **arraynum_datas;
int abs(int number); // 求绝对值函数
int main(void)
{
int i, j, k, l;
int ia; // 临时数字
struct NUMBER_AB *number_ab_convert; // 排序用
// Step 1, 2, 3 (?)
// 获取全局信息
scanf("%d", &argnum);
args = malloc(argnum * sizeof(int));
for(i = 0; i < argnum; i++) {
scanf("%d", &(args[i]));
}
scanf("%d", &arraynum);
arraynum_datas = malloc(arraynum * sizeof(struct ARRAYNUM_DATA *));
// 混乱
for(j = 0; j < arraynum; j++) {
arraynum_datas[j] = malloc(sizeof(struct ARRAYNUM_DATA));
scanf("%d", &(arraynum_datas[j]->num0));
arraynum_datas[j]->number_ab_ptr = malloc(argnum * sizeof(struct NUMBER_AB *));
for(l = 0; l < argnum; l++) {
arraynum_datas[j]->number_ab_ptr[l] = malloc(sizeof(struct NUMBER_AB));
ia = args[l] - arraynum_datas[j]->num0;
arraynum_datas[j]->number_ab_ptr[l]->num1 = abs(ia);
arraynum_datas[j]->number_ab_ptr[l]->num2 = ia;
}
// 冒泡排序
// num1升序
for(i = 0; i < (argnum - 1); i++) {
for(k = 0; k < (argnum - i - 1); k++) {
if(arraynum_datas[j]->number_ab_ptr[k]->num1 > arraynum_datas[j]->number_ab_ptr[k+1]->num1) {
number_ab_convert = arraynum_datas[j]->number_ab_ptr[k];
arraynum_datas[j]->number_ab_ptr[k] = arraynum_datas[j]->number_ab_ptr[k+1];
arraynum_datas[j]->number_ab_ptr[k+1] = number_ab_convert;
}
}
}
}
// Step 4
for(i = 0; i < arraynum; i++) {
printf("%d\n", arraynum_datas[i]->num0 + arraynum_datas[i]->number_ab_ptr[0]->num2);
}
// FINISH.
// 释放内存空间。
free(args);
for(i = 0; i < arraynum; i++) {
for(k = 0; k < argnum; k++) {
free(arraynum_datas[i]->number_ab_ptr[k]);
}
free(arraynum_datas[i]->number_ab_ptr);
free(arraynum_datas[i]);
}
free(arraynum_datas);
// 退出程序
//system("pause"); // Debug
return 0;
}
// int:number = 数字
int abs(int number)
{
if(number < 0) {
return 0-number;
} else {
return number;
}
return -1;
}
过了范例, 但是:

