滑板上板动作视频:请高手们帮我看看这程序哪里有BUG

来源:百度文库 编辑:高考问答 时间:2024/05/06 10:49:10
#include <stdio.h>
#include <string.h>
float jisuan(int l,float m,float n)
{
float a;
switch (l)
{
case 1:
a = m+n;
break;
case 2:
a = m-n;
break;
case 3:
a = m*n;
break;
case 4:
a = m/n;
break;
default:
printf("输入有错误!!!");
}
return a;
}
int main()
{
float a,b,c;
int d;
char e='y';
do
{
printf("请输入要计算的第一个数:\n");
scanf("%f",&a);
printf("请选择要进行何种计算1:加法 2:减法 3:乘法 4:除法\n");
scanf("%d",&d);
printf("请输入要计算的另一个数:\n");
scanf("%f",&b);
c = jisuan(d,a,b);
printf("结果是:%f\n",c);
printf("继续请按y,退出请任意输入之后回车\n");
e = getchar();
if (e!='y'||e!='Y')
break;
}
while('y'==e||'Y'==e);

}
我用DEV C++编译的 此程序不管怎么样 到了该输入字符时候我输入y之后 再回车 一定是退出....
还有 此程序如果有DOUBLE的变量形式 最后任何计算的结果都会是0 而用FLOAT就能正常的计算 请问这是为什么啊?谢谢~

#include <stdio.h>
#include <string.h>
double jisuan(int l,double m,double n)
{
double a;
switch (l)
{
case 1:
a = m+n;
break;
case 2:
a = m-n;
break;
case 3:
a = m*n;
break;
case 4:
a = m/n;
break;
default:
printf("请输入要计算的第一个数:");
}
return a;
}
int main()
{
double a,b,c;
int d;
char e='y';
do
{
printf("请选择要进行何种计算1:加法 2:减法 3:乘法 4:除法\n");
scanf("%lf",&a);
printf("请选择要进行何种计算1:加法 2:减法 3:乘法 4:除法\n");
scanf("%d",&d);
printf("请输入要计算的另一个数:\n");
scanf("%lf",&b);
c = jisuan(d,a,b);
printf("结果是:3.6f\n",c);
printf("继续请按y,退出请任意输入之后回车\n");
getchar();
scanf("%c",&e);
if (e!='y'&&e!='Y')
break;
}
while('y'==e||'Y'==e);

}
这是我给你调的,在输入double是,scanf("%lf",&a);
在等待用户输入时用getchar();吃掉回车,再scanf("%c",&e);

就是这里错了。
if (e!='y'||e!='Y')
break;
当你输入'y'之后
条件e != 'y'为假,但是条件e != 'Y'为真,
所以 假||真,返回真,所以程序break了。

所以,你要改成:
if(e != 'y' && e != 'Y') break;

看看是不是可以了?!!!!

呵呵 打开我的电脑--C盘--WINDOS文件夹--_default右键--程序--把“退出时关闭”的对号取消--确定!!