马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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】【小声哔哔】
|