c语言打印真值表(国外英文资料)
c语言打印真值表
#包括< stdio. h >
#包括
#包括<
#包括<
#包括<
/ *
(1)“!”表示否定
(2)”和“表示合取
(3)“|”表示析取
(4)“>”表示条件
(5)“=”表示双条件
* /
堆栈结构
{
字符*基;
字符*顶部;
int堆栈大小;
};
结构的房间/建立一个比较大的结构体,用于储存字母,和字母所对应的真值
{
ch;
char值;
}值[ 10 ];
无效的举动(char(* STR)[ 50 ],int的步伐,左边)/横向移动字符串
{
int i;
STR [ 0 ] [左] = A;
对(我=左+ 1;i < strlen(str [ 0 ]);i++)
{
STR [ 0 ] i [ 0 ] [ i +步];
STR [ 1 ] i [ 1 ] [ i +步];
}
STR [ 0 ] i=0;
STR [ 1 ] i=0;
返回;
}
布尔isconnect(ch)
{
如果((= =“!”))| |(CH = =’和‘)| |(CH = =“|”)| |(CH = =“>”)| |(CH = =“=”))
返回true;
其他的
返回false;
}
虚空IsFormula(char(* STR)[ 50 ])/关键函数判断Len > = 3的情况
{
int i,j,k;/ /辅助变量
int左= 0,右= 0;
为(i = 0;i < strlen(str [ 0 ]);i++)
{
如果(STR [ 1 ] = 1)
{
左=我;
}
如果(STR [ 1 ] = 2)
{
右=我;
打破;
}
}
STR [ 1 ] [左] = 0;//用完和之后将其标记为0左右
STR [ 1 ]右] = 0;
左向右;
对于(j=1;j=k;j + +)
{
如果(([左] ] 0!”&(IsConnect(STR [ 0 ] [左+ J-1 ])| | STR [ 0 ] [左] = =”+ J-1(')&因而isalpha(STR [ 0 ] [左+ J + 1 ]))/ / '!”的左边为连接符或者'(',右边一定为一
| |(因而isalpha(STR [ 0 ] [左+ ])&(IsConnect(STR [ 0 ] [左+ J-1 ])| |因而isalpha(STR [ 0 ] [左+ J-1 ])| | STR [ 0 ] [左] = =”+ J-1(')&(IsConnect(STR [ 0 ] [左+ J + 1 ])| | STR [ 0 ] [左+ J + 1 ] = = ')'))/ / A的右边为连接符,或者’!”,或者'(',右边为连接符或者右括号
| |(IsConnect(STR [ 0 ] [左+ ])&因而isalpha(STR [ 0 ] [左+ J-1 ])&(STR [ 0 ] [左+ J + 1 ] = =’!”| |因而isalpha(STR [ 0 ] [ 1 ] +左+ J))))/连接符的左边为,右边为非或者一
继续;
其他的
打破;
}
如果(j = k)
{
移动(STR,k,左);
}
如果(右= = strlen(str [ 0 ])- 1)
返回;
其他的
IsFormula(STR);
}
bool CheckFormula(字符串str1)
{
一个字符[ 2 ] [ 50 ];//定义2行数组,STR [ 0 ] [ 1 ]做标记存放字符串,STR
int l = 0,r = 0;//我记录左括号的个数,
R records the number of right brackets
Int i; / / auxiliary variables
Int len=strlen (str[0]);
Str[0][0]='('; / / go to space, and in the str[0] of the outer parentheses, at len>=2
I=1;
While (*str1 = ='\0')
{
If (*str1 = = '')
{
Str[0][i] = *str1;
I++;
}
Str1++;
}
Str[0][i]=');
Str[0][i+1]='\0';
If (len = = 2) / / if a string is empty, that is (the)
Return false;
Else
For (i=0; i< len; i++) / judge all whether paired brackets, and the '(' Mark 1 '' will be marked as 2)
{
If (str[0][i