冒泡法排序
#include<stdio.h>int main()
{
int j,i,t;
int a ;
printf("input:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a);
}
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a>a)
a=t;
a=a;
a=t;
}
}
for(i=0;i<10;i++)
{
printf("%2d",a);
}
return 0;
}
哪里错了请指教 本帖最后由 jhq999 于 2022-10-19 16:49 编辑
if(a>a)
{
t=a;
a=a;
a=t;
} for(j = 0 ; j < 9 ; j ++)
{
for(i = 0 ; i < 9 - j ; i ++)
{
if(a > a)
{
t = a ;
a = a ;
a = t ;
}
}
} 本帖最后由 tommyyu 于 2022-10-19 16:56 编辑
#include<stdio.h>
int main()
{
int j,i,t;
int a ;
printf("input:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a);
}
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a>a)
t = a; //这行不对
a=a;
a=t;
}
}
for(i=0;i<10;i++)
{
printf("%2d",a);
}
return 0;
} 第一个错误是你的if判断没写括号
第二个错误是a=t 你这样是 给a赋值 不是把它的值给t 改成 t=a就好了
望采纳{:10_256:} jhq999 发表于 2022-10-19 16:47
改正以后输入两位数还是不对 yunling 发表于 2022-10-19 16:59
第一个错误是你的if判断没写括号
第二个错误是a=t 你这样是 给a赋值 不是把它的值给t 改成 t=a就好了
望 ...
这样改就适用两位数了 zyxmm 发表于 2022-10-19 17:11
改正以后输入两位数还是不对
没错啊? jhq999 发表于 2022-10-19 18:37
没错啊?
双for的内循环,if不写大括号,就只执行if的下一句,剩下的交换的2句赋值语句,就都不按你的设想执行了,而是执行了下一次循环。就是这里错了,还有,内循环,的条件的右边,为什么要-j howzyao 发表于 2022-10-21 23:07
双for的内循环,if不写大括号,就只执行if的下一句,剩下的交换的2句赋值语句,就都不按你的设想执行了 ...
你仔细看看有没有大括号,你到底学没学过冒泡?这个每一轮后,最大值都是最后一个,你还用比较吗? jhq999 发表于 2022-10-19 18:37
没错啊?
你没错,我没加大括号
页:
[1]