题 目 二:布尔函数的输出系统

题目二:布尔函数的输出系统问题描述:用C或者C++做一个布尔函数的输出系统。已知布尔函数的变量的个数,以及布尔函数的整个真值表,输出布尔函数的表达式。通过此课题,熟练掌握... 题 目 二:布尔函数的输出系统问题描述:用C或者C++做一个布尔函数的输出系统。已知布尔函数的变量的个数,以及布尔函数的整个真值表,输出布尔函数的表达式。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用。要求:(1)实现该程序,可以得到正确的输出结果;(2)程序演示时能正确讲解其原理。(3)程序操作友好、图形界面美观。
这个是原题,老师说变量是2个,最后只要得到那个公式,就好了,拜托你再看一下,好吗?
展开
 我来答
猫鼠猫M
2012-12-04 · TA获得超过771个赞
知道小有建树答主
回答量:726
采纳率:50%
帮助的人:963万
展开全部
c\c++一般就是命令行吧,哪有图形界面?
#include<stdio.h>
#include<stdlib.h>
int main()
{
const int paramCnt = 2;
char paramList[paramCnt];
paramList[0] = 'P';
paramList[1] = 'Q'; // 固定变量
// 读取生成真值表
int max_size = 1; // 真值表个数
for (int i = 0; i < paramCnt; i++)
{
max_size *= 2;
}
printf("真值表共有%d个值,请依次输入变量值及真值.\n", max_size);
printf("请输入真值表:\n");
int a[max_size][paramCnt + 1];
for (int i = 0; i < max_size; i ++)
{
printf("开始第%d项的真值表达式\n", i + 1);
for (int j = 0; j <= paramCnt; j++)
{
if (j < paramCnt) printf("输入变量%c的值:", paramList[j]);
else printf("输入该项的真值:");
scanf("%d", &a[i][j]); // 这里没有做输入校验,自己添加\输入只能0、1
}
}
// 上面也可以直接让用户输入每项真值,变量值程序自己赋值就行,2个变量时比较操作友好

// 输出表达式
printf("表达式*表示与,+表示或,!表示非:\n");
int flag = 0; // 用来标识是否打出了开头
for (int i = 0; i < max_size; i ++)
{
if (a[i][paramCnt] == 1) // 如果上面不是用0、1表示、而是true\false,则自己替换
{
if (flag != 0) printf(" + ");
flag = 0; // 重置用于判断是否需要在变量前输出*
for (int j = 0; j < paramCnt; j++)
{
if (flag != 0) printf(" * ");
if (a[i][j] == 1) printf("%c", paramList[j]);
else printf("!%c", paramList[j]);
}
flag = 1; // 重置下一项输入需要输出+
}
}
printf("\n");

system("pause"); // 这个devC常用到
return 0;
}
更多追问追答
追问
老师说最后只需输出表达式,说要用到多项式的加法与乘法的
追答

#include<stdio.h>

#include<stdlib.h>

int main()

{

const int paramCnt = 2; 

char paramList[paramCnt]; 

paramList[0] = 'P';

paramList[1] = 'Q'; // 固定变量

// 读取生成真值表

int max_size = 1; // 真值表个数

for (int i = 0; i < paramCnt; i++)

{

max_size *= 2;

}

printf("真值表共有%d个值,请依次输入变量值及真值.\n", max_size);

printf("请输入真值表:\n");

int a[max_size][paramCnt + 1];

for (int i = 0; i < max_size; i ++)

{

printf("开始第%d项的真值表达式\n", i + 1);

for (int j = 0; j <= paramCnt; j++)

{

if (j == paramCnt)

{

printf("输入该项的真值( ");

for (int k = 0; k < paramCnt; k++) printf("%c=%d ", paramList[k], a[i][k]);

printf("):");

scanf("%d", &a[i][j]); // 这里没有做输入校验,自己添加\输入只能0、1

}

else

{

if (paramCnt == 2)

{

if (j == 0)

{

a[i][j] = i / 2;

}

else

{

a[i][j] = i % 2;

}

}

else

{

// 多个变量的值,自动赋值还没有做

printf("error use");

}

}

}

}

// 上面也可以直接让用户输入每项真值,变量值程序自己赋值就行,2个变量时比较操作友好

// 输出表达式

printf("表达式*表示逻辑与,+表示逻辑或,!表示逻辑非:\n");

printf("f(%c", paramList[0]);

for (int i = 1; i < paramCnt; i++) printf(",%c", paramList[i]);

printf(") = ");

int flag = 0; // 用来标识是否打出了开头

for (int i = 0; i < max_size; i ++)

{

if (a[i][paramCnt] == 1) // 如果上面不是用0、1表示、而是true\false,则自己替换

{

if (flag != 0) printf(" + ");

flag = 0; // 重置用于判断是否需要在变量前输出*

for (int j = 0; j < paramCnt; j++)

{

if (flag != 0) printf(" * ");

if (a[i][j] == 1) printf("%c",  paramList[j]);

else printf("(!%c)",  paramList[j]);

flag = 1; // 重置下一项输入需要输出*

}

flag = 1; // 重置下一项输入需要输出+

}

}

printf("\n");

system("pause"); // 这个devC常用到

return 0;

}

来自:求助得到的回答
Sievers分析仪
2025-07-02 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式