某地发生了一起犯罪案件,警局经过审问,做出了以下判断: ① A、B至少有1人作案。 ② A、E、F中至少有2人参与作案。 ③ A、D不可能都是案犯。 ④ B、C或同时作案,或与本案无关。 ⑤ C、D中有且仅有1人作案。 ⑥ 如果D没有参与作案,那么E也不可能参与作案。 请利用学过的关于逻辑运算和流程控制的方法,设计解答方案,并编程输出所有的案犯。
#include<iostream>usingnamespace std;intmain(){int m, n, t;
cout <<"请输入两个数m,n:"<< endl;
cin >> m >> n;
t = m < n ? m : n;for(int i = t; i >0; i--){if(m % i ==0&& n % i ==0){
cout << i <<"是"<< m <<"和"<< n <<"的最大公约数"<< endl;break;}}}
(二)给出一个大于1的正整数a,设计一个使用for循环的程序判断这个数是否为质数。
#include<iostream>usingnamespace std;intmain(){int m;
cout <<"请输入一个大于一的数:"<< endl;
cin >> m;if(m <=1)
cout <<"输入有误!"<< endl;for(int i =2; i <= m ; i++){if(i == m -1|| m ==2){
cout << m <<"是质数。"<< endl;break;}elseif(m % i ==0){
cout << m <<"是合数。"<< endl;break;}}}
#include<iostream>usingnamespace std;intmain(){int m;
cout <<"请输入一个大于1的正整数:"<< endl;
cin >> m;if(m <=1)
cout <<"输入有误!"<< endl;else{
cout << m <<"=";for(int i =2; i * i < m; i++){/*
(1)这里i只会取到质数,因为任何合数都能由质数相乘得到,
当i取到合数时它已经被它前面的质数表示过了。
(2)条件为什么是i*i<m,因为i只会取到质数,如果i*i=m,
那么比i更大的质数就不能用来表示m了。但是这样会导致一个问题,
m最后有可能成为1或者一个比i更大的质数,
如果成为1会被忽略,而成为一个更大的质数需要最后再输出。
这其中也包括了m本身就是一个质数的情况,所以这种设计很巧妙。
*/while(m % i ==0)//为什么用循环结构而不用条件结构呢?因为用质数表示合数时会出现重复的质数。{
m /= i;
cout << i;if(m !=1)
cout <<"*";}}if(m !=1)
cout << m << endl;}}
(四)鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。凡百钱买百鸡,问鸡翁、母、雏各几何?
#include<iostream>usingnamespace std;intmain(){int a, b, c;for(a =0; a <=100; a++){for(b =0; b <=100- a; b++){
c =100- a - b;if((c %3==0)&&(a *5+ b *3+ c /3==100))
cout <<"鸡翁:"<< a <<"\t鸡母:"<< b <<"\t鸡雏:"<< c << endl;}}}
(五)请利用学过的关于逻辑运算和流程控制的方法,设计解答方案,并编程输出所有的案犯。
#include<iostream>usingnamespace std;intmain(){int a, b, c, d, e, f;//这里我们用1和0表示是否作案。for(a =0; a <2; a++)for(b =0; b <2; b++)for(c =0; c <2; c++)for(d =0; d <2; d++)for(e =0; e <2; e++)for(f =0; f <2; f++)if((a + b >=1)&&( a + e + f >=2)&&(a + d !=2)&&(c + d ==1))if((b + c ==0)||(b + c ==2))if((d + e ==0)||(d ==1)){
cout <<"推断结果:"<< endl;if(a ==1)
cout <<"A是案犯"<< endl;if(b ==1)
cout <<"B是案犯"<< endl;if(c ==1)
cout <<"C是案犯"<< endl;if(d ==1)
cout <<"D是案犯"<< endl;if(e ==1)
cout <<"E是案犯"<< endl;if(f ==1)
cout <<"F是案犯"<< endl;
cout <<"\n"<< endl;}}