上半年你做一点点的优化,我觉得后半部分的算法或某些问题,或者程序BUG
上半年的结果,是不是你想要达到的效果,不知道
INT I = 0,Z = 0;双A [20];字符B [20];
双率= 10.0,ITEMP = 0.0;
memset的( A,0,sizeof(A)的);
memset的(B,0,sizeof(b)条)的;
(I = 0;
(阵列[I]> = '0'&&数组[I] <= '9')
{
(率== 10.0)
ITEMP = ITEMP *汇率+(数组[I] - '0');
其他
{
ITEMP = ITEMP +速度*(数组[I] - '0');
>率= rate/10;
}
}
其他(数组[I] =='。')
率= 0.1;
其他(阵列[1] =='+'| |阵列[I] ==' - '| |阵列[I] =='*'| |数组[0] =='/')
{
> A [Z] = ITEMP; ITEMP = 0; Z + +;
B [Z] =数组[]; Z + +;
率= 10.0;
}
> {
的printf(“请输入正确的数据!\ N”);
返回-1;
}
A [Z] = ITEMP; / /保存置于外循环的最后一个号码
= Z;
运行调试结果:
邀请进入公式:
2 +5 * 6 / 3-1
2 +5 * 6 / 3-1
A [0] = 2.00
B [0] =
1 [1] = 0.00
B [1] = +
A [2] = 5.00
B [2] =
A [3] = 0.00
B [3] = *
A [ 4] = 6.00
B [4] =
A [5] = 0.00
B [5] = /
一个[6] = 3.00
B [6 ] =
一个[7] = 0.00
B [7] = -
A [8] = 1.00
B [8] =
for(i=0;;i++);
//for 循环后面的分号去掉,不然是是循环
判断最好放到前面去 ,而且加一句 x+y ==0 的情况,以免发生CPU除法0中断
if(x*y==0)break;这一句调前。
在输入x和y后就立即判断是否为0
不然按照你的代码,
z=2*x*y/(x+y);
这句会出错。
你的程序里,当输入的x和y都为0时,除数为0了,程序会出错。
你是指这个问题吗?
int main9()
{
int i,x,y,z;
for(i=0;;i++)// 这里多了分号“;”
{
cout<<"please give x and y";
cin>>x>>y;
z=2*x*y/(x+y);
cout<
}
return 0;
}