问题描述:
编程:编程实现一个简单的四则运算计算器:从键盘输入一个四则运算表达式(没有空格和括号),遇等号"="说明输入结束,输出结果。
假设计算器只能进行加减乘除运算,运算数和结果都是整数,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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)