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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵