鱼C论坛

 找回密码
 立即注册
查看: 4402|回复: 2

求助j为什么是1,怎么改成想要的结果。

[复制链接]
发表于 2013-7-29 19:38:16 | 显示全部楼层 |阅读模式
5鱼币
编程验证任意一个整数的立方都可以化成一串连续奇数的和。第三十五行
  1. #include <stdio.h>


  2. int x,k=0;
  3. long y,i,j,sum=0l,start,stop;


  4. int main(){
  5.         void plusDecompose(long n);  //正数拆分
  6.         void minusDecompose(long m);//负数拆分
  7.         
  8.         printf("请输入一个整数:\n");
  9.         scanf("%d",&x);
  10.         y=x*x*x;
  11.         printf("%d的立方为%d\n",x,y);
  12.         if(x>0)
  13.                 plusDecompose(y);
  14.         if(x<0)
  15.                 minusDecompose(y);
  16.         if(x==0)
  17.                 printf("0=(-1)+1\n");
  18.         return 0;
  19. }



  20. void plusDecompose(long n){
  21.         for(i=1l;i<=n;i=i+2){
  22.                 start=i;//连续奇数起始数
  23.                 j=i;
  24.                 for(sum=j;sum<=n;sum=sum+j){
  25.                         if(sum=n){                        //可分解
  26.                                 k=1;/*标记 是否有满足条件的一串连续奇数,没有k为初值,有k赋值1*/
  27.                                 stop=j;//连续奇数结束数
  28.                                 printf("%d",j);//????j=1,不知道为什么,求解,
  29.                                 sum=n+1;//跳出第一层循环
  30.                                 i=n+1;//跳出第二层循环
  31.                         }
  32.                         j=j+2;
  33.                 }               
  34.         }
  35.         j=0;//计数换行
  36.         if(k==1){//
  37.                 printf("%9d=%6d",n,start);
  38.                 j++;
  39.                 for(i=start+2;i<=stop;i=i+2){//输出满足条件的连续奇数
  40.                         printf("+%5d",i);
  41.                         j++;
  42.                         if(j%10==0)
  43.                                 printf("\n          ");
  44.                 }
  45.                 printf("\n");
  46.                 printf("定理成立\n");
  47.         }
  48.         else if(k==0)
  49.                 printf("定理不成立\n");
  50. }
  51.         
  52.         
  53.         
  54. void minusDecompose(long m){
  55.         for(i=-1l;i>=m;i=i-2){
  56.                 start=i;
  57.                 j=i;
  58.                         
  59.                 for(sum=j;sum>=m;sum=sum+j){
  60.                         if(sum=m){                        
  61.                                 k=1;
  62.                                 stop=j;
  63.                                 sum=m-1;
  64.                                 i=m-1;
  65.                         }
  66.                         else
  67.                                 j=j-2;
  68.         
  69.                 }
  70.         }
  71.         j=0;
  72.         if(k==1){
  73.                 printf("%9d=%6d",m,start);
  74.                 j++;
  75.                 for(i=start+2;i<=stop;i=i+2){
  76.                         printf("+(%5d)",i);
  77.                         j++;
  78.                         if(j%10==0)
  79.                                 printf("\n          ");
  80.                 }
  81.                         
  82.                 printf("\n");
  83.                 printf("定理成立\n");
  84.         }
  85.                                 
  86.         else if(k==0)
  87.                 printf("定理不成立\n");
  88.         
  89. }
复制代码

最佳答案

查看完整内容

32行 if(sum=n) 改为 if(sum==n) 后同
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-7-29 19:38:17 | 显示全部楼层
32行
if(sum=n)
改为
if(sum==n)
后同
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-7-29 20:20:17 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-17 10:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表