【发布时间】:2018-02-11 23:08:36
【问题描述】:
我编写了这段代码来合并两个排序的数组。所需的输出是:
Merged array:0 1 2 3 4 5 6 7 8 9 10 11 12
我正在使用 gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 来编译我的代码。
问题是有时我在执行 a.out 文件时会得到所需的输出,但在其他情况下,光标会一直闪烁并且没有显示结果。为什么会这样?我的代码有问题吗?
#include<stdio.h>
#include<stdlib.h>
int main(void){
//change arrays as per your need but it should be sorted
int a[] = {1,2,3,7,8};
int b[] = {0,3,5,6,9,10,11,12};
int m =sizeof(a) / sizeof(int);
int n =sizeof(b) / sizeof(int);
int index=0, j=0, k=0;
int size = m + n;
int array[size];
while(index < size) {
while(a[j] < b[k] && j<m ){
array[index] = a[j];
++index;
++j;
}
while(a[j] > b[k] && k<n){
array[index] = b[k];
++index;
++k;
}
while(a[j] == b[k]){
array[index] = a[j];
j++; index++;
}
}
printf("Merged array: ");
for(int i=0; i<size; i++)
printf("%d ", array[i]);
printf("\n");
}
【问题讨论】:
-
haaave 你试过调试吗? ....
-
我还不知道怎么调试。我不熟悉它。特此指出,我很快就学会了。
-
对于开发人员来说最重要的工具是调试器,尤其是如果您是初学者。我知道他们不教调试,大多数情况下他们甚至都没有提到它。但是你需要花几个小时来学习如何调试你的程序。 它将为您节省无数小时,让您不必盯着代码问自己为什么它不起作用。
-
非常感谢 bolov,你说得对,它没有在任何地方提及。我一定会尽快学会调试。
标签: c arrays sorting gcc merge