int i = 0;
while (fresultStr[i]!='.')
{
i++;
}
if (fresultStr[i+1] == '0')
{
return true;
}
else
{
return false;
}
}
}
void tenToSixteen(char* sixteen,int n)
{
int shang = 0;
int yushu = 0;
int value = 1;
int i = 0;
while(value <= n)
{
value = value*16;
yushu = n % value;
shang = yushu * 16 /value;
if (shang >=0 && shang <=9)
{
sixteen[i] = (char)(shang+48);
}
else
{
sixteen[i] =(char)(shang+87);
}
i++;
}
char str[g_iconstArrayMax] = "0x";
strrev(sixteen);
strcat(str,sixteen);
strcpy(sixteen,str);
}
//判断结果是不是int型
bool isInte(float fresult)
{
char fresultStr[g_iconstArrayMax];
sprintf(fresultStr,"%f",fresult);
if (NULL == fresultStr)
{
return false;
}
else
{
int len = strlen(fresultStr);
int i = 0;
while (fresultStr[i]!='.')
{
i++;
}
if (fresultStr[i+1] == '0')
{
return true;
}
else
{
return false;
}
}
}另外关于输入是否合法的检查,两个函数实现一个进行具体的判断,另一个判断括号是否匹配,同样利用栈操作实现:
[cpp]
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))
{