_crab 2025-01-26 20:35 采纳率: 100%
浏览 3
已结题

关于#c++#的问题:代码效果:求1的1次+2的2次+等等+10的10次的和为啥在内循环for中的条件判断语句j<=i,可以执行成功改成j == i 就不行了,按理说代码应该可以执行吧

long long sum = 0;
for (int i = 1; i <= 10; i++)
{
    long long pow = 1;
    for (int j = 1; j <= i; j++)
    {
        pow = i * pow;
    }
    sum += pow;
}
printf("数字:%lld", sum);

代码效果:求1的1次+2的2次+等等+10的10次的和
为啥在内循环for中的条件判断语句j<=i,可以执行成功
改成j == i 就不行了,这里面j难道不是等于i的吗,按理说代码应该可以执行吧

  • 写回答

3条回答 默认 最新

  • _crab 2025-01-26 20:42
    关注

    在C语言中,for循环的条件判断语句j <= ij == i是有区别的。

    j <= i表示的是j小于或等于i,这意味着内循环会执行i次,因为j的初始值是1,每次循环后j会自增1,直到j等于i时,循环条件不再满足,内循环结束。

    j == i表示的是j等于i,这是一个等值判断,只有当j的值等于i时,条件才为真,内循环才会执行。但是,由于j的初始值是1,而i的值在每次外循环中都会变化,所以j == i这个条件可能在某些情况下永远不会满足,导致内循环无法执行。

    在你的代码中,如果你将内循环的条件判断语句改为j == i,那么内循环可能会在某些情况下无法执行,因为j可能永远不会等于i。例如,当i的值为2时,内循环的条件判断语句j == i只有在j自增到2时才会满足,而在这之前,内循环不会执行任何操作。

    因此,使用j <= i作为内循环的条件判断语句是正确的,它确保了内循环会执行i次,从而计算出每个数的幂,然后将这些幂相加得到总和。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月3日
  • 已采纳回答 1月26日
  • 创建了问题 1月26日