|
60鱼币
#include <stdio.h>
#include <math.h>
int main()
{
int a,a3,i,sum,b,c;
printf("请输入一个整数:");
scanf("%d",&a);
a3=pow(a,3);
for(i=1;;i=i+2)
{
sum=0;
b=i;
for(;sum<=a3;i=i+2)
{
sum=sum+i;
if(sum==a3)
{
c=i;
break;
}
}
if(sum==a3)
{
c=i;
break;
}
}
printf("%d=",a3);
for(i=b;i<c;i+=2)
{
printf("%d+",i);
}
printf("%d",c);
return 0;
}
内层循环和外层循环的i是一个变量,内层循环i的改变导致外层循环i不是从1连续+2,
输入的整数是3时,内层循环sum=1+3+5+7+9+11=36>27,i=11+2=13,外层循环的i变成了13,就遗漏了从3,5,7,9,11开始的连续奇数
改进:替换内层的循环变量,如下
- #include <stdio.h>
- #include <math.h>
- int main() {
- int a, a3, i, sum, b, c, j;
- printf("请输入一个整数:");
- scanf("%d", &a);
- a3 = pow(a, 3);
- for (i = 1;; i = i + 2) {
- sum = 0;
- b = i;
- j = i;
- for (; sum <= a3; j = j + 2) {
- sum = sum + j;
- if (sum == a3) {
- c = j;
- break;
- }
- }
- if (sum == a3) {
- c = j;
- break;
- }
- }
- printf("%d=", a3);
- for (i = b; i < c; i += 2) {
- printf("%d+", i);
- }
- printf("%d", c);
- return 0;
- }
复制代码
|
最佳答案
查看完整内容
内层循环和外层循环的i是一个变量,内层循环i的改变导致外层循环i不是从1连续+2,
输入的整数是3时,内层循环sum=1+3+5+7+9+11=36>27,i=11+2=13,外层循环的i变成了13,就遗漏了从3,5,7,9,11开始的连续奇数
改进:替换内层的循环变量,如下
|