admin 管理员组

文章数量: 1086019


2024年4月26日发(作者:贪吃蛇程序任务)

C语言制作简单计算器

一、项目介绍

我们要用c语言做一个简单的计算器,进行加、减、乘、除操作。本程序涉及的

所有数学知识都很简单,但输入过程会增加复杂性。我们需要检查输入,确保用

户没有要求计算机完成不可能的任务。还必须允许用户一次输入一个计算式,例

如: 32.4+32 或者 9*3.2

项目效果图

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

获得用户要求计算机执行计算所需的输入。

检查输入,确保输入可以理解。

执行计算。

显示结果。

三、解决方案

1.步骤1

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

程序代码:

#includeint main()

{

double

number1=

0.0

;

//定义第一个操作值

double

number2=

0.0

;

//定义第二个操作值

char

operation=

0

;

//operation必须是'+''-''*''/'或'%'

printf

(

"nEnter the calculationn"

);

scanf

(

"%lf%c%lf"

,&number1,&operation,&number2);

return

0

;

}

2.步骤2

接着,检查输入是否正确。最明显的检查是要执行的操作是否有效。有效的操作

有+、-、*、/和%,所以需要检查输入的操作是否是其中的一个。

还需要检查第二个数字,如果操作是/或者%,第二个数字就不能是0。如果右操

作数是0,这些操作就是无效的。这些操作都可以用if语句来完成,switch语句

则为此提供了一种更好的方式,因此它比一系列if语句更容易理解。

switch

(operation)

{

case

'+'

:

printf

(

"=%lfn"

,number1+number2);

break

;

case

'-'

:

printf

(

"=%lfn"

,number1-number2);

break

;

case

'*'

:

printf

(

"=%lfn"

,number1*number2);

break

;

case

'/'

:

if

(number2==

0

)

printf

(

"nnaDavision by zero error!n"

);

else

printf("=%lfn",number1/number2)

;

break

;

case

'%'

:

if

((

long

)number2==

0

)

printf

(

"nnaDavision by zero error!n"

);

else

printf("=%ldn",(long)number1%(long)number2)

;

break

;

default

:

printf

(

"nnaDavision by zero error!n"

);

break

;

取余运算符对float或double类型是没有意义的,因为他们可以表示精确的结果。

只有把%运算符应用于整数类型才 有意义。因此在应用这个运算符前,把操作

数转换为整数。当运算符是%时,将第二个操作数转换为一个整数,所以仅仅检

查第二个操作数是否为0是不够的,还必 须检查number2在转换为long时,值

是否为0.例如0.5不是0,但是转换为整数时就是0。

四、程序的完整代码

#includeint main()

{

double

number1=

0.0

;

double

number2=

0.0

;

char

operation=

0

;

printf

(

"nEnter the calculationn"

);

scanf

(

"%lf%c%lf"

,&number1,&operation,&number2);

switch

(operation)

{

case

'+'

:

printf

(

"=%lfn"

,number1+number2);

break

;

case

'-'

:

printf

(

"=%lfn"

,number1-number2);

break

;

case

'*'

:

printf

(

"=%lfn"

,number1*number2);

break

;

case

'/'

:

if

(number2==

0

)

printf

(

"nnaDavision by zero error!n"

);

else

printf("=%lfn",number1/number2)

;

break

;

case

'%'

:

if

((

long

)number2==

0

)

printf

(

"nnaDavision by zero error!n"

);

else

printf("=%ldn",(long)number1%(long)number2)

;

break

;

default

:

printf

(

"nnaDavision by zero error!n"

);

break

;

}

return

0

;

}

如果有疑问或者想学习更多基础课和项目课的话,欢迎登陆实验楼官

方网站:


本文标签: 输入 检查 操作 项目 程序