打印输出逻辑运算表

编写程序,打印输出9种基本逻辑运算符(与、或、非、条件、双条件、异或、与非、或非、条件否定)的运算表到字符文件logic.txt中。

编程语言可选择C、C++、Java或Python。

逻辑运算表输出格式示例:

------------------

 P   Q    条件否定

------------------

 T   T    F

 T   F    T

 F   T    F

 F   F    F

------------------

#include<stdio.h>
#include"stdlib.h"
int main()
{
	FILE *fr;
	fr=fopen("C:logic.txt","w");
	if(fr==NULL){
	printf("error.\n");
	exit(0);
	}
	for(int a=0;a<=8;a++)
	{
		int i=0,j=0,t=0;
		if(a==0){
			printf("C by Granch \n negation\n");fprintf(fr,"negation\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P     Q    否定\n");fprintf(fr,"P     Q    否定\n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = ~i + 2;
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
			}
  			printf("------------------\n");
    		printf("\n\n");
		}else if(a==1){
			printf("Conjunction\n");fprintf(fr,"Conjunction\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P     Q    合取\n");fprintf(fr,"P     Q    合取\n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = i&j; 
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(j){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
			}
  			printf("------------------\n");
    		printf("\n\n");
		}else if(a==2){
			printf("Disjunction\n");fprintf(fr,"Disjunction\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P     Q    析取 \n");fprintf(fr,"P     Q    析取 \n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = i|j;
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(j){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
       		}
  			printf("------------------\n");
    		printf("\n\n");
		}else if(a==3){
			printf("Condition\n");fprintf(fr,"Condition\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P      Q     条件 \n");fprintf(fr,"P      Q     条件 \n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = (~i + 2)|j;        //等价公式 p->q  <=>  ~p|q   (其中:“~ ”代表 “非 ” ,“| ”代表 “或 ”运算) 
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(j){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
       		}
  			printf("------------------\n");
    		printf("\n\n");
		}else if(a==4){
			printf("Double Condition\n");fprintf(fr,"Double Condition\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P     Q   双条件 \n");fprintf(fr,"P     Q   双条件 \n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = ((i&j)|((~i+2)&(~j+2)));        //等价公式 p->q  <=>  ~p|q   (其中:“~ ”代表 “非 ” ,“| ”代表 “或 ”运算) 
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(j){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
       		}
  			printf("------------------\n");
    		printf("\n\n");
		}else if(a==5){
			printf("exclusive disjunction\n");fprintf(fr,"exclusive disjunction\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P     Q   不可兼析取 \n");fprintf(fr,"P     Q   不可兼析取 \n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = i^j;        //等价公式 p->q  <=>  ~p|q   (其中:“~ ”代表 “非 ” ,“| ”代表 “或 ”运算) 
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(j){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
       		}
  			printf("------------------\n");
    		printf("\n\n");
		}else if(a==6){
			printf("Condition negative\n");fprintf(fr,"Condition negative\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P     Q   条件否定 \n");fprintf(fr,"P     Q   条件否定 \n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = ~((~i + 2)|j) + 2;       //等价公式 p->q  <=>  ~p|q   (其中:“~ ”代表 “非 ” ,“| ”代表 “或 ”运算) 
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(j){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
       		}
  			printf("------------------\n");
    		printf("\n\n");
		}else if(a==7){
			printf("NAND\n");fprintf(fr,"NAND\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P     Q   与非 \n");fprintf(fr,"P     Q   与非 \n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = ~(i&j) + 2;        //等价公式 p->q  <=>  ~p|q   (其中:“~ ”代表 “非 ” ,“| ”代表 “或 ”运算) 
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(j){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
       		}
  			printf("------------------\n");
    		printf("\n\n");
		}else if(a==8){
			printf("NOR\n");fprintf(fr,"NOR\n");
			printf("------------------\n");fprintf(fr,"------------------\n");
			printf("P     Q   或非 \n");fprintf(fr,"P     Q   或非 \n");
			printf("------------------\n") ;fprintf(fr,"------------------\n") ;
			for (i = 0; i <= 1; i++)
	        for (j = 0; j <= 1; j++)
        	{
        	   	t = ~(i|j) + 2;       //等价公式 p->q  <=>  ~p|q   (其中:“~ ”代表 “非 ” ,“| ”代表 “或 ”运算) 
        	    if(i){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(j){
					printf("T\t");fprintf(fr,"T\t");
				}else{
					printf("F\t");fprintf(fr,"F\t");
				}
				if(t){
					printf("T\n");fprintf(fr,"T\n");
				}else{
					printf("F\n");fprintf(fr,"F\n"); 
				}
       		}
		}
	}
	
	int fclose(FILE *fr);
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值