#include<stdio.h>
#include<math.h>
int main()
{
printf("请输入十个数\n");
int a[10] = {9,8,7,6,5,4,3,2,1,0}, s, i, t, p;
// for (i = 0; i <= 9; i++)
// scanf_s("%d", &a[i]);
printf("\n从小到大的排序为");
for (t = 0; t <= 9; t++)
{
for (p=0;p<=8-t ; p++)
{
if (a[p]>a[p+1])
{
s = a[p];
a[p] = a[p+1];
a[p+1] = s;
}
}
printf("%d\t", a[t]);
}
return 0;
}
这个是我写的沉底法
但是答案不对,求找出哪里错了
这里是第24行的循环有问题。
改完了是这样的:
#include<stdio.h>
#include<math.h>
int main()
{
printf("请输入十个数\n");
int a[10] = {9,8,7,6,5,4,3,2,1,0}, s, i, t, p;
// for (i = 0; i <= 9; i++)
// scanf_s("%d", &a[i]);
printf("\n从小到大的排序为");
for (t = 0; t <= 9; t++)
{
for (p=0;p<=8-t ; p++)
{
if (a[p]>a[p+1])
{
s = a[p];
a[p] = a[p+1];
a[p+1] = s;
}
}
}
for(int t=0;t<=9;t++)
{
printf("%d\t", a[t]);
}
return 0;
}
应该把输出放到循环外面,再单起一个循环就行了。
修改如下,供参考:
#include<stdio.h>
#include<math.h>
int main()
{
printf("请输入十个数\n");
int a[10] = { 9,8,7,6,5,4,3,2,1,0 }, s, i, t, p;
// for (i = 0; i <= 9; i++)
// scanf_s("%d", &a[i]);
printf("\n从小到大的排序为:");
for (t = 0; t < 10 - 1; t++) //for (t = 0; t <= 9; t++)
{
for (p = 0; p < 10 - t - 1; p++) //for (p = 0; p <= 8 - t; p++)
{
if (a[p] > a[p + 1])
{
s = a[p];
a[p] = a[p + 1];
a[p + 1] = s;
}
}
//printf("%d\t", a[t]); //修改
}
for (i = 0; i < 10; i++) //修改
printf("%d ", a[i]);
return 0;
}
#include<stdio.h>
#include<math.h>
int main()
{
printf("请输入十个数\n");
int a[10] = {9,8,7,6,5,4,3,2,1,0}, s, i, t, p;
printf("\n从小到大的排序为");
for (t = 0; t <10; t++)
{
for (p=0;p<=8-t ; p++)
{
if (a[p]>a[p+1])
{
s = a[p];
a[p] = a[p+1];
a[p+1] = s;
}
}
}
for( t=0;t<10;t++)
{
printf("%d\t", a[t]);
}
return 0;
}