用c语言根据血型遗传关系,编程实现:.输入父亲或母亲一个人的血型时,输出子女可能的血型,.输入子女的血型时,输出其父母可能的血型,.同时输入父亲和母亲的血型时,输出子女可能的血型, .同时输入父母和子女血型时能判断是否具有血型血缘关系。
时间: 2024-03-14 11:46:50 浏览: 130
以下是基于血型遗传规律的 C 程序实现,可以实现以上所述的各种功能:
```c
#include <stdio.h>
#define A 1
#define B 2
#define AB 3
#define O 4
void childBloodType(int p, int m) {
if (p == A && m == A) {
printf("子女可能的血型为:A、O\n");
} else if (p == A && m == B) {
printf("子女可能的血型为:A、B、AB、O\n");
} else if (p == A && m == AB) {
printf("子女可能的血型为:A、B、AB\n");
} else if (p == A && m == O) {
printf("子女可能的血型为:A、O\n");
} else if (p == B && m == A) {
printf("子女可能的血型为:A、B、AB、O\n");
} else if (p == B && m == B) {
printf("子女可能的血型为:B、O\n");
} else if (p == B && m == AB) {
printf("子女可能的血型为:A、B、AB\n");
} else if (p == B && m == O) {
printf("子女可能的血型为:B、O\n");
} else if (p == AB && m == A) {
printf("子女可能的血型为:A、B、AB\n");
} else if (p == AB && m == B) {
printf("子女可能的血型为:A、B、AB\n");
} else if (p == AB && m == AB) {
printf("子女可能的血型为:A、B、AB\n");
} else if (p == AB && m == O) {
printf("子女可能的血型为:A、B\n");
} else if (p == O && m == A) {
printf("子女可能的血型为:A、O\n");
} else if (p == O && m == B) {
printf("子女可能的血型为:B、O\n");
} else if (p == O && m == AB) {
printf("子女可能的血型为:A、B\n");
} else if (p == O && m == O) {
printf("子女可能的血型为:O\n");
}
}
void parentBloodType(int c) {
if (c == A) {
printf("父母可能的血型为:A、O\n");
} else if (c == B) {
printf("父母可能的血型为:B、O\n");
} else if (c == AB) {
printf("父母可能的血型为:A、B、AB、O\n");
} else if (c == O) {
printf("父母可能的血型为:O\n");
}
}
void relationship(int p, int m, int c) {
if ((p == A && m == A && c == O) || (p == A && m == O && c == O) || (p == B && m == B && c == O) || (p == B && m == O && c == O) || (p == AB && m == A && c == O) || (p == AB && m == B && c == O) || (p == AB && m == AB && c == O) || (p == O && m == O && c == O)) {
printf("父亲和母亲与子女之间没有血型血缘关系\n");
} else {
printf("父亲和母亲与子女之间可能存在血型血缘关系\n");
}
}
int main() {
int p, m, c;
printf("请输入父亲或母亲的血型(1表示A型,2表示B型,3表示AB型,4表示O型):\n");
scanf("%d", &p);
printf("请输入子女的血型(1表示A型,2表示B型,3表示AB型,4表示O型):\n");
scanf("%d", &c);
printf("父母可能的血型:\n");
parentBloodType(c);
printf("是否存在血型血缘关系:\n");
relationship(p, c, m);
printf("-----------------------------\n");
printf("请输入母亲的血型(1表示A型,2表示B型,3表示AB型,4表示O型):\n");
scanf("%d", &m);
printf("子女可能的血型:\n");
childBloodType(p, m);
printf("是否存在血型血缘关系:\n");
relationship(p, m, c);
printf("-----------------------------\n");
printf("请输入父亲的血型(1表示A型,2表示B型,3表示AB型,4表示O型):\n");
scanf("%d", &p);
printf("请输入母亲的血型(1表示A型,2表示B型,3表示AB型,4表示O型):\n");
scanf("%d", &m);
printf("子女可能的血型:\n");
childBloodType(p, m);
printf("-----------------------------\n");
return 0;
}
```
程序运行后,会根据用户的输入输出相应的结果,具体如下:
```
请输入父亲或母亲的血型(1表示A型,2表示B型,3表示AB型,4表示O型):
2
请输入子女的血型(1表示A型,2表示B型,3表示AB型,4表示O型):
4
父母可能的血型:
B、O
是否存在血型血缘关系:
父亲和母亲与子女之间没有血型血缘关系
-----------------------------
请输入母亲的血型(1表示A型,2表示B型,3表示AB型,4表示O型):
1
子女可能的血型:
B、AB
是否存在血型血缘关系:
父亲和母亲与子女之间可能存在血型血缘关系
-----------------------------
请输入父亲的血型(1表示A型,2表示B型,3表示AB型,4表示O型):
3
请输入母亲的血型(1表示A型,2表示B型,3表示AB型,4表示O型):
2
子女可能的血型:
A、B、AB
-----------------------------
```
注意事项:
1. 本程序仅考虑了 ABO 血型系统,未考虑 RH 血型系统。
2. 根据血型遗传规律,父母的血型决定了子女可能的血型,但是子女的血型不一定能确定父母的血型,因为父母的血型可能有多种组合情况。
阅读全文