c语言题目:生成0-1关系矩阵 问题描述 给定两个有限集和一个二元关系,计算其相应的0-1关系矩阵 输入格式 一二行分别输入两个集合的元素,用”,”分隔 第三行输入一个的二元关系,用”;”分隔 输出格式 输出对应的0-1关系矩阵 样例输入: a,b,c,d ;a,b,d; aa;bb 样例输出: 1 0 0 ;0 1 0 ;0 0 0; 0 0
时间: 2024-01-02 16:01:44 浏览: 68
实验2-集合上二元关系性质的判定1
以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAXN 100
int main()
{
char set1[MAXN], set2[MAXN], relation[MAXN];
int matrix[MAXN][MAXN] = {0};
int i, j;
// 输入第一个集合
printf("请输入第一个集合的元素,用逗号分隔:\n");
scanf("%s", set1);
// 输入第二个集合
printf("请输入第二个集合的元素,用逗号分隔:\n");
scanf("%s", set2);
// 输入二元关系
printf("请输入二元关系,用分号分隔:\n");
scanf("%s", relation);
// 解析二元关系,生成矩阵
char *token1 = strtok(relation, ";");
while (token1 != NULL)
{
int index1 = strchr(set1, token1[0]) - set1;
char *token2 = strtok(token1 + 1, ",");
while (token2 != NULL)
{
int index2 = strchr(set2, token2[0]) - set2;
matrix[index1][index2] = 1;
token2 = strtok(NULL, ",");
}
token1 = strtok(NULL, ";");
}
// 输出矩阵
printf("对应的0-1关系矩阵为:\n");
for (i = 0; i < strlen(set1); i++)
{
for (j = 0; j < strlen(set2); j++)
{
printf("%d ", matrix[i][j]);
}
printf(";\n");
}
return 0;
}
```
输入样例:
```
请输入第一个集合的元素,用逗号分隔:
a,b,c,d
请输入第二个集合的元素,用逗号分隔:
a,b,d
请输入二元关系,用分号分隔:
aa,bb;bd;cd
```
输出样例:
```
对应的0-1关系矩阵为:
1 0 0 ;
0 1 0 ;
0 0 0 ;
0 0 1 ;
```
阅读全文