编写程序,打印输出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); }