5-血型遗传检测

血型遗传对照表如下:

父母血型

子女会出现的血型

子女不会出现的血型

O与O

O

A,B,AB

A与O

A,O

B,AB

A与A

A,O

B,AB

A与B

A,B,AB,O

——

A与AB

A,B,AB

O

B与O

B,O

A,AB

B与B

B,O

A,AB

B与AB

A,B,AB

O

AB与O

A,B

O,AB

AB与AB

A,B,AB

O

请实现一个程序,输入父母血型,判断孩子可能的血型。给定两个字符串father和mother,代表父母的血型,请返回一个字符串数组,代表孩子的可能血型(按照字典序排列)。

测试样例:”A”,”A”

返回:[”A”,“O”]

 

方法:暴力法

 

解析:根据题意,利用 if-else语句进行判断输出即可得到所要求得的孩子可能性血型。

 

代码一:

#include<iostream>

#include<string>

using namespace std;



int main()

{

       string f,m;

       cin>>f>>m;

       if(f=="O"&&m=="O")

              cout<<"O"<<endl;

       else if((f=="A"&&m=="A")||(f=="A"&&m=="O")||(f=="O"&&m=="A"))

              cout<<"A,O"<<endl;

       else if((f=="A"&&m=="B")||(f=="B"&&m=="A"))

              cout<<"A,AB,B,O"<<endl;  

       else if((f=="A"&&m=="AB")||(f=="AB"&&m=="A")||(f=="AB"&&m=="B")||(f=="B"&&m=="AB")||(f=="AB"&&m=="AB"))

              cout<<"A,B,AB"<<endl;

       else if((f=="B"&&m=="B")||(f=="B"&&m=="O")||(f=="O"&&m=="B"))

              cout<<"B,O"<<endl;

       else

              cout<<"A,B"<<endl;

       return 0;

}

代码二:

#include<iostream>

#include<string>

#include<vector>

using namespace std;



vector<string> chkBlood(string father, string mother)

{

       vector<string> vec;

       if(father=="O"&&mother=="O")

              vec.push_back("O");

       else if((father=="A"&&mother=="A")||(father=="A"&&mother=="O")||(father=="O"&&mother=="A"))

       {

              vec.push_back("A");

              vec.push_back("O");

       }

       else if((father=="A"&&mother=="B")||(father=="B"&&mother=="A"))

       {

              vec.push_back("A");

              vec.push_back("AB");

              vec.push_back("B");

              vec.push_back("O");

       }

       else if((father=="A"&&mother=="AB")||(father=="AB"&&mother=="A")||(father=="AB"&&mother=="B")||(father=="B"&&mother=="AB")||(father=="AB"&&mother=="AB"))

       {

              vec.push_back("A");

              vec.push_back("AB");

              vec.push_back("B");

       }

       else if((father=="B"&&mother=="B")||(father=="B"&&mother=="O")||(father=="O"&&mother=="B"))

       {

              vec.push_back("B");

              vec.push_back("O");

       }

       else

       {

              vec.push_back("A");

              vec.push_back("B");

       }

       return vec;

}



int main()

{

       string f,m;

       vector<string> vec;

       cin>>f>>m;

       vec=chkBlood(f,m);

       for(int i=0;i<vec.size();i++)

              cout<<vec[i]<<" ";

       cout<<endl;

       return 0;

}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值