首页 > 解决方案 > 循环没有结束,我需要在代码中找到错误

问题描述

#include<iostream>

using namespace std;

int main(){
    int64_t n;
    int64_t m;
    int64_t Sum;
    cin >> n;
    for(int64_t i=0; i<n-1; i++){
        int64_t a, b;
        cin >> a >> b;
        int64_t m = 0;
        while(m <= b){
            int64_t y = 0;
            m = a + y;
            Sum += m;
            y++;
        }
    }
    cout << Sum;
}

当我在编译器中运行上述代码时,循环没有结束,我一直在输入值。

标签: c++

解决方案


问题出在这部分:

while(m<=b){
     int64_t y=0;
     m=a+y;
     Sum +=m;
     y++;
 }

在每次迭代中int64_t y = 0,都会使 new等于 0。是无用的,因此将与永远不会改变的值相同,并且布尔值将始终为真。做这个:yy++m = a + ym = a + 0mm <= b

int64_t y = 0;
while(m<=b){
     m=a+y;
     Sum +=m;
     y++;
 }

在这里,int64_t y = 0只会执行一次并且y不会被重置,因此循环将终止。


推荐阅读