注册 登录
编程论坛 C语言论坛

求解答,关于getchar

闲客一位 发布于 2022-02-13 11:09, 1423 次点击
#include<stdio.h>
int main()
{
    int num1,num2,result;
    char op;
    printf("input number\n");
    scanf("%d%d",&num1,&num2);
    printf("input operator\n");
    op=getchar();//处理回车键
    op=getchar();
    switch(op)
    {
        case '+':result=num1+num2;break;
        case '-':result=num1-num2;break;
        case '*':result=num1*num2;break;
        case '/':result=num1/num2;break;
        default:printf("请输入+ - * \ 运算符\n");
    }
    printf("%d%c%d=%d\n",num1,op,num2,result);
    return 0;
}
那两句getchar我不是很理解。拜托拜托懂的人回复我。
4 回复
#2
不会游泳的虾2022-02-13 11:54
解释如下,供参考:
程序代码:
#include<stdio.h>
int main()
{
    int num1,num2,result;
    char op;
    printf("input number\n");
    scanf("%d%d",&num1,&num2);//这句输入两个数字如:10 12 回车,以回车键结束输入,scanf()函数不读入
                              
//回车符,这个回车符就暂存在读入缓冲区中。
    printf("input operator\n");
    //op=getchar();//处理回车键 getchar()函数是读入一个字符,因为前面输入两个数字时,缓冲区里保留着回车
    getchar();   //符,getchar()将它作为字符读入,但这个回车符是没作用的,这句可以改为:getchar();
    op=getchar();//这句才是真正的读入一个运算符
    switch(op)
    {
        case '+':result=num1+num2;break;
        case '-':result=num1-num2;break;
        case '*':result=num1*num2;break;
        case '/':result=num1/num2;break;
        default:printf("请输入+ - * \ 运算符\n");
    }
    printf("%d%c%d=%d\n",num1,op,num2,result);
    return 0;
}
#3
闲客一位2022-02-13 12:01
回复 2楼 不会游泳的虾
感谢
#4
rjsp2022-02-14 08:24
建议将
    op=getchar();//处理回车键
    op=getchar();
改为 scanf(" %c",&op),注意 %c 前有一个空格。
#5
onelemon2022-02-18 12:50
哇!学习了。。
1