current position:Home>About the problem of C language: input 12 + 3 with DEVC + + to get 12.000000. I don't know what's wrong, include & lt; stdio. h>
About the problem of C language: input 12 + 3 with DEVC + + to get 12.000000. I don't know what's wrong, include & lt; stdio. h>
2022-02-02 17:35:22 【CSDN Q & A】
With devc++ Input 12+3# obtain 12.000000 I don't know what's wrong
#include <stdio.h> #include <stdlib.h> #include <string.h> #define NULL 0 #define OK 1#define ERROR -1 #define STACK_INIT_SIZE 100#define STACKINCREMENT 20 /* Define character type stack */ typedef struct{ int stacksize; char *base; char *top; } Stack;/* Define integer stack */ typedef struct{ int stacksize; float *base; float *top; } Stack2;/* ----------------- Global variables --------------- */ Stack OPTR;/* Define the operator stack */Stack2 OPND; /* Define the operand stack */ char expr[255] = ""; /* Store expression string */ char *ptr = expr; int InitStack(Stack *s) // Construct operator stack { s->base=(char *)malloc(STACK_INIT_SIZE*sizeof(char)); if(!s->base) return ERROR; s->top=s->base; s->stacksize=STACK_INIT_SIZE;return OK; } int InitStack2(Stack2 *s) // Construct operand stack { s->base=(float *)malloc(STACK_INIT_SIZE*sizeof(float)); if(!s->base) return ERROR; s->stacksize=STACK_INIT_SIZE; s->top=s->base; return OK; } int In(char ch) // Determine whether the character is an operator , Operator returns 1{ return(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='('||ch==')'||ch=='#'); } int Push(Stack *s,char ch) // Operator stack insert ch For the new stack top element { *s->top=ch; s->top++; return 0; } int Push2(Stack2 *s,float ch)// Operand stack insertion ch For the new stack top element { *s->top=ch; s->top++; return 0; }char Pop(Stack *s) // Delete operator stack s Top element of , use p Return its value { char p;s->top--; p=*s->top; return p;} float Pop2(Stack2 *s)// Delete operand stack s Top element of , use p Return its value { float p;s->top--; p=*s->top; return p;}char GetTop(Stack s)// use p Returns the operator stack s Top element of { char p=*(s.top-1); return p; }float GetTop2(Stack2 s) // use p Returns the operand stack s Top element of { float p=*(s.top-1); return p; }/* Judgment operator priority , Returns the high priority */ char Precede(char c1,char c2) { int i=0,j=0; static char array[49]={'>', '>', '<', '<', '<', '>', '>', '>', '>', '<', '<', '<', '>', '>', '>', '>', '>', '>', '<', '>', '>', '>', '>', '>', '>', '<', '>', '>', '<', '<', '<', '<', '<', '=', '!', '>', '>', '>', '>', '!', '>', '>', '<', '<', '<', '<', '<', '!', '='}; switch(c1) { /* i For the following array The banner of */ case '+' : i=0;break; case '-' : i=1;break; case '*' : i=2;break; case '/' : i=3;break; case '(' : i=4;break; case ')' : i=5;break; case '#' : i=6;break; } switch(c2) { /* j For the following array Vertical standard of */ case '+' : j=0;break; case '-' : j=1;break; case '*' : j=2;break; case '/' : j=3;break; case '(' : j=4;break; case ')' : j=5;break; case '#' : j=6;break; }return (array[7*i+j]); /* Return operator */ } /* Operation function */ float Operate(float a,char op,float b) { switch(op) { case '+' : return (a+b); case '-' : return (a-b); case '*' : return (a*b); case '/' : return (a/b); } return 0;} int num(float n)// Returns the length of the operand { char p[10]; int pl; itoa((int)n,p,10);// Convert integer to string pl=2*strlen(p); return pl;}float EvalExpr()// Main operation functions { char c,theta,x; int n;float m;float a,b; c = *ptr++; while(c!='#'||GetTop(OPTR)!='#') {if(!In(c)) { if(!In(*(ptr-1))) ptr=ptr-1;m=atoi(ptr);// Take the number field in front of the string n=num(m); Push2(&OPND,m); ptr=ptr+n;c=*ptr++;} else switch(Precede(GetTop(OPTR),c)) { case '<': Push(&OPTR,c); c = *ptr++; break; case '=': x=Pop(&OPTR); c = *ptr++; break; case '>': theta=Pop(&OPTR); b=Pop2(&OPND); a=Pop2(&OPND); Push2(&OPND,Operate(a,theta,b));break;} }return GetTop2(OPND); } int main( ) { printf(" Please enter the correct expression to '#' ending :"); do{ gets(expr); }while(!*expr); InitStack(&OPTR); /* Initialize the operator stack */ Push(&OPTR,'#'); /* take # Push into the operator stack */ InitStack2(&OPND); /* Initializes the operand stack */ printf(" The expression result is :%f\n", EvalExpr());getchar();return 0; }
Refer to the answer 1:
printf(" The expression result is :%f\n", EvalExpr());// The output format is %f, Floating point output , The decimal point is reserved by default 6 position
Refer to the answer 2:
copyright notice
author[CSDN Q & A],Please bring the original link to reprint, thank you.
https://en.primo.wiki/2022/02/202202021735201353.html
The sidebar is recommended
- Design a mathutils Java class file
- Design of identity authentication based on Lamport scheme
- How does Simulink simulate the neutral point of permanent magnet synchronous motor (connected to the midpoint of bus capacitance)?
- Excuse me: it is known that 9 of the 300 experimental samples have been wrongly divided. What is the penalty factor C in the SVM model?
- Is there any common Python tutorial that even a fool can understand?
- The pointer of the derived class shows why the value of the pointer data member converted to the base class has changed. Please explain
- Initialization of structure variables, application
- How can the data in the red box be displayed in the black box classification according to the status?
- Position in CSS: after fixed, it will appear in the original position after entering the page, and then flash to the fixed position
- How do the from attribute and to attribute of QML propertyanimation change
guess what you like
-
Want to know what this code means
-
Design a mathutils Java class file
-
KNN algorithm can not come up with the best model selection
-
After deployment, the project automatically reads the files under the login machine disk
-
C # click the button to display the name of the folder on the control
-
visual studio
-
The use of cleanstate
-
I don't understand what this means!!
-
Machine learning Jupiter notebook spam filtering analysis report
-
Run result and error content Print (dict_data ['content '] ['out']) keyerror: 'content, how to solve it?
Random recommended
- Appium code failed to open mobile app
- About the problems of C language 2022 calendar event recording system! (development tool eclipse)
- Restart Ubuntu as soon as VMware starts
- The computer network is normal, but some web pages can't be opened. What should I do
- Why can't you query after adding information
- The reinstallation system has been stuck in "starting windows"
- How did my visual studio code change like this
- Alien project spacecraft collision error
- Opencv play nine palace game
- What library does spider need to add? Why doesn't Anaconda
- Why not exchange? C language pointer
- There is a problem with my SQL statement
- First establish the input data into a binary sort tree, and then find the data. Enter the keyword sequence (63, 90, 70, 55, 67, 42, 98, 83, 10, 45, 58). 1. Establish a binary sort tree according to the order of the entered keywords.
- Why is x output 13 instead of 3
- Python code, interface problems
- Python basic problems, read and write files, and solve them in a basic way
- CSDN article reading statistics algorithm logic
- Swift5 dynamically obtain the height of the navigation bar and status bar
- A small problem about string []
- Why is it not displayed in graphicsview
- MATLAB image hiding problem, please help
- Python fastobjectlistview cannot operate on setitem * *
- What should I fill in at the crosswalk
- College C language programming c + + Programming
- Appium + Python + Android JDK failed to connect to the mobile phone to run app
- I think the activity can be started in the background above Android Q. how to realize it
- Use the predict type parameter to define a method for filtering books
- Problems related to the use of C PropertyGrid
- How to set the gain & lt^ u
- Click one H5 item in the app to jump to another H5 item
- Find a solution to the error of this r code
- Python will test Put the PY file in a python package (such as D: \ TT), import the package test in test2, and output the value of the variable data.
- When using PPO strategy to train reinforcement learning model, how to evaluate the quality of the model and judge whether it converges?
- Calculate the number of uppercase letters, lowercase letters and numbers in any string
- If you work from home, the same operation will fail
- Content encapsulation under three-level classification of Java
- The idea switches branches and the project directory structure disappears
- 1. Customize a - function to realize the following functions: input the accuracy e, and use the following formula to calculate the approximate value of cosx until the absolute value of the last - item is less than E. It is required to define and call the
- Find its Huffman code? Give the coding process and coding results (please give the large probability as 1 and the small probability as 0) Calculate the average code length. Calculate the compression ratio before and after coding
- C language and documents to solve students' performance problems