C语言 四则运算程序 高手帮帮忙!!!!

C语言 四则运算程序 高手帮帮忙!!!!,第1张

#include<stdioh>

#include<stdlibh>

#include<timeh>

#include<stringh>

int scan()

{

char s[100];

int i,t,z=0;

do

{

z=0;

gets(s);

for(i=0;s[i]!='\0';i++)

if(s[i]<'0' || s[i]>'9') break;

if(i>=strlen(s))

for(t=0;s[t]!='\0';t++)

z=z10+((int)s[t]-48);

else

printf("您的输入有误,请重新输入");

}

while(i<strlen(s));

return(z);

}

int x=1,y=1,choice=0,sum=0,right=0,z=0,answer;

float precent;

char fuhao;

void suiji()

{

srand(time(NULL));

x=rand()%100+1;

y=rand()%100+1;

}

void choose()

{

int yunsuan(int,int,int);

if(sum==0) precent=00;

else precent=(float)right/sum;

printf("\n如需进行加减乘除运算测试,请分别输入1、2、3、4\n");

printf("如需退出请输入5\n");

choice=scan();

switch(choice)

{

case 1:printf("欢迎来到加法运算测试系统,如需退出请输入9999\n");fuhao='+';break;

case 2:printf("欢迎来到减法运算测试系统,如需退出请输入9999\n");fuhao='-';break;

case 3:printf("欢迎来到乘法运算测试系统,如需退出请输入9999\n");fuhao='';break;

case 4:printf("欢迎来到除法运算测试系统,如需退出请输入9999\n");fuhao='/';break;

case 5:printf("本次测试愉快,欢迎下次再来测试\n");

printf("本次共做%d道题,其中%d道正确,正确率为%f\n",sum,right,precent);

break;

default:printf("您的输入有误,请重新输入\n");choose();

}

}

int ans(int x,int y,int choice)

{

switch(choice)

{

case 1:z=x+y;break;

case 2:z=x-y;break;

case 3:z=xy;break;

case 4:z=x/y;break;

}

return(z);

}

void yunsuan()

{

suiji();

printf("%d%c%d=",x,fuhao,y);

z=ans(x,y,choice);

answer=scan();

if(z==answer)

{

printf("正确\n");

right++;sum++;

yunsuan();

}

else if(answer==9999) choose();

else

{

printf("不正确, 正确答案为%5d\n",z);

sum++;

yunsuan();

}

}

void main()

{

printf("欢迎来到四则运算测试系统\n");

choose();

while(choice!=5)

yunsuan();

}

#include<iostream>

using namespace std;

main()

{ double x,y;

cout<<"请输入一个值X:\n"<<"x=";

cin>>x;

if(x<7) y=xx+1;

else if(x==7) y=10;

else if(x>7&&x<=12) y=2x+1;

else y=xxx-1;

cout<<"y="<<y<<endl;

}

/stackh/

typedef char flag;

#define NEW_STACK(STACK_NAME,TYPE) \

struct STACK_NAME \

{                                   \

 TYPEb;TYPEh;int size;            \

                                       \

flag init(STACK_NAME in)          \

{                                      \

 if(!(in->b=(TYPE)malloc(10sizeof(TYPE))))return 0;    \

 in->size=10sizeof(TYPE);             \

 in->h=in->b;  \

 return 1;  \

                 \

}                    \

flag isnull(STACK_NAMEin)   \

 {                  \

 if(in->b==in->h)    \

  return 1;   \

 else             \

  return 0;     \

 }                   \

flag pop(STACK_NAMEin,TYPE a)    \

 {                \

 if(isnull(in))return 0;   \

 a=(--in->h);    \

 return 1;       \

                 \

 }       \

flag push(STACK_NAMEin,TYPE a)   \

 {      \

 if(in->h-in->b>=in->size)    \

 {                \

  if(!(in->b=(TYPE)realloc(in->b,in->size+10sizeof(TYPE))))return 0; \

  in->h=in->b+in->size;   \

  in->size+=10sizeof(TYPE);   \

 }    \

 (in->h)=a;   \

 in->h++;    \

 return 1;   \

 }  \

\

TYPE gettop(STACK_NAMEin)  \

  {   \

    TYPEa=in->h-1;   \

 return a;   \

  }  \

}; 

/源文件/

include<stdioh>

#include<stdlibh>

#include<stringh>

#include<mathh>

#include"stackh"

#define isnum(n) ((n>='0'&&n<='9')||n=='')

NEW_STACK(csta,char)

NEW_STACK(dsta,double)

/precede block/

int ctoiex(char a)

{

 int b;

 if (a==')') b=1;

 if(a=='+'||a=='-')b=2;

 if(a==''||a=='/')b=3;

 if(a=='(')b=4;

 if(a=='#')b=0;

 return b;

}

char precede(char a,char b)

{

 

 int a1=ctoiex(a);

 int b1=ctoiex(b);

 if((a1==4&&b1==1)||((a1==0)&&(b1==0)))return '=';

 if(a1>=b1) return '>';

 else return '<';

}

double atonum(chara,int len)

{

   int inum=0;

   double dnum=0;

   char f=1;

   int j=1;

   for (int i=0;i<len;i++)

   {

   

    if(a[i]=='')

    {

     

     f=0;

     continue;

    }

    if(f)inum=inum10+(a[i]-'0');

    else dnum=dnum+(a[i]-'0')pow(01,j++);

   }

    

return inum+dnum;

}

double operate(double a,double b,char op)

{

 double c;

 switch(op)

 {

 case '+':c=a+b;break;

 case '-':c=a-b;break;

 case '':c=ab;break;

 case '/':c=a/b;break;

 }

 return c;

}

void insert(chara)

{

 int len=strlen(a);

 a[len]='#';

 a[len+1]=0;

}

int main()

{

 csta optr;dsta opnd;

 optrinit(&optr);opndinit(&opnd);

 optrpush(&optr,'#');

 char s[200];

 char b[20];

 char c;

 char tmp1='1';

 double op1,op2;

 char f=0;

 printf("请输入公式: ");

 scanf("%s",s);

 insert(s);

 for(int i=0,j=0;tmp1!='#'||optrgettop(&optr)!='#';)

 {

  if(isnum(tmp1))

  {

   b[j++]=s[i++];

   tmp1=s[i];

  }

  else

  {

   if(f!='>')

   {

   opndpush(&opnd,atonum(b,j));

   j=0;

   }

   switch(f=precede(optrgettop(&optr),tmp1))

   {

   case '<': 

    optrpush(&optr,tmp1);tmp1=s[++i];break;

   case '=':

    optrpop(&optr,&c);tmp1=s[++i];break;

   case '>':

    optrpop(&optr,&c);

    opndpop(&opnd,&op1);

    opndpop(&opnd,&op2);

    opndpush(&opnd,operate(op2,op1,c));

    break;

   }

  }

  

  

 }

     printf("\n%f\n",opndgettop(&opnd));

 return 0;

}

以上就是关于C语言 四则运算程序 高手帮帮忙!!!!全部的内容,包括:C语言 四则运算程序 高手帮帮忙!!!!、C语言作业2.用程序实现输入一个x值,计算分段函数的值。、求C++大神帮忙编简单的四则运算练习题程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9814615.html

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

发表评论

登录后才能评论

评论列表(0条)

保存