所以,我在C中第一次尝试冒泡排序,我的代码工作除了事实,如果我输入0作为输入,排序使其他所有的东西0.我无法弄清楚我的错误是什么码。谢谢。
/* Double-Click To Select Code */
#include<stdio.h>
void main()
{
int w,f,temp,j;
float arr[25];
printf("Enter the number of elements in the Array: ");
scanf("%d",&f);
printf("\nEnter the elements:\n\n");
for(w=0 ; w<f ; w++)
{
printf(" Array[%d] = ",w);
scanf("%f",&arr[w]);
}
for(w=0 ; w<f ; w++)
{
for(j=0 ; j<f-w-1 ; j++)
{
if(arr[j]>arr[j+1]) //Swapping Condition is Checked
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("\nThe Sorted Array is:\n\n");
for(w=0 ; w<f ; w++)
{
printf(" %4f",arr[w]);
}
}
如果我输入说, 1.000 0.333 0
输出为:0.000 0.000 1.000
答案 0 :(得分:1)
我测试了。只需将temp类型更改为float即可。这是有效的;
#include<stdio.h>
void main()
{
int w,f,j;
float arr[25],temp;
printf("Enter the number of elements in the Array: ");
scanf("%d",&f);
printf("\nEnter the elements:\n\n");
for(w=0 ; w<f ; w++)
{
printf(" Array[%d] = ",w);
scanf("%f",&arr[w]);
}
for(w=0 ; w<f ; w++)
{
for(j=0 ; j<f-w-1 ; j++)
{
if(arr[j]>arr[j+1]) //Swapping Condition is Checked
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("\nThe Sorted Array is:\n\n");
for(w=0 ; w<f ; w++)
{
printf(" %4f",arr[w]);
}
system("pause");
}
答案 1 :(得分:0)
假设您正在尝试对浮点数进行排序,则需要temp作为浮点数:
int w,f,j;
float arr[25];
float temp;
答案 2 :(得分:0)
int类型的临时变量会截断浮点值。将其更改为float。在输出0.000 0.000 1.000中,第一个或第二个零点为0.33 截断为零,第三个值为