c语言 数学式子

c语言 数学式子,第1张

注意下除法,我定义的都是整数,所以除法计算要输入舍去小数点的数字

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

void main()

{

int i,j,t,sum=0

char a[4]={'+','-','*','/'},b[5]

long int re,r

srand((int)time(NULL))

while(1)

{

i=rand()%10//可以自己定义数据的范围

j=rand()%10

t=rand()%4

printf("%d%c%d=",i,a[t],j)

scanf("%d",&re)

switch(t)

{

case 0: r=i+jbreak

case 1: r=i-jbreak

case 2: r=i*jbreak

case 3: r=i*jbreak

}

//printf("%d %d",r,re)

if(r==re)

sum=sum+1

printf("是否做下一题\n")

scanf("%s",b)

if(strcmp(b,"no")==0)

break

}

printf("你的成绩是:%d\n",sum)

}

首先你得定义一个数b,如果是整形,可以用int

b;然后执行赋值 *** 作。而lg5+|b|中用到了数学计算,所以头文件中要包含math.h。

log10(5)+abs(b)

前者为double型后者为int型,在c语言中结果会自动转换,即由低到高转化,最后的结果是double型,int转为double

这个设计到优先级 要栈处理

下面这个程序 输入0结束

输入其它的+-*/运算式 输出结果

但是字符与字符间有空格 不然要出错

比如输入1 + 2

或者 + 2 * 5 - 7 / 11

注意有空格

#include <iostream>

#include <stack>

#include <string>

#include <string.h>

using namespace std

int main(){

char ch[210]

int len,i,j

double n,m,k

while (cin.getline(ch,210))

{

len = strlen(ch)

if(len==1&&'0' == ch[0])break

stack<double>s1

stack<char>s2

i=0,k=0

while (i<len)

{

if (' '== ch[i]){

i++

continue

}

else if ('0'<=ch[i] &&'9'>=ch[i])

{

k = 0

k = k*10 + ch[i]-'0'

i++

while ('0'<=ch[i] &&'9'>=ch[i]&&i<len)

{

k = k*10 + ch[i]-'0'

i++

}

s1.push(k)

k =0

}

else

{

if ('*'==ch[i] || '/'==ch[i])

{

j =i

n = s1.top(),s1.pop()

i++

i++

k = 0

while ('0'<=ch[i] &&'9'>=ch[i]&&i<len)

{

k = k*10 + ch[i]-'0'

i++

}

if ('*'==ch[j])

{

k = k*n

}else{

k = n/k

}

s1.push(k)

}

else if('+'==ch[i] || '-'==ch[i])

{

s2.push(ch[i])

i++

}

}

}

char str, str2

while (!s2.empty())

{

str = s2.top()

s2.pop()

k = s1.top(),s1.pop()

if ('+' == str)

{

n = s1.top()s1.pop()

if (!s2.empty())

{

str2 = s2.top()

if ('-' == str2)

{

k = n - k

}else{

k = k + n

}

}else

k = k + n

// cout<<k<<endl

s1.push(k)

}else{

n = s1.top()s1.pop()

if (!s2.empty())

{

str2 = s2.top()

if ('-' == str2)

{

k = k + n

}else{

k = n - k

}

}else

k = n - k

s1.push(k)

}

}

printf("%0.2lf\n",s1.top())s1.pop()

}

return 0

}


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

原文地址:https://54852.com/yw/11000436.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存