c语言代码题目:生成0-1关系矩阵。 问题描述 :给定两个有限集和一个二元关系,计算其相应的0-1关系矩阵 输入格式 一二行分别输入两个集合的元素,用”,”分隔 第三行输入一个的二元关系,用”;”分隔 。输出格式 : 输出对应的0-1关系矩阵
时间: 2024-03-07 08:47:10 浏览: 75
以下是生成0-1关系矩阵的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100 // 最大元素个数
int main() {
char set1[MAX_SIZE], set2[MAX_SIZE]; // 两个集合
char relation[MAX_SIZE]; // 二元关系
int matrix[MAX_SIZE][MAX_SIZE]; // 关系矩阵
int i, j, k;
// 输入两个集合
printf("请输入第一个集合的元素,用逗号分隔:\n");
fgets(set1, MAX_SIZE, stdin);
set1[strlen(set1) - 1] = '\0'; // 去掉换行符
printf("请输入第二个集合的元素,用逗号分隔:\n");
fgets(set2, MAX_SIZE, stdin);
set2[strlen(set2) - 1] = '\0'; // 去掉换行符
// 输入二元关系
printf("请输入二元关系,用分号分隔:\n");
fgets(relation, MAX_SIZE, stdin);
relation[strlen(relation) - 1] = '\0'; // 去掉换行符
// 初始化关系矩阵
for (i = 0; i < strlen(set1); i++) {
for (j = 0; j < strlen(set2); j++) {
matrix[i][j] = 0;
}
}
// 计算关系矩阵
char *token;
token = strtok(relation, ";"); // 分割二元关系
while (token != NULL) {
i = strchr(set1, token[0]) - set1; // 确定元素在第一个集合中的位置
j = strchr(set2, token[2]) - set2; // 确定元素在第二个集合中的位置
matrix[i][j] = 1; // 设置矩阵元素为1
token = strtok(NULL, ";"); // 继续分割二元关系
}
// 输出关系矩阵
printf("关系矩阵为:\n");
printf(" ");
for (j = 0; j < strlen(set2); j++) {
printf("%c ", set2[j]);
}
printf("\n");
for (i = 0; i < strlen(set1); i++) {
printf("%c ", set1[i]);
for (j = 0; j < strlen(set2); j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
使用示例:
```
请输入第一个集合的元素,用逗号分隔:
a,b,c
请输入第二个集合的元素,用逗号分隔:
1,2,3
请输入二元关系,用分号分隔:
a,1;b,2;c,3
关系矩阵为:
1 2 3
a 1 0 0
b 0 1 0
c 0 0 1
```
阅读全文