我有一個任務,在使用動態內存時對負數和正數進行排序,因此在這種情況下,我使用calloc和冒泡排序來排列負數數字第一,而不改變他們的順序。問題是當我輸入偶數個整數時,在結果的中間會出現一些隨機的10位數的負數。奇數個整數不會發生同樣的情況。什麼似乎是問題?如果在冒泡排序程序中輸入偶數個整數,則在中間插入一個隨機數
#include <stdio.h>
#include <stdlib.h>
#define SIZE 1000
void swap(int *arr, int n) {
int i, j, temp;
for (i = 0; i <= n; i++) {
for (j = 1; j <= n; j++) {
if (arr[j] < 0) {
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
}
printf("sorted integers to negative and positive: \n");
for (i = 0; i < n; i++) {
printf("%i ", arr[i]);
}
}
int main() {
int n;
int i, *sk;
printf("Enter integer: \n");
scanf("%d", &n);
printf("Enter %i integers: \n", n);
sk = (int*)calloc(sizeof(int), n);
for (i = 0; i < n; i++) {
scanf("%d", sk + i);
}
swap(sk, n);
return 0;
}
你有使用調試器和/或連基本的調試打印語句來跟蹤你的程序的執行?這是在代碼中調試問題的標準方法(只有在所有調試工作失敗的情況下才會發布到Stackoverflow)。 – kaylum