[英]What am I doing wrong in this C code I've written
问题:给定两个整数 a 和 b,它们可以是正数或负数,找到它们之间和包括它们的所有整数的总和并返回它。 如果两个数字相等,则返回 a 或 b。
我对以下解决方案的期望答案是 14。但无论我更改什么,它始终显示 5
我的解决方案:
int get_sum(int a , int b)
{
int d = a;
if ( a > b)
{
for ( int i = b; i == a; i++)
{
d = d + i ;
}
return d;
}
if ( a < b )
{
for ( int i = a; i == b; i++)
{
d = d + i;
}
return d;
}
return 0;
}
int main (void)
{
printf("%i", get_sum(5,-1));
}
您的问题的正确解决方案:
int get_sum(int a , int b)
{
int d;
if ( a > b)
{
d = b;
for ( int i = b+1; i <= a; i++)
d = d + i ;
return d;
}
else if ( a < b )
{
d = a;
for ( int i = a+1; i <= b; i++)
d = d + i;
return d;
}
else return a;
}
int main (void)
{
printf("%i", get_sum(5,-1));
}
您的代码有错误的地方是:
你初始化了d=a
,但在你的情况下 a > b,所以它应该是d=b
。 如果 a < b,那么它应该是d=b
。 因此,您需要将正确的初始化放在if-else
条件中。
您使用了for
循环for (int i = b; i==a; i++)
。 由于您已经在if
内部初始化了d=b
,因此初始化i=b
错误地将b
添加到d
两次。 所以初始化i=b+1
或i=a+1
。
您在for
循环中使用的条件是i==a
或i==b
,这在循环开始时不成立,这意味着您的循环根本不会运行。 所以将其更改为i<=a
或i<=b
。
我还在最后添加了return a
,以防a==b
为真。
由于条件,您的 for 循环无法正常工作
int get_sum(int a , int b)
{
int d = 0;
if ( a > b)
{
for ( int i = b; i <= a; i++)
{
d = d + i ;
}
return d;
}
if ( a < b )
{
for ( int i = a; i <= b; i++)
{
d = d + i;
}
return d;
}
return 0;
}
int main (void)
{
printf("%i", get_sum(5,-1));
}
它现在可以按您的意愿工作,遍历 a 和 b 之间的所有整数。 此外,您必须将 d 设置为 0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.