1、i+) /运用循环输入字符串,按换行键结束 scanf(%c%cai,&z); m+; /记录字符串的长度 z=f /给z赋值,以便写个循环运用i+) /输入第二个字符串bi,& n+; x=m+n; /算出字符串的总长 for(i=m;ix;i+) /将字符串b接在字符串a的后面 ai=by+;(m+n-1);i+) /将相邻的字符串删去 for(j=i+1;jj+) if(ai=aj) for(k=j;kk+) ak=ak+1; x-; j-; printf(集合的并集为: for(i=0;i+) /输出合并后的字符串 printf(%4c,ai); if(d=2)i+) /输入两个字符串
2、zi+)m;i+) /找出数组a与数组b中相同的元素存放于数组c中 for(j=0;n; if(ai=bj) cx=ai; x+;集合的交集为:x+1;i+) /输出交集,ci); if(d=3) /求集合的差集i+) /输入字符串 scanf( m+; n+;i+) /将a中存在b中不存在的字符删去 for(k=i; i-; m-; 集合a对b的差集为:i+) /输出差集 if(d=4) /求集合的补集i+) /b是a的子集,将a中b的元素全部删去 if(bi=aj) for(k=j; ak=ak+1; j-; m-;集合b关于a 的补集为:,ai ); if(d=5) /求两集合的对称差i
3、+) /将a,b中相同的元素删去,剩余的链接起来,输出 for(x=i;xx+) ax=ax+1; for(y=j;yy+) by =by+1; i-; n-; for(z=m;zm+n;z+) /将删除后的字符串连接起来 az=bk+;集合a,b的对称差为:i+) /输出a,b的对称差,a i);求命题公式的真值表、主范式:#include stdio.hstdlib.hstring.hconio.hmath.h#define N 50 void panduan(int bN,int f);/赋值函数int tkh (char szN, char ccuN, int icuN, int h0
4、);/分级运算函数int fkh (char szN, char ccuN, int icuN, int h0);/主运算函数main() int i1,i2,d=1,icuN,kh=0,jg,j=0,h0;/icuN用于存放变量值,kh括号计数,jg存放结果 int bj=0,hqN,h=0,x=0,xqN;/hqN存放合取结果xqN存放析取结果 char szN,ccuN,sz0N,s;/szN存放式子,ccuN存放变量,sz0N也是用于存放式子 hq0=-1; xq0=-1;*n/标语* *n* 欢迎进入逻辑运算软件 *n* (可运算真值表,主范式,支持括号) *n* 用!表示非 *n*
5、 用&表示与 *n* 用|表示或 *n* 用表示蕴含 *n* 用表示等值 *n*nn请输入一个合法的命题公式:/输入式子 gets(sz);/读取式子 strcpy(sz0,sz);/复制式子 for(i1=0;i1a & szi1AZ) for(i2=0;i20)/判断并添加符号/M(%d),hqi1); /输出主合取范式 if(xq0=-1)/不存在析取范式时n该命题公式不存在主析取范式。nn该命题公式的主析取范式:/m(%d),xqi1);/输出主析取范式n欢迎下次再次使用!n /结束 getch();void panduan(int bN,int f) / 二进制赋值。 int i;
6、i=f; if(bf=0)/加1 bf=1; else/进位 bf=0; panduan(b,-i);int tkh (char szN,char ccuN,int icuN,int h0)/分级运算函数 int i,j,h,s,kh=0,wzN,a; char xs1N,ckhN; /xs1用来保存括号内的字符 ckh用来保存括号。 s=strlen(sz); for(i=0;s; if(szi= | szi=)/判断括号 wzkh=i;/存储括号位置 ckhkh=szi;/存储括号类型 if(kh=0) return fkh(sz,ccu,icu,h0);/如果无括号,直接运行kh; if
7、(ckhi=)/找到第一个) break; for(j=wzi-1+1,h=0;wzi;j+,h+) /存储最内级括号中的内容 xs1h=szj; xs1h=0 a=fkh(xs1,ccu,icu,h0);/运行最内级括号的式子,得到结果 if(a=1)/判断并存储结果 szwzi-1=1; szwzi-1=-2; for(j=wzi-1+1;s+wzi-1-wzi;j+)/将括号后内容前移 szj=szj+wzi-wzi-1; szj= return tkh(sz,ccu,icu,h0);/循环执行int fkh(char szN,char ccuN,int icuN,int h0)/主运算
8、函数 int i,h=0,j=0,j1=0,j2=0,j3=0,j4=0,j5=0,i1,i2,p1=-1,p2=-1,s; char dtN; if(s=1) if(sz0=-2)/判断是否是最后一项 return 0; return 1; /1 就是sz0的值、s-j;i+) /先处理非!) if(szi+1=ccui1)/将变量赋值并给P1 p1=icui1; if(szi+1=-2)/如果是前运算结果的0,则P1等于0 p1=0; if(p1=-1)/如果是数字,直接给P1 p1=szi+1; dtj+2=!p1;/非运算 szi=j+2; for(i1=i+1; szi1=szi1+
9、1;/将后续式子前移一项 p1=-1; j1=j;s-j1-2*j2;i+) / 处理与 if(szi-1=ccui1)/将变量赋值并给P1 if(szi+1=ccui1)/将变量赋值并给P2 p2=icui1; for(i2=2;j+2;i2+) if(szi-1=i2) /如果为前计算结果,将结果赋值并给P1 p1=dti2; if(szi+1=i2) /如果为前计算结果,将结果赋值并给P2 p2=dti2; if(szi-1=-2)/如果是前运算结果的0,则P1等于0 if(szi+1=-2)/如果是前运算结果的0,则P2等于0 p2=0; if(p1=-1) /如果是数字,直接给P1
10、p1=(int)(szi-1); if(p2=-1)/如果是数字,直接给P2 p2=(int)(szi+1); dtj+2=p1 & p2;/与运算 szi-1=j+2; j2+; p2=-1; for(i1=i;i1+)/将后续式子前移两项 szi1=szi1+2; i=i-1;s-j1-2*j2-2*j3;i+) / 处理或。| if(szi+1=i2)/如果为前计算结果,将结果赋值并给P2 p1=szi-1; p2=szi+1; dtj+2=p1 | p2;/或运算 j3+; i-;s-j1-2*j2-2*j3-2*j4;i+) / 处理蕴含。 if(szi-1=-2)/如果是前运算结果
11、的0,则P1等于0 p1=0; if(szi+1=-2)/如果是前运算结果的0,则P2等于0 p2=0; if(p1=-1)/如果是数字,直接给P1 p1=szi-1; if(p2=-1)/如果是数字,直接给P2 p2=szi+1; dtj+2=!p1 | p2;/蕴含运算 szi-1=j+2; j+; j4+; p1=-1; p2=-1; for(i1=i; szi1=szi1+2; i-;s-j1-2*j2-2*j3-2*j4-2*j5;i+) / 处理等值。 dtj+2=(!p1 | p2)&(!p2 | p1);/等值运算 j5+; return dtj+1;/返回结果对关系性质的验证:void fuzhi(int a5050,int b5050,int n);void warshall(int b5050,int n);int a5050,b5050,i,j,n;请输入关系矩阵的阶数:n);请输入%d阶的关系矩阵:,n);第%d行:,i+1); for(j=0;aij);/自反闭包 fu
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2