离散数学编程作业--打印输出逻辑运算表

编程内容及要求:

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

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

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

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

 P   Q    条件否定

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

 T   T    F

 T   F    T

 F   T    F

 F   F    F

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

输出的字符文件logic.txt内容(粘贴):

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

 P   Q    与运算

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

 F   F       F

 F   T       F

 T   F       F

 T   T       T

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

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

 P   Q    或运算

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

 F   F       F

 F   T       T

 T   F       T

 T   T       T

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

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

 P    非运算

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

 F       T

 T       F

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

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

 P   Q    条件运算

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

 F   F       T

 F   T       T

 T   F       F

 T   T       T

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

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

 P   Q    双条件运算

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

 F   F       T

 F   T       F

 T   F       F

 T   T       T

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

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

 P   Q    异或运算

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

 F   F       F

 F   T       T

 T   F       T

 T   T       F

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

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

 P   Q    与非运算

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

 F   F       T

 F   T       T

 T   F       T

 T   T       F

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

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

 P   Q    或非运算

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

 F   F       T

 F   T       F

 T   F       F

 T   T       F

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

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

 P   Q    条件否定运算

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

 F   F       F

 F   T       F

 T   F       T

 T   T       F

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

源程序代码:

#include 
int main() 
{
	
    FILE *fp;
    fp = fopen("logic.txt", "w"); // 打开文件
    if (fp == NULL) { // 文件打开失败
        printf("文件打开失败!\n");
        return 1;
    }
    
    // 输出与运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P   Q    与运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        for (int q = 0; q <= 1; q++) {
            int result = p && q;
            char ch_1=p ?'T':'F';
			char ch_2=q ?'T':'F';
			char ch_3=result ?'T':'F';
            fprintf(fp, " %c   %c       %c\n", ch_1, ch_2, ch_3);
        }
    }
    fprintf(fp, "------------------\n\n");

    // 输出或运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P   Q    或运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        for (int q = 0; q <= 1; q++) {
            int result = p || q;
            char ch_1=p ?'T':'F';
	char ch_2=q ?'T':'F';
	char ch_3=result ?'T':'F';
            fprintf(fp, " %c   %c       %c\n", ch_1, ch_2, ch_3);
        }
    }
    fprintf(fp, "------------------\n\n");
    
    // 输出非运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P    非运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        int result = !p;
        char ch_1=p ?'T':'F';
		char ch_3=result ?'T':'F';
        fprintf(fp, " %c       %c\n", ch_1, ch_3);
    }
    fprintf(fp, "------------------\n\n");
    
    // 输出条件运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P   Q    条件运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        for (int q = 0; q <= 1; q++) {
            int result = p ? q : 1;
            char ch_1=p ?'T':'F';
			char ch_2=q ?'T':'F';
			char ch_3=result ?'T':'F';
            fprintf(fp, " %c   %c       %c\n", ch_1, ch_2, ch_3);
        }
    }
    fprintf(fp, "------------------\n\n");

    // 输出双条件运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P   Q    双条件运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        for (int q = 0; q <= 1; q++) {
            int result = (p && q) || (!p && !q);
			char ch_1=p ?'T':'F';
			char ch_2=q ?'T':'F';
			char ch_3=result ?'T':'F';
            fprintf(fp, " %c   %c       %c\n", ch_1, ch_2, ch_3);
        }
    }
    fprintf(fp, "------------------\n\n");
    
    // 输出异或运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P   Q    异或运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        for (int q = 0; q <= 1; q++) {
            int result = p ^ q;
            char ch_1=p ?'T':'F';
	char ch_2=q ?'T':'F';
	char ch_3=result ?'T':'F';
            fprintf(fp, " %c   %c       %c\n", ch_1, ch_2, ch_3);
        }
    }
    fprintf(fp, "------------------\n\n");

    // 输出与非运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P   Q    与非运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        for (int q = 0; q <= 1; q++) {
            int result = !(p && q);
            char ch_1=p ?'T':'F';
	char ch_2=q ?'T':'F';
	char ch_3=result ?'T':'F';
            fprintf(fp, " %c   %c       %c\n", ch_1, ch_2, ch_3);
        }
    }
    fprintf(fp, "------------------\n\n");

    // 输出或非运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P   Q    或非运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        for (int q = 0; q <= 1; q++) {
            int result = !(p || q);
            char ch_1=p ?'T':'F';
			char ch_2=q ?'T':'F';
			char ch_3=result ?'T':'F';
            fprintf(fp, " %c   %c       %c\n", ch_1, ch_2, ch_3);
        }
    }
    fprintf(fp, "------------------\n\n");

    // 输出条件否定运算表
    fprintf(fp, "------------------\n");
    fprintf(fp, " P   Q    条件否定运算\n");
    fprintf(fp, "------------------\n");
    for (int p = 0; p <= 1; p++) {
        for (int q = 0; q <= 1; q++) {
            int result = !(p ? q : 1);
            char ch_1=p ?'T':'F';
			char ch_2=q ?'T':'F';
			char ch_3=result ?'T':'F';
            fprintf(fp, " %c   %c       %c\n", ch_1, ch_2, ch_3);
        }
    }
    fprintf(fp, "------------------\n\n");

    fclose(fp); // 关闭文件
    printf("逻辑运算表已输出到文件 logic.txt 中!\n");
    return 0;
}

你可能感兴趣的:(c语言)