Char 砍砍 2022-05-04 09:16 采纳率: 66.7%
浏览 58
已结题

我问一下为什么我的代码循环不了,只能循环一次就出来了

用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
操作数1 运算符op 操作数2
计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。

要求如下:
(1)要求程序能进行浮点数的算术运算,操作数1和2用float类型定义,运算符op用字符型定义。
(2)要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空白符
输入提示信息:"Please enter the expression:\n"
输入数据格式:"%f %c%f"
输出数据格式:以加运算为例:"%f+ %f = %f\n"
(3)要求连续做多次算术运算,每次运算结束后,程序都给出提示:
Do you want to continue(Y/N or y/n)?
用户输入Y或y时,程序继续进行其他算术运算;否则程序退出运行状态。
输入提示信息:"Do you want to continue(Y/N or y/n)?"
输入数据格式:" %c"
(4)如果输入错误的运算符,则输出"Unknown operator!\n",不结束程序运行,继续询问是否做下一次运算。
(5)如果除数为0,则输出"Division by zero!\n",不结束程序运行,继续询问是否做下一次运算。
(6)允许浮点数的误差在1e-7范围内。
提示:请直接拷贝粘贴题目中给定的格式字符串。

#include<stdio.h>
int main()
{
float a1,a2,b1;
char op,a;
a='y';

while(a=='y'||a=='Y')
{
    printf("Please enter the expression:\n");
    scanf("%f %c%f",&a1,&op,&a2);
    switch(op)
    {
        case'+':b1=a1+a2;printf("%f + %f = %f\n",a1,a2,b1);break;
        case'-':b1=a1-a2;printf("%f - %f = %f\n",a1,a2,b1);break;
        case'*':b1=a1*a2;printf("%f * %f = %f\n",a1,a2,b1);break;
        case'/':if(a2==0)
               {
                   printf("Division by zero!\n");
                   break;
               }
               b1=a1/a2;
               printf("%f / %f = %f\n",a1,a2,b1);
               break;
        default:printf("Unknown operator!\n");break;      
    }
    
    printf("Do you want to continue(Y/N or y/n)?");
    scanf("%c",&a);
}
return 0;

}



  • 写回答

2条回答 默认 最新

  • 关注

    scanf("%f %c%f",&a1,&op,&a2);后面加一句getchar();来接收回车符,否则会影响scanf("%c",&a)的读取。
    scanf("%c",&a);后面也加一句getchar();

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 创建了问题 5月4日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看