yangzhixiaohuli 发表于 2023-11-16 19:32:50

搜索

本题要求实现一个计算1+2+3+…+n的和的简单函数。

函数接口定义:
int sum( int n );
该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。

裁判测试程序样例:
#include <stdio.h>

int sum( int n );

int main()
{
    int n;

    scanf("%d", &n);
    printf ("%d\n", sum(n));

    return 0;
}

/* 你的代码将被嵌在这里 */
输入样例1:
10
输出样例1:
55
输入样例2:
0
输出样例2:
0


我这样写代码哪里错了
int sum( int n )
{
int s=0;
if(n<0)
{
return 0;
}
else
{
for(int i=0;i<=n;i++)
{
s+=n;
}
return s;
}

}

isdkz 发表于 2023-11-16 19:32:55

int sum( int n )
{
    int s=0;
    if(n<=0) // 修改条件为n<=0
    {
      return 0;
    }
    else
    {
      for(int i=1;i<=n;i++) // 修改i的初始值为1
      {
            s+=i; // 修改s+=n为s+=i
      }
      return s;
    }
}


在你的代码中,有两个地方需要修改。首先,条件判断应该是n<=0,而不是n<0,因为题目要求对于非正整数都返回0。其次,在for循环中,你应该将i的初始值设为1,而不是0,同时在累加的地方应该是s+=i,而不是s+=n。
页: [1]
查看完整版本: 搜索