各位仁人志士有没有建议,这个寒假应该如何备赛,想要以赛促学,今年刚学C语言半年。
1条回答 默认 最新
关注【相关推荐】
- 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7805268
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言-编写一个函数,用来判断是否为素数,每输入一个数都调用一次此函数进行判断。
- 您还可以看一下 尹成老师的C语言系列之 堆、堆排序与字符串强化课程中的 堆与堆排序小节, 巩固相关知识点
- 除此之外, 这篇博客: 练习 用C语言编写一个程序,解释高等数学中的映射、单射和一一映射,并表示为函数。中的 练习 用C语言编写一个程序,解释高等数学中的映射、单射和一一映射,并表示为函数。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
代码块:
#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"); free(numberset1); free(numberset2); system("pause"); return 0; }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 2