【问题标题】:Reinitialization of value in for loop [closed]for循环中值的重新初始化[关闭]
【发布时间】:2021-10-09 03:44:07
【问题描述】:

在下面的for 循环中,代码不起作用并且无法重新初始化 i 的值

 int k = 150;
        
       for(int i = 9;i>1;i--)
       {
          while(k>0)
          {
          
          if( k % i == 0) 
            {
                res = res * 10 + i;
                k = k/i;
                i= 9;
            }
           
          }

        cout<<res;

但是在这里,当我使用 while 循环时,代码可以正常工作并且 i 的值可以重新初始化

 int k= 150; 
  int res=0;
  int i = 9;

      while(k>0 && i > 1)
      {
      
      if(k % i == 0) 
        {
            res = res * 10 + i;
            k = k/i;
            i = 9;

        }
        
       i--; 
       
     }

    cout<<res;



          
    

【问题讨论】:

  • 定义“不起作用”,因为您甚至没有告诉我们代码应该做什么。定义“无法重新初始化”,因为i= 9; 肯定会将i 设置回 9。请提供该信息以及确切的预期结果与实际结果。
  • @kaylum 代码提取给定数 k 的因数,并用这些因数生成一个新数。数字存储在 res.
  • 该信息属于问题而不属于 cmets。请edit帖子添加。而且您还没有解释“不起作用”是什么意思。

标签: c++ for-loop while-loop


【解决方案1】:

在这些情况下尝试使用试运行:-

 int k = 150;
        
       for(int i = 9;i>1;i--)
       {
          while(k>0)
          {
          
          if( k % i == 0) 
            {
                res = res * 10 + i;
                k = k/i;
                i= 9;
            }
           
          }
       }

        cout<<res;

在这段代码中,您可以看到,在第一次迭代中,while 循环将进入无限循环,因为不满足 if 条件并且您没有更改导致无限循环的 k 或 i 的值(while 永远不会停止)。

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    相关资源
    最近更新 更多