问一下这个关于c语言计算器的小程序,大家帮我看看
#include"stdio.h"voidmain(){floatx,y,z;charch;scanf("%f",&x);printf("输入运算符:");scanf("...
#include "stdio.h"
void main()
{
float x,y,z;
char ch;
scanf("%f",&x);
printf("输入运算符:");
scanf("%c",&ch);
printf("%c\n",ch);
printf("输入y:");
scanf("%f",&y);
switch(ch)
{
case'+':
z=x+y;
printf("x+y=%f",z);break;
case'-':
z=x-y;
printf("x-y=%f",z);break;
case'*':
z=x*y;
printf("x*y=%f",z);break;
case'/':
z=x/y;
printf("x/y=%f",z);break;
}
}
大家看看ch那部分是不是有问题 ,运行起来,直接把输入运算符部分给跳过去了,就是这样
直接到输入y了,我是小白,刚学这个,大家给看看 展开
void main()
{
float x,y,z;
char ch;
scanf("%f",&x);
printf("输入运算符:");
scanf("%c",&ch);
printf("%c\n",ch);
printf("输入y:");
scanf("%f",&y);
switch(ch)
{
case'+':
z=x+y;
printf("x+y=%f",z);break;
case'-':
z=x-y;
printf("x-y=%f",z);break;
case'*':
z=x*y;
printf("x*y=%f",z);break;
case'/':
z=x/y;
printf("x/y=%f",z);break;
}
}
大家看看ch那部分是不是有问题 ,运行起来,直接把输入运算符部分给跳过去了,就是这样
直接到输入y了,我是小白,刚学这个,大家给看看 展开
1个回答
展开全部
你输入第一个数字后会有一个回车在输入队列中停留。在printf("输入运算符:"); 前加一行读一个字符的就算行。getchar();
追问
哦,这样一改确实对了,想了一下,一般不都是输完第一个数据,点回车,空格什么的才到输下个数据的时候么,这个为什么直接把回车直接读进去了,什么时候会出现这样的情况
追答
这种 情况是因为scanf读数据终止的时候会把最后的回车读到输入队列中。就像cin.get() 和cin.getline()。get()会把输入队列中的回车读到字符串中。而getline不会读,那么getline()后的输入队列中就会残余一个回车符。一般你是输入一个字符的时候才会出现这种情况,一般你连着输入几个int 时。不会出现。所以你读一个字符时,如果前面有输入,你最后用getchar()把输入队列中的那个字符读出来。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询