#include <stdlib.h>
#include <time.h>
#include<windows.h>
/*
说明: 产生伤害结果可以有用户确定,公式也是可以自己写的,
在这里我给你展示一下.
(如果有其他问题,可以找群主C/C++ 8群 491994603)
*/
#define LL 100 //人物力量
#define SH 530 //人物伤害
int main()
{
//构造伤害公式 ,S=力量*10+570 -->每点力量造成10点伤害
int s //产生伤害值
//构造暴击因子 ,差生暴击原伤害的两倍
srand((unsigned int)time(NULL))
while(1)
{
int x=rand()%2
s= LL *10+SH
if(x==2)
prinf("差生暴击伤害:%d",2*s)
if(x==1)
prinf("差生伤害:%d",s)
Sleep(3000)
}
system("pause")
return 0
}
#include<stdio.h>typedef struct
{float a[30]
int top
}shuju
typedef struct
{char b[30]
int futop
}fuhao
void initstack(shuju *s)
{s->top=-1
}
void initstackk(fuhao *s)
{
s->futop=-1
}
int youxianji(char n) /*符号优先级比较*/
{
switch(n)
{case '#': return 0
case '+': return 1
case '-': return 1
case '*': return 2
case '/': return 2
}
}
int shujujinzhan(shuju *s,float x) /*数据进栈*/
{
if(s->top==29)
return (false)
s->top++
s->a[s->top]=x
return(true)
}
char fuhaojinzhan(fuhao *l,char y) /*运算符进栈*/
{
if (l->futop==29)
return (false)
l->futop++
y=l->b[l->futop]
return y
}
float shujuchuzhan(shuju *s,float *x) /*数据出栈*/
{
if(s->top==-1)
return (false)
else
{
*x=s->a[s->top]
s->top--
return *x
}
}
int fuhaochuzhan(fuhao *s,char *x) /*运算符出栈*/
{
if(s->futop==-1)
return (false)
else
{
*x=s->b[s->futop]
s->futop--
return(true)
}
}
float suzi(char i) /*数据组成*/
{ float z, j=0
z=(float)(i-'0')
j=j*10+z
return j
}
float jisuan(float a,char b,float c) /*计算*/
{ float s
switch(b)
{ case'+': s=float(a+b)break
case'-': s=float(a-b)break
case'*': s=float(a*b)break
case'/': s=float(a/b)break
}
return s
}
int pangduanyunsuanfu(char i) /*判断运算符还是数据*/
{
if (i=='+'||i=='-'||i=='*'||i=='/')
return 1
else
return 0
}
void main()
{ char strink[60],k
int i,n,m
int a=0,j
float z,s,h1,h2
shuju q
fuhao p
initstack(&q)
initstackk(&p)
fuhaojinzhan(&p,'#')/*#进栈做栈底元素*/
printf("请输入计算公式\n")
gets(strink)
for (i=0i<60i++)
{ if (strink[i]=='\0') /*判断字符串是否为空*/
break
else
{j=pangduanyunsuanfu(strink[i])/*判断是运算符还是数据*/
if (j==1)
{ a=i++
n=youxianji(strink[i])
m=youxianji(p.b[p.futop])
if (n-m>0) /*比较运算符的优先级*/
fuhaojinzhan(&p,strink[i])/*运算符进符号栈*/
else
{ k=fuhaochuzhan(&p,&k)
h1=shujuchuzhan(&q,&h1)
h2=shujuchuzhan(&q,&h2)
s=jisuan(h1,k,h2)/*出栈的两个元素与对应的运算符的计算*/
shujujinzhan(&q,s)/*将计算的值回进数据栈中*/
}
}
else
{
z=suzi(strink[i])/*对数据进行计算,*/
if (a!=i)
{ z=0
shujujinzhan(&q,z)} /*把得到相应的数据进栈*/
a=i++
}
}
}
printf("%d",q.a[0])/*输出数据栈的最后一个元素,就是公式对应的值*/
}
百度文库VIP已帮您省0元现在恢复最低仅需0.3元/天
立即续费
c语言数学计算公式
#include<stdio.h>
typedef struct
{float a[30]
int top
}shuju
typedef struct
{char b[30]
int futop
}fuhao
void initstack(shuju *s)
第 1 页
{s->top=-1
}
void initstackk(fuhao *s)
{
s->futop=-1
}
int youxianji(char n) /*符号优先级比较*/
{
switch(n)
{case '#': return 0