P82226 发表于 2015-8-18 19:03:00

我这个排序语法上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个数从小到大顺序打印出来
}

damingdingdin 发表于 2015-8-18 19:52:22

a=(a>a)?a:a; //最大数的沉底
这里有问题,比如a>a那么你a被a覆盖了,那原来a的数据就丢失了呀。
所以应该改为a和a【i】交换,这样既能让最大数沉底,也保留了原数据。
详情请百度冒泡排序。

P82226 发表于 2015-8-20 19:25:35

#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:

哥斯拉不说话 发表于 2015-8-20 19:33:07

#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;
}

P82226 发表于 2015-8-22 20:31:57

哦,谢谢,我找到问题了,谢谢。输入3个整型数的时候。 &a我写成了&a.修改后OK.
页: [1]
查看完整版本: 我这个排序语法上OK, 逻辑上有点问题。请大神指点。