输入正整数n,求使1+2+…+i>=n成立的最小整数i。

img


#include <stdio.h>
int main(void)
{
    int n, sum, i = 0;
    int a = 0;
    scanf("%d", &n);
    while (a == 0)
    {
        i++;
        sum += i;
        if (sum >= n)
        {
            a = 1;
        }
    }
    printf("%d", i);

    return 0;
}

不知道哪里错了,测试不通过

sum += i;
你的sum根本没有初始化
逻辑也不对

 
#include <stdio.h>
int main(void)
{
    int n, sum = 0, i = 0;
    int a = 0;
    scanf("%d", &n);
    while (sum < n)
    {
        i++;
        sum += i;
    }
    printf("%d", i);
 
    return 0;
}
int main() {  
    int n, i, sum;  
    printf("请输入一个正整数n:");  
    scanf("%d", &n);  
  
    sum = 0;  
    i = 1;  
    while (sum < n) {  
        sum += i;  
        i++;  
    }  
  
    printf("使1+2+...+i>=n成立的最小整数i是:%d\n", i - 1);  
    return 0;  
}

【以下回答由 GPT 生成】

你的代码存在一个问题:变量sum没有初始化,导致在使用之前其值是不确定的。可以将sum初始化为0,解决这个问题。以下是修改后的代码:

#include <stdio.h>

int main(void)
{
    int n, sum = 0, i = 0;
    int a = 0;
    scanf("%d", &n);
    while (a == 0)
    {
        i++;
        sum += i;
        if (sum >= n)
        {
            a = 1;
        }
    }
    printf("%d", i);

    return 0;
}

这个修改后的代码将能够正确计算出使得1+2+...+i大于等于给定的正整数n的最小整数i。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^