getchar函数只能用一次吗?
#include<stdio.h>
void main()
{int a,b;
a=5;b=4;
if(getchar()==’+')
printf(“%d+%d=%d”,a,b,a+b);
else if(getchar()==’-')
printf(“%d-%d=%d”,a,b,a-b);
else
printf(“input error”);
}
输入’+'号时能得到计算结果,但输入-号和其它字符时都显示错误,请教下这是为什么???
>> 本文固定链接: http://www.vcgood.com/archives/2555
>> 转载请注明: iloveyouf1987 2008年07月27日 于 C语言帝国 发表
加个循环就行了,如下:
#include<stdio.h>
void main()
{int a,b;
a=5;b=4;
while(1){
if(getchar()==’+')
printf(“%d+%d=%d”,a,b,a+b);
else if(getchar()==’-')
printf(“%d-%d=%d”,a,b,a-b);
else
printf(“input error”);
}
}
这个对啦 ==+ 单引号 字符型
不好意思,我没看到最后的问题。
给个正确的
#include<stdio.h>
void main()
{int a,b;
char ch;
a=5;b=4;
ch=getchar();
if(ch==’+')
printf(“%d+%d=%d”,a,b,a+b);
else if(ch==’-')
printf(“%d-%d=%d”,a,b,a-b);
else
printf(“input error”);
}
解答下:
if(getchar()==’+') //此时要求第一次输入并判断
printf(“%d+%d=%d”,a,b,a+b);
else if(getchar()==’-') //此时要求第二次输入并判断
printf(“%d-%d=%d”,a,b,a-b);
else
printf(“input error”);
输入:–
输出:5-4=1
输入:-回车
输出:input error
输入:回车 回车
输出:input error
getchar()出现了两次,要求输入两次
明白了,谢谢各位~~~~辛苦了~~
whos
有几个问题想请教下
#include<stdio.h>
void main()
{int a,b;
a=5;b=4;
if(getchar()==’+')
printf(“%d+%d=%d”,a,b,a+b);
else if(getchar()==’-')
printf(“%d-%d=%d”,a,b,a-b);
else
printf(“input error”);
}
1。这段程序中‘+’ ‘-’为字符型,没有给它开辟空间,往那存啊?但是为什么输入’+'号时能得到计算结果,输入-号和其它字符时都显示错误,他用的是选择结构啊?
2。你给的第1个程序中 加了个循环 while(1) 这个条件 1(代表什么)???,为什么运行后+只能运算一次,以后就出错,-为什么一直可以计算?
回复:
1.在getchar()读取字符的时候,是从stdin的“缓存”中读的。系统在内存确定的位置定义了一个可以存15个键的扩充ASCII码的32个单元的键盘缓冲区。从键盘输入时,键值首先送到键盘缓冲区里,然后系统再从缓冲区里读取键值。
在运行程序的时候,执行到 if(getchar()==’+') 时要求输入一次,输入的是 +回车,+键和回车的键值就被送到键盘缓冲区里,系统从缓冲区提取第一个键值,即是 +,符合判断条件,执行printf(“%d+%d=%d”,a,b,a+b),程序结束。
执行到 if(getchar()==’+') 时要求输入一次,输入的是 -回车,-键和回车的键值被送到键盘缓冲区,系统从缓冲区提取第一个键值,即是 -,不符合条件,转去执行 else if(getchar()==’-'),此时键盘缓冲区内还有键值——回车键的键值,于是系统提取回车键的键值,条件getchar()==’-'不成立,所以程序转到 printf(“input error”)。
2.while(1)中的1代表的是条件永远为真,就是无限循环下去的意思。
至于“为什么运行后+只能运算一次,以后就出错,-为什么一直可以计算”我当时没有测试,因为没看到帖子最后一行的问题,汗一个。估计也是和键盘缓冲区有关。
还有什么问题吗?
说明一下,第六楼的我的解答有些错误,是关于getchar()的解释。
whos真是太强了 楼主的只要输入两个减号 就能得到 结果了
强?晕。
呵呵,别捧杀我啦。我不知道的东西还有好多。
#include<stdio.h>
void main()
{int a,b;
char ch;
a=5;b=4;
ch=getchar();
switch(ch)
{
case (‘+’):
printf(“%d+%d=%d”,a,b,a+b);break;
case (‘-’):
printf(“%d-%d=%d”,a,b,a-b);break;
default:
printf(“input error”);
}
}
Dear :whos
thx
楼上的有什么问题吗?
很感谢你的解答
看来我还是要多多实践