排序和打印数组元素打印出垃圾

时间:2017-11-28 17:21:30

标签: c arrays

嗨,有人可以帮助我解决我的代码中的逻辑错误,我想通过数组打印出一些浮点数,但是当我输入数字时,它会输出垃圾和0.000000或者其他。

这是我的代码,我定义了SIZE 4只是为了让它变得更容易:

int main(){
double array1[SIZE];

printf("\n Enter the elements of Array 1: ");
get_value(array1);
printf("\n\n Elements of Array 1: ");
print_value(array1, SIZE);
}

然后有我的功能

void get_value(double arr[]){
int i, j;
for (i = 0; i < SIZE; i++){
    j = i + 1;
    printf("\n Enter element %d: ", j);
    scanf("%f", &arr[i]);
}


void print_value(double arr[], int n){
int i;
printf("{ ");
for (i = 0; i < n; i++){
    printf("%f ", arr[i]);
}
printf("}");

void function_sort(double arr[] = {0}){
int i, j, temp, swapping;
for (i = 1; i < SIZE; i++){
    swapping = 0;
    for (j = 0; j < SIZE - i; j++){
        if (arr[j] > arr[j + 1]){
            temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
            swapping = 1;
        }
    }
    if (swapping == 0){
        break;
    }
}

}

,输出如下:

 Enter the elements of Array 1:


Enter element 1: 1.5

 Enter element 2: 2.5

 Enter element 3: 3.25

 Enter element 4: 2.25


 Elements of Array 1: { 0.000000 0.000000 0.000000 321179424811157990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000 }
Sorted elements of Array 1: { 0.000000 0.000000 0.000000 321179424811157990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000 }

1 个答案:

答案 0 :(得分:2)

scanf("%lf", &arr[i]);使用正确的格式说明符,否则会出错。(强制 - %f会导致错误的输入扫描。)

同样,对于打印,结果将是printf("%lf",arr[i])。 (不是强制性的 - %f也有效。)

冒泡排序代码: -

int flag = 1;
for (size_t i = n - 1; flag && i >= 0; i--){
  flag = 0;
  for (size_t j = 0; j < i; j++){
    if (a[j] > a[j + 1]) {
      int temp = a[j];
      a[j] = a[j + 1];
      a[j + 1] = temp;
      flag = 1;
    }
  }
}

弗拉德在这里的评论是对这段代码的回复Rosetta Code for Bubble sort。现在代码有一些错误,它在内循环中重复进行比较。数组未被分区为排序部分和未排序部分。

相关问题