break怎么不管用?
#include<stdio.h>int main()
{
int d1,d2;
char x;
float y;
printf("请输入算式:");
scanf("%d %c %d",&d1,&x,&d2);
switch(x)
{
case '-':d2=-d2;
case '+':y=(float)d1+d2;break;
case '*':y=(float)d1*d2;break;
case'/':
if(d2==0)
{
printf("不能除0\n");break;
}
else
{
y=(float)d1/d2;break;
}
}
printf("awnser=%.2f\n",y);
return 0;
}
在算“1/0”时虽然会显示“不能除0”但是还是会继续算下去,怎么才能停下 我是用vs2010.
直接拷贝你的代码,输入1/0会报错。
报错原因为-The variable 'y' is being used without being initialized.
就是y没有初始化。
要是你给y赋初值了,当你输入1/0时,会输出,你所赋的初值。
我赋的初值为0.0,结果如下。
请输入算式:1/0
不能除0
awnser=0.00
请按任意键继续. . .
并不会出现你所说的,继续算下去的情况。 xueziheng 发表于 2019-12-13 09:01
我是用vs2010.
直接拷贝你的代码,输入1/0会报错。
为啥我输入1/0后他会算出答案等于:-107374176.00
你的程序之所以出错是因为变量y没有初始化,当输入除0的算式,变量y没有进行赋值,所以变量y的值是不确定的,这要看之前该存储空间中是什么内容了,在程序最后输出变量y就会出错。
实际上,除0的时候就不应该再输出answer。
此外switch中,最后一个case 是可以不用break的。
帮你修改了一下程序。#include<stdio.h>
int main()
{
int d1,d2;
char x;
float y=0.0;
printf("请输入算式:");
scanf("%d %c %d",&d1,&x,&d2);
switch(x)
{
case '-':d2=-d2;
case '+':y=(float)d1+d2;break;
case '*':y=(float)d1*d2;break;
case'/':
if(d2==0)
{
printf("不能除0\n");
}
else
{
y=(float)d1/d2;
}
}
if(x!='/'||d2!=0)
printf("awnser=%.2f\n",y);
return 0;
} 命运真悲惨 发表于 2019-12-13 10:33
为啥我输入1/0后他会算出答案等于:-107374176.00
因为你的y没有给它初始化,编译器随机给它一个值。
但是有的编译器,会随机赋值,我的这个就会直接报错。
切记,以后申请变量的时候要赋初值
页:
[1]