新人处女贴,可能问题对你们很简单,愿意的帮下,别见笑
在屏幕上显示如下的菜单,程序功能是当从键盘输入一个整数时,对其判断,如果数字在1-4的范围内,则从键盘输入两个数,完成相应的运算后输出其结果。如果不在0-4的范围内则输出:输入错误。例如输入2,提示输入两个数,输出这两个数的差。计算完后再输出“是否继续(Y/N)?”,如果输入Y,则继续显示菜单,提示输入运算代码进行计算。#include<stdio.h>
int main(){
int n;
float a,b,y;
char c,Y,N;
printf("**********欢迎使用简易运算系统**********\n");
printf(" 1,加法 \n");
printf(" 2,减法 \n");
printf(" 3,乘法 \n");
printf(" 4,除法 \n");
printf(" 0,退出 \n");
printf("****************************************\n");
printf("请输入运算代码:");
do
{
scanf("%d",&n);
if(n<0||n>4)
printf("输入错误\n");
else
{
if(n==0) break;
printf("请输入两个数:");
scanf("%f%f",&a,&b);
if(n==1)
{
y=a+b;
printf("%.2f+%.2f=%.2f\n",a,b,y);
}
if(n==2)
{
y=a-b;
printf("%.2f-%.2f=%.2f\n",a,b,y);
}
if(n==3)
{
y=a*b;
printf("%.2f*%.2f=%.2f\n",a,b,y);
}
if(n==4)
{
y=a/b;
printf("%.2f/%.2f=%.2f\n",a,b,y);
}
printf("是否继续Y/N\n");
scanf("%d",&c);
}
}while(c==Y);
}
我调了好久,真没办法了,没预期结果。。。
[解决办法]
#include<stdio.h>
int main()
{
int n;
float a,b,y;
char c='Y';
do
{
printf("**********欢迎使用简易运算系统**********\n");
printf(" 1,加法 \n");
printf(" 2,减法 \n");
printf(" 3,乘法 \n");
printf(" 4,除法 \n");
printf(" 0,退出 \n");
printf("****************************************\n");
printf("请输入运算代码:");
scanf("%d",&n);
if(n<0
[解决办法]
n>4)
printf("输入错误\n");
else
{
if(n==0) break;
printf("请输入两个数:");
scanf("%f%f",&a,&b);
if(n==1)
{
y=a+b;
printf("%.2f+%.2f=%.2f\n",a,b,y);
}
if(n==2)
{
y=a-b;
printf("%.2f-%.2f=%.2f\n",a,b,y);
}
if(n==3)
{
y=a*b;
printf("%.2f*%.2f=%.2f\n",a,b,y);
}
if(n==4)
{
y=a/b;
printf("%.2f/%.2f=%.2f\n",a,b,y);
}
printf("是否继续Y/N\n");
scanf(" %c",&c);
}
}
while(c=='Y');
}
尽量少的更改你的代码。
[解决办法]
这问题达不到效果明显是在是否继续那里输入的字符问题
输入缓冲区把回车 '\n' 给赋值到c中 得到的结论就是否了. 可以清空输入缓冲区或者在此scanf前加一个 getchar();来把回车吃掉
[解决办法]
楼主的问题是用了scanf("%c",&c);这个函数读取了你上次输入两个数a,b时产生的回车键。 所以c得值就是回车的ASCII码。解决方法很多。比如可以用getchar()把回车吃掉。最好不要这么用scanf