为了账号安全,请及时绑定邮箱和手机立即绑定

为什么判断前后大小这里不能用i而要用j呢?

#include <stdio.h>
int main()
{
    double arr[]={1.78, 1.77, 1.82, 1.79, 1.85, 1.75, 1.86, 1.77, 1.81, 1.80};
    int i,j;
    printf("\n************排队前*************\n");
    for(i=0;i<10;i++)
    {
        if(i != 9)   
            printf("%.2f, ", arr[i]);
        else
            printf("%.2f", arr[i]);
    }
    for(i=8; i>=0; i--)
    {
        for(j=0;j<=i;j++)
        {
            if(arr[j]>arr[j+1]  )      //这里的整个if代码块里j能否用i代替呢?
            {                         
                double temp;   
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;         
            }                 
        }                
    }
    printf("\n************排队后*************\n");
    for(i=0;i<10;i++)
    {
        if(i != 9)   
            printf("%.2f, ", arr[i]);  
        else
            printf("%.2f", arr[i]); 
    }
    return 0;    
}

在注释处标明的代码块,第一次写时全写成了 i ,显示“输出成功,代码错误”。但是运行结果和改成 j 之后是一样的。

想问一下这里能不能写 i ,以及写 j 有没有什么好处……(直觉上感觉应该是因为数组的限制最好用j?但是没想明白。本人超——级菜的,非常感谢您的回答!!!)

正在回答

2 回答

也可以用i,如果用i的话,那么外循环i就应该从9开始,此时arr[j]>arr[i]的比较就是从数组第一个数依次后推和最后一个比较,排出最大值,然后,第二次循环就是从第一个依次后推和倒数第二个比较,这样也是可以比较出最大值的,如果是arr[j]>arr[j+1]就是相邻两个依次比较,直到将最大值推到最后一个位置

0 回复 有任何疑惑可以回复我~

这个和字母没有关系  int i,j; 是你定义的两个变量  你可以任意定义字母abc都行 你可以试试把有j的字母全部换掉 结果也是一样的 在这个循环中只是给j定义并赋值了 和其本身字母无关

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么判断前后大小这里不能用i而要用j呢?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号