欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何使用C语言编写一个小程序来理解并实例化高等数学中的映射、单射与一一对应函数的概念

最编程 2024-02-22 22:08:22
...
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; typedef int Elemtype; typedef struct Set{ Elemtype num; Set *next; int length; }Set, *NumberSet; void input(NumberSet set); void output(NumberSet set); Status Function(Elemtype &x, Elemtype &y); Status Relationship1(NumberSet x, NumberSet y); Status Relationship2(NumberSet x, NumberSet y); Status Mapping(NumberSet x, NumberSet y, Status (*fun)(NumberSet x, NumberSet y)); Status Injection(NumberSet x, NumberSet y, Status (*fun)(NumberSet x, NumberSet y)); Status Bijection(NumberSet x, NumberSet y); void input(NumberSet set){ printf("Enter Set Length: "); int len, i; scanf_s("%d", &len); printf("Enter Set %d Numbers: ", len); Set *p = (Set*)malloc(sizeof(Set)); set->length = 0; for(p = set, i = 0; i < len; i++, p = p->next){ scanf_s("%d", &p->num); p->next = (Set*)malloc(sizeof(Set)); set->length++; if(i == len - 1) break; } p->next = NULL; }//input void output(NumberSet set){ printf("Set output: "); Set *p; for(p = set; p != NULL; p = p->next) printf("%d ", p->num); printf("\n"); printf("Set Length: %d\n", set->length); }//output Status Function(Elemtype &x, Elemtype &y){ if(y == 2*x) return TRUE; else return FALSE; }//Function Status Relationship1(NumberSet x, NumberSet y){ Set *p, *q; int count; for(p = y, count = 0; p != NULL; p = p->next){ for(q = x; q != NULL; q = q->next) if(Function(q->num, p->num)){ count++; break; } } if(count == y->length) return TRUE; else return FALSE; }//Relationship1 Status Relationship2(NumberSet x, NumberSet y){ Set *p, *q; int count; for(p = x, count = 0; p != NULL; p = p->next){ for(q = y; q != NULL; q = q->next) if(Function(p->num, q->num)){ count++; break; } } if(count == x->length) return TRUE; else return FALSE; }//Relationship2 Status Mapping(NumberSet x, NumberSet y, Status (*fun)(NumberSet x, NumberSet y)){ fun = Relationship1; if(fun(x, y)) return TRUE; else return FALSE; }//Mapping Status Injection(NumberSet x, NumberSet y, Status (*fun)(NumberSet x, NumberSet y)){ fun = Relationship2; if(fun(x, y)) return TRUE; else return FALSE; }//Injection Status Bijection(NumberSet x, NumberSet y){ if(Mapping(x, y, Relationship1)&&Injection(x, y, Relationship2)) return TRUE; else return FALSE; }//Bijection int main() { system("color a"); Set *numberset1 = (Set*)malloc(sizeof(Set)); Set *numberset2 = (Set*)malloc(sizeof(Set)); input(numberset1); input(numberset2); output(numberset1); output(numberset2); if(Mapping(numberset1, numberset2, Relationship1)) printf("Set1 to Set2 is Mapping\n"); if(Injection(numberset1, numberset2, Relationship2)) printf("Set1 to Set2 is Injection\n"); if(Bijection(numberset1, numberset2)) printf("Set1 to Set2 is Bijection\n"); system("pause"); return 0; }

推荐阅读