嗨,有人可以帮助我解决我的代码中的逻辑错误,我想通过数组打印出一些浮点数,但是当我输入数字时,它会输出垃圾和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 }
答案 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。现在代码有一些错误,它在内循环中重复进行比较。数组未被分区为排序部分和未排序部分。