供参考:
#include <stdio.h>
int main()
{
long int n,i,k,j,sum;
printf("Enter n=");
scanf("%ld", &n);
k = n * n * n;
for (i=1; i<k/2; i+=2)
{
for (j=i,sum=0;j<i+2*n; j+=2)
sum += j;
if (sum == k)
printf("%ld*%ld*%ld=%ld=from %ld to %ld\n",n,n,n,sum,i,j-2);
}
return 0;
}
该题并未叙述完全,应该加上输入的数为多少,就有多少个连续的奇数相加,比如输入13,就可以等于13个连续的奇数相加。
因此第一空可填 sum<k; 第二空可填 &&(j-2-i)/2+1==n;第三空可填 j-2.
完整代码如下:
#include<stdio.h>
int main()
{
long int n,i,j,sum,k;
printf("enter n=");
scanf("%ld",&n);
k=n*n*n;
for(i=1;i<k/2;i+=2)
{
for(j=i,sum=0;sum<k;j+=2)
sum=sum+j;
if(sum==k&&(j-2-i)/2+1==n)
printf("%ld*%ld*%ld=%ld=from%ldto%ld\n",n,n,n,sum,i,j-2);
}
return 0;
}