鱼C论坛

 找回密码
 立即注册
查看: 1525|回复: 4

[已解决]请问这段代码是什么意思?

[复制链接]
发表于 2018-11-20 20:01:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我爱鱼C! 于 2018-11-21 18:34 编辑
  1. for (i = 10; i >= 0; i--)
  2. {
  3.         for (j = 1; j<=a[i]; j++)
  4.                 {
  5.                         cout << i << endl;
  6.                 }
  7. }
复制代码


全部代码为:

  1. #include <iostream>
  2. using namespace std;

  3. int main()
  4. {
  5.         int a[11],i,j,t;
  6.         for (i=0; i<=10;i++)
  7.                 a[i] = 0; //初始化为0
  8.        
  9.         for (i=1;i<=5;i++)
  10.         {
  11.                 cin >> t;    //把每一个数读到变量t中
  12.                 a[t]++;
  13.         }

  14.         for (i=10; i >= 0; i--)
  15.         {
  16.                 for (j = 1; j<=a[i]; j++)
  17.                 {
  18.                         cout << i << endl;
  19.                 }
  20.         }
  21. }
复制代码
最佳答案
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了。
其实一个循环就好了,第二层直接改用
  1. if ( a[i] > 0 )
复制代码
然后输出就好了,没必要用一个 for 循环呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-20 20:01:45 | 显示全部楼层
看书上的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-21 09:36:20 | 显示全部楼层
你确定没写错?外层的for循环是一个死循环呀。i 的推出推荐是 i>=0,很明显 i 一直在自增,肯定是大于0的,那就没办法退出了。
就当你循环正常的情况说吧,这个双重循环的意思是:
i 为某个值的下标,j = 1,判断 j 是否小于数组中 i 这个下标的值,如果小于等于,就输出下标 i。然后 j++,如果还是小于等于 a[i] 的值,就再输出一次 i 的值…… 直到 j 自增到大于 a[i] 的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-21 18:35:13 | 显示全部楼层


不好意思我抄写错了,书上只给出了从小到大的代码,我自己改错了,写道这上面来错了.现在改好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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了。
其实一个循环就好了,第二层直接改用
  1. if ( a[i] > 0 )
复制代码
然后输出就好了,没必要用一个 for 循环呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-12 21:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表