我做了一个简单的排序程序,我在其中初始化了如下所示的数组。
int a[]={9,4,7,8,5,2,6,1,0,3};
但我的排序函数将数组 a[0] 排序为 a[7] 并将 0 视为 '\0' 并停止。如果我将 0 放在其他地方,它会排序到 0 并忽略数组的其余部分。C 在这里对待 0 和 '\0' 是一样的吗?
我的冒泡排序程序如下。
#include<stdio.h>
#include<conio.h>
int main()
{
int a[]={9,4,7,8,5,2,6,1,0,3};
void bubble_sort(int *a);
void print(int *a);
bubble_sort(a);
print(a);
getch();
return 0;
}
void bubble_sort(int *a)
{
int i=0,j,t,n;
for(i=0;a[i]!='\0';i++)
{
n=0;
for(j=1;a[j]!='\0';j++)
{
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
n++;
}
}
if(n==0)
{
break;
}
}
}
void print(int a[])
{
int i=0;
for(i=0;a[i]!='\0';i++)
{
printf("%d ",a[i]);
}
printf("\n");
}