冒泡排序函数中出现意外的 0
Unexpected 0 appear in bubble sort function
本人初学C语言,目前正在学习编写一个冒泡排序的基本函数。一切似乎都很好,程序的其余部分运行良好。但是,输出中出现意外的 0。我检查了我的代码,但我不知道为什么。有人可以帮帮我吗?
输入和输出示例:
原始号码组为:23 12 17 8 5 46 75 19 11 4
排序后的数集为:0 4 5 8 11 12 17 19 23 46
密码是:
// wirte a program of bubble sort
#include <stdio.h>
#include <string.h>
int main(void)
{
int num[10]; // a set to store10 numbers
int temp; //a temporary variable
int i,r,t,p,d; //counters
//store 10 numbers
for(i=0; i<10;++i)
{
printf("\nPlease enter the %dth number.\n",i+1);
scanf("%d",&num[i]);
}
printf("\n");
//display 10 numbers
printf("The orginal number set is:");
for(r=0; r<10; ++r)
{
printf("%5d",num[r]);
}
printf("\n");
//start to sort these numbers
for (p=0;p<10;++p)
{
for(t=0;t<10;++t)
{
if(num[t]>num[t+1])
{
temp=num[t];
num[t]=num[t+1];
num[t+1]=temp;
}
}
}
//print out the sorted set
printf("The sorted number set is:");
for(d=0;d<10;++d)
{
printf("%3d",num[d]);
}
printf("\n");
}
当您比较值时。您还将最后一个与数组外的第一个进行比较。这恰好是 0(未定义的行为,完全依赖于编译器)并被切换。for 循环应该变成:
for (p=0;p<10;++p)
{
for(t=0;t<9;++t)
{
if(num[t]>num[t+1])
{
temp=num[t];
num[t]=num[t+1];
num[t+1]=temp;
}
}
}
本人初学C语言,目前正在学习编写一个冒泡排序的基本函数。一切似乎都很好,程序的其余部分运行良好。但是,输出中出现意外的 0。我检查了我的代码,但我不知道为什么。有人可以帮帮我吗? 输入和输出示例:
原始号码组为:23 12 17 8 5 46 75 19 11 4 排序后的数集为:0 4 5 8 11 12 17 19 23 46
密码是:
// wirte a program of bubble sort
#include <stdio.h>
#include <string.h>
int main(void)
{
int num[10]; // a set to store10 numbers
int temp; //a temporary variable
int i,r,t,p,d; //counters
//store 10 numbers
for(i=0; i<10;++i)
{
printf("\nPlease enter the %dth number.\n",i+1);
scanf("%d",&num[i]);
}
printf("\n");
//display 10 numbers
printf("The orginal number set is:");
for(r=0; r<10; ++r)
{
printf("%5d",num[r]);
}
printf("\n");
//start to sort these numbers
for (p=0;p<10;++p)
{
for(t=0;t<10;++t)
{
if(num[t]>num[t+1])
{
temp=num[t];
num[t]=num[t+1];
num[t+1]=temp;
}
}
}
//print out the sorted set
printf("The sorted number set is:");
for(d=0;d<10;++d)
{
printf("%3d",num[d]);
}
printf("\n");
}
当您比较值时。您还将最后一个与数组外的第一个进行比较。这恰好是 0(未定义的行为,完全依赖于编译器)并被切换。for 循环应该变成:
for (p=0;p<10;++p)
{
for(t=0;t<9;++t)
{
if(num[t]>num[t+1])
{
temp=num[t];
num[t]=num[t+1];
num[t+1]=temp;
}
}
}