icoding的数据结构并没有一个测试代码,其都是直接编写一个函数的形式,因此很难知道自己的实际输出是什么。针对部分题目,我编写了一系列测试代码以供大家进行数据输出的测试。
void merge_arrays(const int* arr, int n,int k,int* output) { //TODO }请将您的函数代码复制到上述函数中,然后修改main函数的相关内容,完成测试样例的输入
icoding传入的arr数组为一个一元数组,本程序为了直观,输入测试样例时为二元数组,后续会自动转化为一元数组
//数组合并 #include#include #include #include //---本程序不提供任何辅助函数,若需要请在下方添加 //---本程序不提供任何辅助函数,若需要请在上方添加 void merge_arrays(const int* arr, int n,int k,int* output) { //TODO } int main(){ //-------------以 下 内 容 可 以 修 改------------- //arr 为按行优先保存的 n 个长度都为 k 的数组 //icoding传入的arr数组为一个一元数组,这里为了直观化为二元数组,后续会自动转化为一元数组 int arr[3][5] = { {1,3,5,7,9}, {2,4,6,8,10}, {11,13,15,17,19}, }; //arr[][]第一个[]表示n,第二个[]表示k,需要对n个数组排序,每个数组的长度为k //例如: // {1,3,5,7,9}, // {2,4,6,8,10}, // {11,13,15,17,19} //就应该填写arr[3][5],代表有三行五列 //需要保证每一行都是升序数列 //且一共有n(即第一个括号的数字)行数组;每一行的长度都是k(即第二个括号里的数字) //icoding传入的arr数组为一个一元数组,这里为了直观化为二元数组,后续会自动转化为一元数组 //-------------以 上 内 容 可 以 修 改------------- printf("icodingn排序-数组合并n----开始测试----n"); int k=sizeof(arr[0])/sizeof(arr[0][0]); int n=sizeof(arr)/sizeof(arr[0]); printf(">>正在初始化数组n" ); //检查二维数组每行的长度是否相等 for(int i=0;i arr[i][j+1]){ printf("第%d行数组的元素不是升序n程序自动终止,请修改n",i+1); return 0; } } } //把二维数组变为一维数组 int input[n*k]; int i,j; for(i=0;i >正在排序n数组总组数:%d组t单组数组长度:%d个t总排序元素个数:%d个n",n,k,n*k); int output[n * k]; merge_arrays(input, n, k, output); printf("<<排序完成n>>输出结果n"); for (int i = 0; i < n * k; i++) { printf("%d ", output[i]); } printf("nn本程序仅提供输出结果,不对结果进行正确与错误的判断n----测试结束----n"); }
若不对main函数的内置测试样例改动,那么将输出以下正确结果
若有任何操作的疑问可以看文章 如何使用测试代码



