BE北北苏 2021-11-16 22:18 采纳率: 69.2%
浏览 9
已结题

连续输入两个a 会发现一个问题。我特想知道为什么会出现这样的问题??


#include<stdio.h>
#include<stdlib.h>
float add (void);
float subtract (void);
float multiply (void);
float divide (void);
char choice (void);
int main()
{int ch;
  while ((ch=choice())!='q')
  {
      switch (ch)
      {
      case 'a': add();
          break;
      case 's':subtract();
          break;
      case 'm':multiply();
          break;
      case 'd':divide();
          break;
      default: 
          break;
      }
         
  }
   printf("bye\n");

     system("pause");
    return 0;
}
char choice (void)
{
char ch;
printf("Enter the operation of your choice:\n");
printf("a. add        s. subtract\n");
printf("m. multiply     d. divide\n");
printf("q. quit\n");
ch=getchar();
while (getchar()!='\n')
{
    continue;
}

return ch;
} 
float add(void)
{float a,b;
float e;
char ch;
printf("Enter first number:");
while (scanf("%f",&a)!=1)
{   while ((ch=getchar())!='\n')
{
    putchar(ch);
}
printf("is not a number,");
    printf("you are wrong,enter again:");
      
}
printf("Enter second number:");
while (scanf("%f",&b)!=1)
{
    printf("you are wrong,enter again:");

    
}
e=a+b;
printf("%f + %f = %f\n",a,b,e);
return e;
}
float subtract (void)
{float a,b;
float e;
printf("Enter first number:");
while (scanf("%f",&a)!=1)
{
    printf("you are wrong,enter again:");
    
}
printf("Enter second number:");
while (scanf("%f",&b)!=1)
{
    printf("you are wrong,enter again:");
    
}
e=a-b;
printf("%f - %f = %f\n",a,b,e);
return e;
}
float multiply (void)
{float a,b;
float e;
printf("Enter first number:");
while (scanf("%f",&a)!=1)
{
    printf("you are wrong,enter again:");
    
}
printf("Enter second number:");
while (scanf("%f",&b)!=1)
{
    printf("you are wrong,enter again:");
    
}
e=a*b;
printf("%f * %f = %f\n",a,b,e);
return e;
}
float divide (void)
{
float a,b;
float e;
printf("Enter first number:");
while (scanf("%f",&a)!=1)
{
    printf("you are wrong,enter again:");
    
}
printf("Enter second number:");
while (scanf("%f",&b)!=1)
{
    printf("you are wrong,enter again:");
    
}
if (b==0)
{
 printf("Enter a number other than 0:");
 scanf("%f",&b);
}

e=a/b;
printf("%f / %f = %f\n",a,b,e);
return e;

}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月24日
    • 创建了问题 11月16日

    悬赏问题

    • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
    • ¥15 Java+vue部署版本反编译
    • ¥100 对反编译和ai熟悉的开发者。
    • ¥15 带序列特征的多输出预测模型
    • ¥15 Python 如何安装 distutils模块
    • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
    • ¥15 资源泄露软件闪退怎么解决?
    • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
    • ¥30 comfyui openpose报错
    • ¥20 Wpf Datarid单元格闪烁效果的实现