return false;
}
//检测是否出现连续的运算符或者没有运算法
int num = 0;
int k = 0;
for (int j = 0; j< len; j++)
{
if ((str[j] == '+')||(str[j] == '-')||(str[j] == '*')
||(str[j] == '/'))
{
num++;
k = j;
if ((str[k-1] == '+')||(str[k-1] == '-')||(str[k-1] == '*')
||(str[k-1] == '/')||(str[k+1] == '+')||(str[k+1] == '-')||(str[k+1] == '*')
||(str[k+1] == '/'))
{
printf("出现连续运算符!\n");
return false;
}
else if ((str[j] == '/')&&(str[k+1] == '0'))
{
printf("被除数不能为0!\n");
return false;
}
else if (str[k+1] == NULL)
{
printf("输入不完整!\n");
return false;
}
}
}
if (num == 0)
{
printf("无运算符!\n");
return false;
}
return true;
}
}
bool IsMatch(char* str)
{
//初始化栈
stack
//initStack(s);
int len = strlen(str);
char pp[g_iconstArrayMax];
char temp;
int k = 0;
for (int i= 0; i
switch(str[i])
{
case '(':
s.push(str[i]);
break;
case')':
{
temp = s.pop();
if (temp!='(')
{
return 0;
}
else
{
pp[k] = temp;
k++;
}
break;
}
default:
break;
}
}
pp[k] = '\0';
// 判断栈是否为空
if (s.isEmpty())
{
return true;
}
else
{
return false;
}
}
//检测是否合法
bool isRightInput(char* str)
{
//是否输入字符非法
if (NULL == str)
{
return false;
}
else
{
int len = strlen(str);
for (int i = 0; i
if (str[i]< '0')
{
if ((str[i] != '+')&&(str[i] != '-')&&(str[i] != '*')
&&(str[i] != '/')&&(str[i] != '.')&&(str[i] != '(')
&&(str[i] != ')'))
{
printf("输入非法字符!\n");
return false;
}
}
else if ( str[i]> '9')
{
if ((str[i] < 'a'))
{
printf("输入非法字符!\n");
return false;
}
else if ((str[i] > 'f')&&(str[i] != 'x'))
{
printf("输入非法字符!\n");
return false;
}
else if(str[i] == 'x')
{
if (str[i-1] != '0')
{
printf("输入十六进制非法,请以0x开头!\n");
return false;
}
}
else
{
if (str[i-1]!='x')
{
printf("输入非法字符!\n");
return false;
}
}
}
}
//检测括号匹配
if (!IsMatch(str))
{
printf("括号不匹配!\n");
return false;
}
//检测是否出现连续的运算符或者没有运算法
int num = 0;
int k = 0;
for (int j = 0; j< len; j++)
{
if ((str[j] == '+')||(str[j] == '-')||(str[j] == '*')
||(str[j] == '/'))
{
num++;
k = j;
if ((str[k-1] == '+')||(str[k-1] == '-')||(str[k-1] == '*')
||(str[k-1] == '/')||(str[k+1] == '+')||(str[k+1] == '-')||(str[k+1] == '*')
||(str[k+1] == '/'))
{
printf("出现连续运算符!\n");
return false;
}
else if ((str[j] == '/')&&(str[k+1] == '0'))
{
printf("被除数不能为0!\n");
return false;
}
else if (str[k+1] == NULL)
{
printf("输入不完整!\n");
return false;
}
}
}
if (num == 0)
{
printf("无运算符!\n");
return false;
}
return true;
}
}
实现结果如下: