【问题标题】:C program to create a simple calculatorC程序创建一个简单的计算器
【发布时间】:2019-06-23 02:46:38
【问题描述】:

我正在尝试创建一个简单的计算器... 我正在学习C程序。我需要编写一个程序来使用 switch 语句创建一个计算器。当我尝试运行此代码时,程序在运行时停在中间,我不知道是什么原因造成的。 这是程序。

#include<stdio.h>
void main()
{
    float n1,n2,ans;
    char op,x;
    do
    {
        printf("Enter 1:");
        scanf("%f",&n1);
        printf("Enter 2:");
        scanf("%f",&n2);
        printf("Enter operator:");
        scanf("%c",&op);

        switch(op)
        {
            case'+': ans=n1+n2;break;
            case'-': ans=n1-n2;break;
            case'*': ans=n1*n2;break;
            case'/': ans=n1/n2;break;
            default:printf("Invalid operator\n");
        }

        printf("Answer= %.2f\n",ans);
        printf("Do you want to try it again?(y/n)");
        scanf("%c",&x);
    }
    while(x=='y' || x=='Y');
 }

【问题讨论】:

  • scanf("%c",&amp;op); 阅读'\n'

标签: c input scanf


【解决方案1】:

你的缓冲区有问题。试试我做的这个修正

    #include<stdio.h>

    int main(){
        float n1, n2, ans;
        char op,x;
        do {
            printf("Enter 1:");
            scanf("%f",&n1);
            printf("Enter 2:");
            scanf("%f",&n2);
            getchar();
            printf("Enter operator:");
            scanf("%c",&op);

            switch(op) {
                case'+': ans=n1+n2;break;
                case'-': ans=n1-n2;break;
                case'*': ans=n1*n2;break;
                case'/': ans=n1/n2;break;
                default:printf("Invalid operator\n");
            }
            printf("Answer= %.2f\n",ans);
            printf("Do you want to try it again?(y/n)");
            getchar();
            scanf("%c",&x);
            printf("%c\n",x );
        }while(x=='y' || x=='Y');
        return 0;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多