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

来源:6-5 数组的应用(一)

一名不愿透漏姓名的沙雕

2020-03-09 22:47

#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回答

  • 慕UI4407309
    2020-03-30 12:00:06

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

  • Husky_cn
    2020-03-11 01:22:21

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

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926299 学习 · 20799 问题

查看课程

相似问题