有个程序有点错误,自己很难看出啊!
写的程序主要是想解决统计负整数的和的问题。
现在写的程序还完整,就是有一些细节的问题没解决,希望大家解决下我问的问题,谢谢各位了
[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--