回 帖 发 新 帖 刷新版面

主题:C

# include <stdio.h>
void main ()
{

    int a[10]   ;
    int i ,j ,t;

    for (i=0;i<10;i++)

        scanf ("%d",&a[i]);

    [color=FF0000]printf ("\n")   ;[/color]

    for (j=0;j<9;j++) 

    for (i=0;i<9-i;i++)

        [color=00FF00]if  (a[i]>a[i+1])
        {

        t=a[i];

        a[i]=a[i+1]  ;

        a[i+1]=t   ;
        
        }[/color]printf ("the scored numbers is \n")   ;

for (i=0;i<10;i++)

printf ("%d",a[i]);

printf  ("\n")    ;


}


这个程序怎么运行是不对呀,还有加红色的部分是如何运行的?高手指点一下

回复列表 (共4个回复)

沙发

红色就是输出一个换行。你的程序想要做什么呢

板凳


for(j=0;j<9;j++)
for(i=0;i<[color=FF00FF]9-j[/color];i++)

用起泡法的时候 循环条件写错~ 你写成i<9-i,应该是9-j

3 楼

楼上说得对,所谓万变不离其宗,你要抓住冒泡算法的核心就轻松多了,外循环是控制排序次数,内循环控制内部比较排序,外循环每循环一次就把这次的最小值找出来,最后就形成了升序排列的了,如果要降序的效果就在输出时反过来输出
for(i=n-1;i>=0;i--)
    printf("%d",a[i]);

(这里的n就是你这个数组的大小)
我也是初学者,经常犯一些小错误,不断在错误中进步就好,加油!!

4 楼

那是因为for语句是只管后面一个分句的。。如果要多管几个,就要打花括号哦。。
#include <stdio.h>
void main ()
{

    int a[10]   ;
    int i ,j ,t;

    for (i=0;i<10;i++)

        scanf ("%d",&a[i]);

    printf ("\n")   ;

    for (j=0;j<9;j++) 

   {
    for (i=0;i<9-i;i++)

        if  (a[i]>a[i+1])
        {

        t=a[i];

        a[i]=a[i+1]  ;

        a[i+1]=t   ;
        
        }
   }
   printf ("the scored numbers is \n")   ;

   for (i=0;i<10;i++)

   printf ("%d",a[i]);

   printf  ("\n")    ;


}

我来回复

您尚未登录,请登录后再回复。点此登录或注册