我爱鱼C! 发表于 2018-11-20 20:01:12

请问这段代码是什么意思?

本帖最后由 我爱鱼C! 于 2018-11-21 18:34 编辑

for (i = 10; i >= 0; i--)
{
      for (j = 1; j<=a; j++)
                {
                        cout << i << endl;
                }
}


全部代码为:

#include <iostream>
using namespace std;

int main()
{
        int a,i,j,t;
        for (i=0; i<=10;i++)
                a = 0; //初始化为0
       
        for (i=1;i<=5;i++)
        {
                cin >> t;    //把每一个数读到变量t中
                a++;
        }

        for (i=10; i >= 0; i--)
        {
              for (j = 1; j<=a; j++)
                {
                        cout << i << endl;
                }
        }
}

我爱鱼C! 发表于 2018-11-20 20:01:45

看书上的

丶忘却的年少o 发表于 2018-11-21 09:36:20

你确定没写错?外层的for循环是一个死循环呀。i 的推出推荐是 i>=0,很明显 i 一直在自增,肯定是大于0的,那就没办法退出了。
就当你循环正常的情况说吧,这个双重循环的意思是:
i 为某个值的下标,j = 1,判断 j 是否小于数组中 i 这个下标的值,如果小于等于,就输出下标 i。然后 j++,如果还是小于等于 a 的值,就再输出一次 i 的值…… 直到 j 自增到大于 a 的值

我爱鱼C! 发表于 2018-11-21 18:35:13

丶忘却的年少o 发表于 2018-11-21 09:36
...

不好意思我抄写错了,书上只给出了从小到大的代码,我自己改错了,写道这上面来错了.现在改好了

丶忘却的年少o 发表于 2018-11-22 09:47:50

本帖最后由 丶忘却的年少o 于 2018-11-22 09:49 编辑

我爱鱼C! 发表于 2018-11-21 18:35
不好意思我抄写错了,书上只给出了从小到大的代码,我自己改错了,写道这上面来错了.现在改好了

你运行了后看到输出的结果应该能看出来是输出你刚输入的下标的吧。
一开始给数组全部初始化为0,然后又5次机会给数组里的5个下标的值自增1,就是说数组变成5个位置是0,其余为0。
然后用双重循环去判断,判断 a 数组的 i 的位置是不是1,是1就输出下标 i,就可以知道你刚让哪5个位置变成的值变成1了。
其实一个循环就好了,第二层直接改用 if ( a > 0 ) 然后输出就好了,没必要用一个 for 循环呀
页: [1]
查看完整版本: 请问这段代码是什么意思?