用C语言编程实现一个简单的四则运算计算器

用C语言编程实现一个简单的四则运算计算器,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

编程:编程实现一个简单的四则运算计算器:从键盘输入一个四则运算表达式(没有空格和括号),遇等号"="说明输入结束,输出结果。

假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算(即:2+3*5先计算2+3,再计算5*5)。

示例:括号内是说明

输入

1+2*10-10/2=

输出

10

解析:

#include <stdio.h>

函数,读数 *** 作数

int getNextNum()

{

int ret

scanf("%d",&ret)

return ret

}

函数,读运算符

char getOpt()

{

return getchar()

}

函数,计算

int caculate(int op1 , int op2 ,char opt)

{

if(opt=='+')return op1+op2

if(opt=='-')return op1-op2

if(opt=='*')return op1*op2

if(opt=='/')return op1/op2

return 0

}

int main()

{

int op1,op2

char opt

计算结果放在第一个 *** 作数

op1 = getNextNum()

while(1)

{

opt = getOpt()

if ( opt == '=' ) break

op2 = getNextNum()

op1 = caculate(op1,op2,opt)

}

printf("%d\n",op1)

}

return 0

}

编C语言程序“编程计算1到50中是7的倍数数值之和”,使用for循环语句。

#include <stdio.h>int main(){int i,s = 1 for(i = 1 i <= 50++i){if( i % 7 == 0)s += i }printf("%d\n",s) return 0}

Java如何编程计算1至50中是7的倍数的数值之和。用while循环编辑

public class SumTest {public static void main(String[] args) {int i = 1, sum = 0 while (i <= 50) {if (i % 7 == 0) {sum += i }i++ }System.out.println(sum) }}

sum+=i等同于 sum=sum+i

如果 i 除于 7余数为0,则表示i 是7的倍数,就把 i 加进去。

java里 编程计算1至50中是7的倍数的数值之和

public class Class5 {

public static void main(String[] args) {主方法入口

int sum=0定义一个变量来将所有能被7整除的数字相加

for(int i=1i<=50i++) {循环

if(i%7==0) {判断1到50内能被7整除

sum+=i将所有能被7整除的相加

}

}

System.out.println("能被7整除的"+sum)输出结果

}

}

要是还有什么不懂得,可以继续提问,

用java如何编程计算1至50中7的倍数的数值之和,用while语句

int calculateSum() {

int sum =0, i=1

while ( i<=50){

if(i%7 ==0)

sum += i

i++

}

return sum

}

编程计算1至50中是7的倍数的数值之和。使用“%”运算符判断7的倍数

#include "iostream.h"

void main()

{

int nian,yue,ri

cout<<"请输入年月日:"<<endl

cin>>nian>>yue>>ri

if(nian<1000||nian>9999)

if(yue>12)

if(ri>31)

int a,b

if(nian%4==0)

{

switch(yue)

{

case 1:a=0break

case 2:a=31break

case 3:a=31+29break

case 4:a=31+29+31break

case 5:a=31+29+31+30break

case 6:a=31+29+31+30+31break

case 7:a=31+29+31+30+31+30break

case 8:a=31+29+31+30+31+30+31break

case 9:a=31+29+31+30+31+30+31+31break

case 10:a=31+29+31+30+31+30+31+31+30break

case 11:a=31+29+31+30+31+30+31+31+30+31break

case 12:a=31+29+31+30+31+30+31+31+30+31+30break

}

b=a+ri

cout<<"本年是闰年,这天是本年的第"<<b<<"天。"<<endl

}

else

{

switch(yue)

{

case 1:a=0break

case 2:a=31break

case 3:a=31+28break

case 4:a=31+28+31break

case 5:a=31+28+31+30break

case 6:a=31+28+31+30+31break

case 7:a=31+28+31+30+31+30break

case 8:a=31+28+31+30+31+30+31break

case 9:a=31+28+31+30+31+30+31+31break

case 10:a=31+28+31+30+31+30+31+31+30break

case 11:a=31+28+31+30+31+30+31+31+30+31break

case 12:a=31+28+31+30+31+30+31+31+30+31+30break

}

b=a+ri

cout<<"本年是平年,这天是本年的第"<<b<<"天。"<<endl

}

}

这是第一题答案

这是C++写的。你把头文件换成C语言的。

CIN是出入,COUT是输出,你换成对应的就行了,PRINTF好像是。。忘记了。已经调试成功,

java里怎么编程计算1至50中是7的倍数的数值之和?

public class ReplaceNumber

{

public static void main ( String[] args )

{

int sum = 0

int n = 1

do

{

if (n % 7 == 0)

{

sum += n

}

n++

} while (n <50)

System.out.println (sum)

}

}

编城计算1至50中是7的倍数的数值之和

#include<stdio.h>

#include<math.H>

main()

{int a=0,i

for(i=1i<=50i++)

if(i%7==0)a=a+i

printf("%d\n",a)}

用C语言 编程,计算1至50是7的倍数的数值之和,用for语句尽兴实现。输出。。怎么做

#include<stdio.h>

int main(void)

{

int i,a

for(i=1i<=50i++)

{

a=i%7

if(a==0)

printf("%d ")

}

return 0

}

这里用到了被一个数除然后取余数,记号是%, 如果余数是零,则能被这个数整除,如果不能(即余数为1,2,3,4,5,6)则不能被整除。

java编程计算 1至50中是7的倍数的数值之和?不知道哪里出错,进入死循环了

package .jbit.output

public class shuzhi {

public static void main(String[]args){

int i=1

int sum=0

while(i<=50){

if(i%7==0){

sum=sum+i

}

i++把这个语句放在if外面就可以了

System.out.println("能被7整除的数相加的和为:"+sum)

}

}

}

这种运算比较麻烦,不过4种运算符号优先级相同应该简单写,我这里有个算法,能进行简单的四则运算,delphi的,供参考

Function Math_Evaluate(S0:string):Extended

Function Evaluate(S0:String):ExtendedForward

Procedure CleanUp(var s0:string)

Var

I:integer

Begin

S0:=LowerCase(s0)

I:=Pos(' ',s0)

While I>0 Do

Begin

Delete(S0,I,1)

I:=Pos(' ',S0)

End

End

Function GetFirstOpp(Tot:IntegerS0:String):Integer

Const

Sopps:String=('+-*/^')

Var

I:Integer

Begin

If Tot=0 Then Tot:=Length(S0)

For I:=1 To 5 Do

Begin

Result:=Pos(Sopps[i],S0)

If ((I<3) And (Result>0)) Then

If ((Result=1) Or (Pos(S0[Result-1],Sopps)>0)) Then

Result:=0

If Result>0 Then

If Result<Tot Then

Exit

End

If Result>Tot Then

Result:=0

End

Function SpecialF(P1:IntegerS0:String):Extended

Var

Operstr:String

Arg:Extended

Begin

Result:=0

Operstr:=Copy(S0,1,P1-1)

If S0[Length(S0)]<>')' Then

Exit

Operstr:=LowerCase(Operstr)

Arg:=Evaluate(Copy(S0,P1+1,Length(S0)-P1-1))

if Operstr ='sin' Then

Result:=Sin(Arg)

Else if Operstr ='cos' Then

Result:=Cos(Arg)

Else if Operstr ='tan' Then

Result:=Sin(Arg)/Cos(Arg)

Else if Operstr ='arctan' Then

Result:=Arctan(Arg)

Else if Operstr ='log' Then

Result:=Ln(Arg)/Ln(10)

Else if Operstr ='ln' Then

Result:=Ln(Arg)

Else if Operstr ='exp' Then

Result:=Exp(Arg)

Else if Operstr ='sqrt' Then

Result:=Sqrt(Arg)

{enter additional functions here}

Else Exit

End

Function GetValue(S0:String):Extended

Begin

Result:=0

If Length(S0)<1 Then Exit

If Length(S0)=1 Then

Result:=StrToFloat(S0)

Else

Case s0[1] Of

'x':Result:=1

'y':Result:=1

'z':Result:=1

Else Result:=StrToFloat(S0)

End

End

Procedure MatchBracket(Var I:IntegerS0:String)

Var

J,Len:Integer

Begin

J:=1

Len:=Length(S0)

Repeat Inc(I)

If I>Len Then Exit

If S0[I]='(' Then Inc(J)

If S0[I]=')' Then Dec(J)

If J<0 Then Exit

Until J=0

End

Function Calculate(P1:IntegerS0:String):Extended

Var

V1,V2:Extended

Begin

Result:=0

V1:=Evaluate(Copy(S0,1,P1-1))

V2:=Evaluate(Copy(S0,P1+1,Length(s0)-P1))

Case S0[P1] Of

'+': Result:=V1+V2

'-': Result:=V1-V2

'/': Result:=V1/V2

'*': Result:=V1*V2

'^': Result:=Exp(V2*Ln(V1))

Else Exit

End

End

Function Evaluate(S0:string):Extended

Var

P1,P2,Q1:Integer

Begin

P1:=Pos('(',S0)

P2:=P1

If P2>0 Then

MatchBracket(P2,S0)

If P1=1 Then

Begin

If P2=Length(S0) Then

Begin

Delete(S0,P2,1)

Delete(S0,1,1)

Result:=Evaluate(S0)

End Else

Result:=Calculate(P2+1,S0)

Exit

End

Q1:=GetFirstOpp(P1,S0)

If (P1+Q1=0) Then

Begin

Result:=GetValue(S0)

Exit

End

If Q1<>0 Then

Result:=Calculate(Q1,S0)

Else If Length(S0)>P2 Then

Result:=Calculate(P2+1,S0)

Else

Result:=SpecialF(P1,S0)

End

Begin

Try

CleanUp(S0)

Result:=Evaluate(S0)

Except

Result:=0

End

End


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12161578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存