码迷,mamicode.com
首页 > 其他好文 > 详细

C语音计算器

时间:2015-01-23 20:03:42      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

我们要用c语言做一个简单的计算器,进行加、减、乘、除操作。本程序涉及的所有数学知识都很简单,但输入过程会增加复杂性。我们需要检查输入,确保用户没有要求计算机完成不可能的任务。还必须允许用户一次输入一个计算式,例如: 32.4+32 或者 9*3.2

项目效果图

技术分享

编写这个程序的步骤如下:

  • 获得用户要求计算机执行计算所需的输入。
  • 检查输入,确保输入可以理解。
  • 执行计算。
  • 显示结果。

解决方案

1.步骤1

获得用户输入是很简单的,可以使用printf()和scanf()。下面是读取用户输入的程序代码:

#include<stdio.h>
int main()
{
   double number1=0.0;     //定义第一个操作值
   double number2=0.0;     //定义第二个操作值
   char operation=0;       //operation必须是‘+‘‘-‘‘*‘‘/‘或‘%‘

   printf("\nEnter the calculation\n");
   scanf("%lf%c%lf",&number1,&operation,&number2);

   return 0;  
}

2.步骤2

接着,检查输入是否正确。最明显的检查是要执行的操作是否有效。有效的操作有+、-、*、/和%,所以需要检查输入的操作是否是其中的一个。

还需要检查第二个数字,如果操作是/或者%,第二个数字就不能是0。如果右操作数是0,这些操作就是无效的。这些操作都可以用if语句来完成,switch语句则为此提供了一种更好的方式,因此它比一系列if语句更容易理解。

switch(operation)
   {
      case ‘+‘:
           printf("=%lf\n",number1+number2);
          break;

      case ‘-‘:
           printf("=%lf\n",number1-number2);
           break;

      case ‘*‘:
           printf("=%lf\n",number1*number2);
           break;

      case ‘/‘:
           if(number2==0)
             printf("\n\n\aDavision by zero error!\n");
           else
             printf("=%lf\n",number1/number2);
           break;

      case ‘%‘:
           if((long)number2==0)     
             printf("\n\n\aDavision by zero error!\n");    
           else
             printf("=%ld\n",(long)number1%(long)number2);        
           break;

      default:
          printf("\n\n\aDavision by zero error!\n");
          break;

取余运算符对float或double类型是没有意义的,因为他们可以表示精确的结果。只有把%运算符应用于整数类型才有意义。因此在应用这个运算符前,把操作数转换为整数。当运算符是%时,将第二个操作数转换为一个整数,所以仅仅检查第二个操作数是否为0是不够的,还必须检查number2在转换为long时,值是否为0.例如0.5不是0,但是转换为整数时就是0。

程序的完整代码

#include<stdio.h>
int main()
{
   double number1=0.0;
   double number2=0.0;
   char operation=0;

   printf("\nEnter the calculation\n");
   scanf("%lf%c%lf",&number1,&operation,&number2);

   switch(operation)
   {
      case ‘+‘:
           printf("=%lf\n",number1+number2);
          break;

      case ‘-‘:
           printf("=%lf\n",number1-number2);
           break;

      case ‘*‘:
           printf("=%lf\n",number1*number2);
           break;

      case ‘/‘:
           if(number2==0)
             printf("\n\n\aDavision by zero error!\n");
           else
             printf("=%lf\n",number1/number2);
           break;

      case ‘%‘:
           if((long)number2==0)     
             printf("\n\n\aDavision by zero error!\n");    
           else
             printf("=%ld\n",(long)number1%(long)number2);        
           break;

      default:
          printf("\n\n\aDavision by zero error!\n");
          break;          


    }
    return 0;
}

 

C语音计算器

标签:

原文地址:http://www.cnblogs.com/yandan/p/4244821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!