用冒泡法对10个数从小到大排序
#include<stdio.h>void main()
{
int i,j,a,t;
printf("请输入10个数字:");
for(i=0;i<10;i++)
{
scanf("%d",&a);
}
for(j=0;j<10;j++)
{
if(a>a)
t=a;
a=a;
a=t;
}
for(j=0;j<10;j++)
{
printf("%d\n",a);
}
getchar();
getchar();
}
顺序排列是对的,但是后面会出现奇怪的乱码
求帮助!!!! 奇怪的乱码是指什么呢。
另外冒泡排序是需要双重循环的,外循环为排序的次数,内循环为一次排序比较的次数,
你代码的排序部分需要修改一下。 本帖最后由 jackz007 于 2021-3-15 14:07 编辑
for(j=0;j<10;j++)
{
if(a>a) // j = 9 时,a = a 下标越界
t=a;
a=a; // j = 9 时,a = a 下标越界
a=t; // j = 9 时,a = a 下标越界
下面是我修改的代码,谨供楼主参考
#include<stdio.h>
int main(void)
{
int i , j , a , t ;
printf("请输入10个数字 : ") ;
for(i = 0 ; i < 10 ; i ++) scanf("%d" , & a) ;
for(i = 0 ; i < 9 ; i ++){
for(j = i + 1 ; j < 10 ; j ++) {
if(a > a) {
t = a ;
a = a ;
a = t ;
}
}
}
printf("%d" , a) ;
for(i = 1 ; i < 10 ; i ++) printf(" , %d" , a) ;
printf("\n") ;
}
编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
请输入10个数字 : 2 4 6 8 10 1 3 5 7 9
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10
D:\0002.Exercise\C> 谢谢大佬
#include<stdio.h>
int main(void)
{
int i , j , a , t ;
printf("请输入10个数字 : ") ;
for(i = 0 ; i < 10 ; i ++) scanf("%d" , & a) ;
for(i = 0 ; i < 10 ; i ++){
for(j = 0; j < 10-i; j ++)
{
if(a > a)
{
t = a ;
a = a ;
a = t ;
}
}
}
printf("%d" , a) ;
for(i = 1 ; i < 10 ; i ++) printf(" , %d" , a) ;
printf("\n") ;
}
页:
[1]