泡泡排序 排出来第三个数老是0

majun3994552 2012-01-15 12:22:10
#include<stdio.h>
int main()
{int i,a[3],da,t;

for (i=0;i<3;i++)
scanf("%d",&a[i]);
printf("\n");

for(i=0;i<3;i++)
for(da=0;da<3-i;da++)
if(a[da]>a[da+1])
{
t=a[da];
a[da]=a[da+1];
a[da+1]=t;
}
printf("排序好的数组为:\n");

for(i=0;i<3;i++)
printf("%d",a[i]);
printf("\n");

}
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
哈了 2012-01-15
  • 打赏
  • 举报
回复
majun3994552 2012-01-15
  • 打赏
  • 举报
回复
谢谢了,高手一出手立马解决呵呵。
黯然 2012-01-15
  • 打赏
  • 举报
回复

#include<stdio.h>

int main()
{
int i,a[3],da,t;

for (i=0;i<3;i++)
scanf("%d",&a[i]);
printf("\n");

for(i=1;i<3;i++)//注意这里,外层for循环表示的是循环的n-1次的次数,冒泡每次把最大数调到最后,总共是要n-1次
for(da=0;da<3-i;da++)
if(a[da]>a[da+1])
{
t=a[da];
a[da]=a[da+1];
a[da+1]=t;
}
printf("排序好的数组为:\n");

for(i=0;i<3;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
opponent2012 2012-01-15
  • 打赏
  • 举报
回复
楼主结贴率0%。如果不结贴,以后没人帮你了哦。想必和我一样也是新人。只是善意的提醒而已。
opponent2012 2012-01-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 majun3994552 的回复:]
#include<stdio.h>
int main()
{int i,a[3],da,t;

for (i=0;i<3;i++)
scanf("%d",&a[i]);
printf("\n");

for(i=0;i<3;i++)
for(da=0;da<3-i;da++)
if(a[da]>a[da+1])
{
t=a[da];
a[da]=a[d……
[/Quote]
你的方法错误的核心不是遍历不够,而是数组越界了。数组中没有a[3]这个数。你也可以把第二个for循环中判断条件改为da<3-i-1。不信试试。

64,989

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧