标签:
获得用户输入是很简单的,可以使用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;
}
接着,检查输入是否正确。最明显的检查是要执行的操作是否有效。有效的操作有+、-、*、/和%,所以需要检查输入的操作是否是其中的一个。
还需要检查第二个数字,如果操作是/或者%,第二个数字就不能是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;
}
标签:
原文地址:http://www.cnblogs.com/yandan/p/4244821.html