初级c语言循环嵌套问题!一个数的立方等于几个连续奇数的和的问题!!

问题:一个自然数的立方等于几个连续奇数的和,随意输入一个自然数,求它的立方是哪几个连续自然数之和
我知道有一个公式,但是我的想法是从1开始的奇数循环,每次向前加一个连续的奇数,做一次判断小于则继续加,大于则从头开始,把首个奇数变大,继续循环
,推进寻找最终解输出
程序如下:
请问错在哪??????
#include <stdio.h>
#include <math.h>
void main()
{
int a,b,c,d,e,i=1;
printf("请输入a的值:");
scanf("%d",&a);
e=pow(a,3);
for(b=1;b<e||d==e;b=b+2)
{
i=1;
for(c=b+2;1;c=c+2)
{
d=c+b;
if(d<e)continue;
i++;
if(d>e)break;
if(d==e)
{printf("%d是以%d为最小值的%d个连续奇数的和",e,b,i);break;}
}
}
}

有几个地方,详见说明

#include <stdio.h>

#include <math.h>

void main()

{

 int a,b,c,d,e,i=1;

 printf("请输入a的值:");

 scanf("%d",&a); 

 e=(int)pow((double)a,3);     //显示声明,先不管这个

 for(b=1;b<e||d==e;b=b+2) 

 {

  i=1;  

  d=b;             //d赋初值

  for(c=b+2;1;c=c+2) 

  {  

   d=c+d;  //d=c+b没有意义的,求和要+自己

   if(d<e)

   {

    i++;  //i用于计数,要在这个条件内

    continue; 

   }

   if(d>e)

    break;  

   if(d==e) 

   {

    i++;  //因为b这个数字没算在内,所以个数+1

    printf("%d是以%d为最小值的%d个连续奇数的和",e,b,i);

    break;//注意分号格式
   } 

  }

 }

 getchar();  //调试用

 getchar();  //调试用

}

追问

谢谢你啦!我们做朋友吧~

追答

不客气,有问题可以探讨

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-14
#include <stdio.h>
#include <math.h>
void main()
{
 int a,b,c,d,e,i=1;
 printf("请输入a的值:");
 scanf("%d",&a);
 e=pow(a,3);
 d=0;
 for(b=1;b<=e&&d<e;b=b+2,i=0,d=0)
 {
  for(c=b;d<e;c=c+2){
      i++;
      d=c+d;
      printf("%d %d\n",d,e);
  }
  if(d==e){
     printf("%d是以%d为最小值的%d个连续奇数的和",e,b,i);
     break;
    }
 }
 if(d!=e)
     printf("无解");
}

追问

谢谢你!我们做朋友好不好~

追答

让我们愉快的玩耍 让我们荡起双桨

第2个回答  2014-05-14
int main()
{
    int n;
    scanf("%d", &n);
     
    int a = n * n - n + 1;
    printf("%d^3 = %d ", n, a);
    for (int i = 0; i < n-1; i ++)
    {
        a += 2;
        printf("+ %d", a);
    }
    printf(" = %d", n * n * n);
    return 0;
}

追问

我知道有这么个公式,但是我非常想知道为什么我的程序不对,你能帮我看一看吗?谢谢拉

第3个回答  2014-05-14
逻辑没有问题 ,我看看程序追问

你好!介 意 我 加 你 扣 扣 吗?
这个程序运行总是莫名其妙什么都没输出就结束了

追答#include <stdio.h>
#include <math.h>
void main()
{
int a,b,c,d,e,i=1,j;
printf("请输入a的值:");
scanf("%d",&a);
e=pow(1.0*a,3);
for(i=1;i<e;i+=2)
{
int sum=0;
for(j=i;j<e;j+=2)
{
sum+=j;
if(sum>e)
break;
if(sum==e)
{
printf("开始为 %d,结束为%d;;结果为:%d",i,j,sum);
break;
}
}

}
}

帮你写了一个 你的程序确实很多问题 


四六九4八二八66     加这个吧。。。。。

本回答被提问者采纳

c语言 任何一个自然数的立方等于连续奇数之和
输出结果为 列如n=4: 4^3 = 13+15+17+19 希望能帮到你。

用C语言证明任何一个自然数的立方等于 N 个连续奇数之和
正确答案来了,在TC2下调试通过:include <stdio.h> int test(int j,int i){ int k,s;s=0;for (k=i;k<j;k+=2){ s+=k;if (s>j) break;if (s==j) return k;} return 0;} void out_list(int i, int k){ int j,x;x=32;for (j=i;j<=k;j+=2){ printf("%c%d...

求n的3次方等于连续n个奇数的和用c语言
{ h=i*2+n*(n-1)+1;printf("%d",h);if(i!=(n-1))printf("+");} return 0;} 希望能帮到你,望采纳;

求n的三次方等于连续n个奇数的和。用c语言。
int main(){ unsigned long long i,n,s;scanf("%llu",&n);s=n*n-n+1;printf("%llu=",n*n*n);for(i=1;i<n;i++,s+=2)printf("%lld+",s);printf("%llu\\n",s);return 0;}

C语言,将N的3次方表示成N个连续的奇数之和;输出是乱码
h> include <math.h> void main(void){ int n,x,y,i;printf("input a positive number:\\n");scanf("%d",&n);x=pow(n,3);printf("%d=",x);for(i=0;i<n;i++){ y=i*2+n*(n-1)+1;printf("%d",y);if(i!=(n-1))printf("+");} printf("\\n");getch();} ...

输入一个正整数n[小于30],输出结果是n个连续奇数的和[结果等于n的立方...
按照题目要求编写的n的立方等于n个连续奇数和的C语言程序如下 因为n的立方等于关于n的平方两侧对称的连续奇数和,所以有如下程序 include<stdio.h> int main(){ int n,i;scanf("%d",&n);if(n<30){ for(i=n*n-n+1;i<=n*n+n-1;i+=2){ if(i==n*n+n-1)printf("%d\\n",i);el...

...输出它的立方等于n个连续奇数之和,测试时出了问题,不知错在哪_百度...
可能是数据溢出,因为整型变量在内存中只有两个字节,所以范围在—32768---+32768这是有符号数的,若无符号:0--65535;32的立方刚好等于32768而33的立方就超过此范围了,如果想扩大范围的话,可以用长整型的,但范围也大不了哪去,毕竟你用的是立方数。

c语言编程验证:任何一个自然数m的立方均可以写成m个连续的奇数之和...
int n, i, k, flag = 1, s = 0;do { scanf("%d", &n);for (k = 1; flag == 1; k = k + 2)for (i = 0, s=0; i < n; i++, k = k + 2){ s = k + s;if (n * n * n == s){ flag = 0;for (i = 0; i < n; i++, k = k - 2)printf(...

c语言编程:输入一个自然数n,求组成n^3的n个连续奇数
1,if(i==n) break;你这一句是不是有点多余?为什么不放在:for(i=1;i<=n;i++)?2,a=n*n-(n-1)+j*2;你的外部循环,也就是i几乎没有用,仅仅是用来增加循环次数而已,所以最小值都是7 = 3*3-2+0

一道C语言数组的题目。求指点
5.已知任何一个正整数n的立方均可以表示成n个连续奇数之和。例如:13=123=3+533=7+9+1143=13+15+17+19 ……试按下列要求编制程序:(1) 编写函数void find_odd(int odd[],int n),其功能是找到n个连续奇数,满足n的立方等于这些连续奇数之和,将这些奇数依次存放在数组odd中。(2) 编写main函数,定义变量...

相似回答