马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 划句顾 于 2021-11-22 19:17 编辑
关于0x3f3f3f3f
代码如下:
头文件和代码:- /*
- *author:LaoGu
- *time :2021/11/15
- *fuction:计算值
- */
- #include<iostream>
- #include<string.h> //可以计算字符串大小
- #include<stdlib.h> //可以使用malloc()函数
- #include<ctype.h> //有isdigit()函数
- using namespace std;
- #define MAX 0x3f3f3f3f //无穷大常量
复制代码
定义结构体:- //定义结点结构体
- typedef struct TNode{
- int flag; // 1为符号,0为数字
- int data; //存储数字
- int ch ; //存储符号
- struct TNode *lchild;
- struct TNode *rchild;
- }TNode;
复制代码
加减运算:- //四则运算 " +、—、*、/ "
- int cal(struct TNode *root){
- if(root->flag==1){
- switch(root->ch){
- case '+':
- {
- return cal(root->lchild)+cal(root->rchild);
- break;
- }
- case '-':
- {
- return cal(root->lchild)-cal(root->rchild);
- break;
- }
- case '*':
- {
- return cal(root->lchild)*cal(root->rchild);
- break;
- }
- case '/':{
- return cal(root->lchild)/cal(root->rchild);
- break;
- }
- }
- }
- return root->data;
- }
复制代码
主函数:- //主函数
- int main(int argc,char *argv[]) //注:*argv[] == **argv 都是指 指向指针的指针
- {
- char a[200];
- int i;
- cout<<"请输入要计算的表达式的数量"<<endl;
- cin>>i;
- for(int j=0;j<i;j++)
- {
- cout<<"请输入一个表达式:";
- scanf("%s",a);
- //给节点分配空间
- struct TNode *b = (struct TNode*)malloc(sizeof(struct TNode*)) ;
- b = buildTree(a,0,strlen(a)-1); // 0可以换成其他的值x,可以计算从第x开始的值
- printf("表达式【%s】的结果是%d\n",a,cal(b));
- cout<<endl;
- }
- return 0;
- }
复制代码
如果想要一直计算不同的表达式,可以将主函数改为这样:
- //主函数
- int main(int argc,char *argv[]) //注:*argv[] == **argv 都是指 指向指针的指针
- {
- char a[200];
- while(1)
- {
- cout<<"请输入一个表达式:";
- scanf("%s",a);
- //给节点分配空间
- struct TNode *b = (struct TNode*)malloc(sizeof(struct TNode*)) ;
- b = buildTree(a,0,strlen(a)-1); // 0可以换成其他的值x,可以计算从第x开始的值
- printf("表达式【%s】的结果是%d\n",a,cal(b));
- cout<<endl;
- }
- return 0;
- }
复制代码
运算结果:
想先算啥,必须得加括号,计算机并不会知道你要先哪个。 ,不然会和我上面第二个结果一样,只返回一个value值。 giao!!!
而int main(int argc,char **argv)我也是第一次昨晚第一次看到,详细了解可点击argv,argc
或者是这个 点我
数据结构作业真容易【bushi】【小声哔哔】
|