澳门新葡亰信誉平台游戏C_谁在说谎

by admin on 2020年1月30日

张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?

一.实验题目,设计思路,实现方法
第四次 分支+循环 加强版
(4.2.7 装睡)
设计思路:由题意可知通过最初输入量判断循环次数,根据输出形式可知在每次循环中需重新定义输入量并判断其是否满足题中条件,判断是否要输出。
实现方法:设计for循环语句,以初始输入量为结束条件。利用if语句判断其是否需要输出,最后按照题中要求顺序输出结果。
(4-2-5 逆序的三位数)
设计思路:通过设计相对应的三个变量与输入的数字对应,并用if语句判断变量是否为零,再判断其输出顺序。
实验方法:利用if语句分别判断这些数字是否为零
(4-2-4 三天打鱼两天晒网)
设计思路:以5为一个周期进行判断,将输入的变量通过除余算法找出最后剩余天数,再判断是“打鱼”还是“晒网”。
实验方法:利用除余算法得出最后剩余天数,再利用if算法判断其是“打鱼”还是“晒网”,最后对结果进行输出。

/*********************************

*问题分析与算法设计
分析题目,每个人都有可能说的是真话,也有可能说的是假话,这样就需要对每个人所说的话进行分别判断。假设三个人所说的话的真假用变量A、B、C表示,等于1表示该人说的是真话;
表示这个人说的是假话。由题目可以得到:
*张三说李四在说谎 张三说的是真话:a==1&&b==0
或 张三说的是假话:a==0&&b==1
*李四说王五在说谎 李四说的是真话:b==1&&c==0
或 李四说的是假话:b==0&&c==1
*王五说张三和李四都在说谎 王五说的是真话:c==1&&a+b==0
或 王五说的是假话:c==0&&a+b!=0
上述三个条件之间是“与”的关系。将表达式进行整理就可得到C语言的表达式:
(a&&!b||!a&&b)&&(b&&!c||!b&&c)&&(c&&a+b==0||!c&&a+b!=0)
穷举每个人说真话或说假话的各种可能情况,代入上述表达式中进行推理运算,使上述表达式均为“真”的情况就是正确的结果。

二.源程序
(4.2.7 装睡)
int i,n,breath,m;
char name[4];
scanf(“%d”,&n);
for(i=1;i<=n;i++){
scanf(“%s %d %d”,&name,&breath,&m);
if((15<=breath&&breath<=20)&&(50<=m&&m<=70)){
printf(“”);
}
else{
printf(“%sn”,name);
}
}
(4-2-5 逆序的三位数)
int n,a,b,c;
scanf(“%d”,&n);
a=n/100;
b=(n%100)/10;
c=n%100%10;
if(a!=0&&b!=0&&c!=0){
printf(“%d%d%d”,c,b,a);
}
else if(a!=0&&b!=0&&c==0){
printf(“%d%d”,b,a);
}
else if(a!=0&&b==0&&c==0){
printf(“%d”,a);
(4-2-4 三天打鱼两天晒网)
int n,i;
scanf(“%d”,&n);
i=n%5;
0<=i<=4;
if(i==1||i==2||i==3){
printf(“Fishing in day %d”,n);
}
else{
printf(“Drying in day %d”,n);
}
三.遇到的问题及解决方法,心得体会
1.装睡主要是对字符长度限制方法理解不深,还有if条件句中条件判断的格式把握不到位。
2.对除余算法的理解有偏差,和else if 语句中条件的判定有些模糊
3.if条件句中“=”与“==”记忆不清,对周期判断有误。

Vietnamese math problem a+13*b/c+d+12*e-f-11+g*h/i-10=66a,b,c,d,e,f,g,h,i

*********************************/

#include

int main()

{

char a,b,c,d,e,f,g,h,i;

for(a=1;a<=9;a++)

for(b=1;b<=9;b++)

for(c=1;c<=9;c++)

for(d=1;d<=9;d++)

for(e=1;e<=9;e++)

for(f=1;f<=9;f++)

for(g=1;g<=9;g++)

for(h=1;h<=9;h++)

for(i=1;i<=9;i++)

if(a+13*b/c+d+12*e-f-11+g*h/i-10==66

&&13*b%c==0&&g*h%i==0

&&a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i

&&b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i

&&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i

&&d!=e&&d!=f&&d!=g&&d!=h&&d!=i

&&e!=f&&e!=g&&e!=h&&e!=i

&&f!=g&&f!=h&&f!=i

&&g!=h&&g!=i

&&h!=i)

printf(“%d %d %d %d %d %d %d %d %dn”,a,b,c,d,e,f,g,h,i);

return 0;

}

*程序说明与注释
#include<stdio.h>
int main()
{
int a,b,c;
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
if((a&&!b||!a&&b)&&(b&&!c||!b&&c)&&(c&&a+b==0||!c&&a+b!=0))
{
printf(“Zhangsan told a %s.n”,a?”truth”:”lie”);
printf(“Lisi told a %s.n”,b?”truch”:”lie”);
printf(“Wangwu told a %s.n”,c?”truch”:”lie”);
}
}

*运行结果
Zhangsan told a lie (张三说假话)
Lisi told a truch. (李四说真话)
Wangwu told a lie. (王五说假话)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图