我这个排序语法上OK, 逻辑上有点问题。请大神指点。
#include<stdio.h>void main()
{
int i, j;
int a;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
{scanf("%d\n",&a);}//输入10个整型数
for (j=0;j<9;j++) //比较的个数
{for(i=0;i<9-j;i++) //每个两两比较的次数
a=(a>a)?a:a; //最大数的沉底
}
printf("The sorted numbers:\n");
for(i=0;i<10;i++)
{printf("%d\n",a);} //使10个数从小到大顺序打印出来
}
a=(a>a)?a:a; //最大数的沉底
这里有问题,比如a>a那么你a被a覆盖了,那原来a的数据就丢失了呀。
所以应该改为a和a【i】交换,这样既能让最大数沉底,也保留了原数据。
详情请百度冒泡排序。 #include<stdio.h>
void main()
{
int i, j,temp;
int a;
for(i=0;i<3;i++)
{scanf("%d",&a);}//输入3个整型数
for(j=0;j<=2;j++)
{ for (i=0;i<2-j;i++) //二次循环
if (a>a)
{ temp=a; a=a; a=temp;} }//大小互换
for(i=0;i<3;i++)
{ printf("%d,",a) ;
printf("\n"); }
}
//到底错在哪呢。:mad: #include<stdio.h>
int main()
{
int i, j, temp;
int a;
for(i=0; i<3; i++)
scanf("%d", &a); // 输入 3 个整型数
for(j=0; j<2; j++)
{
for(i=0; i<2-j; i++) //二次循环
{
if (a > a)//大小互换
{
temp = a;
a = a;
a = temp;
}
}
}
for(i=0; i<3; i++)
printf("%d,", a);
printf("\n");
return 0;
} 哦,谢谢,我找到问题了,谢谢。输入3个整型数的时候。 &a我写成了&a.修改后OK.
页:
[1]