首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有个程序有点异常,自己很难看出啊

2012-03-27 
有个程序有点错误,自己很难看出啊!写的程序主要是想解决统计负整数的和的问题。现在写的程序还完整,就是有

有个程序有点错误,自己很难看出啊!
写的程序主要是想解决统计负整数的和的问题。
现在写的程序还完整,就是有一些细节的问题没解决,希望大家解决下我问的问题,谢谢各位了
[code=C/C++][/code]#include<stdio.h>
#include<math.h>
main()
{char a[80];
 char ch; // 输入值
 int i; //循环变量
 int j=0;
 int sum,y=0; //负整数总和
 int ABC(char a[],int i,int j); //自己定义求负整数的函数  

  /*输入*/
 while((ch=getchar())!='*')  
  {a[j]=ch;
  j++;
  }
 /*求负整数总和*/ 
 for(i=0;i<j;i++)
  {if(a[i]=='-') sum=ABC(a,i,j);
  y=sum+y;
  }
 printf("sum=%d\n",sum);
}
/*自定义函数求和*/
int ABC(char a[],int i,int j)
{int y=0; //返回值
 int k,g=0; //循环变量
 int h=0;
 int flag; 
 int b[80];  
/*自己检测传入的数据是不是正确*/
 printf("i=%d,j=%d\n",i,j);
 for(k=i;k<j;k++)
  printf("a[%d]=%c\n",k,a[k]);

 for(k=i+1;k<j;k++)
  {if((a[k+1]>='0')&&(a[k+1]<='9'))
  {b[h]=int(a[k+1])-45; //-45字符转化为整数
  printf("h=%d,b[%d]=%d\n",h,h,b[h]);
  h++;  
  printf("h=%d\n",h);
  }  
  else {flag=0;break;};

  printf("g=%d\n",g); //用来检测下循环了几次,结果发现只有一次,就出现问题了
  g++;
  };

 for(k=h,g=0;k>=0;g++,k--)  
  y=y+b[g]*int(pow(10,k));
 return (-y);
}
我的问题就是上面怎么会只循环一次啊,我输入了-30-40,怎么还是循环一次,
不懂我问题的在线等你,
如果有好的解决方法欢迎给出

[解决办法]
if(a[k+1]>='0'&&a[k+1]<='9')中的k+1应为k
还有 y=sum+y应在if内
printf("sum=%d\n",sum);应为printf("sum=%d\n",y);
应该减48
[解决办法]
还有加h--

热点排行