作业社区
探索学习新天地,共享知识资源!
MyStudy_2018 的学生作业:
#include #define MAX_VALUE(x, y) (x > y ? x : y) int main(int argc, char *argv[]) { int a = 10; int b = 20; int max = MAX_VALUE(a, b); printf("%d和%d中的较大值为:%d\n", a, b, max); int x = 50, y = 60; max = MAX_VALUE(x, y); printf("%d和%d中的较大值为:%d\n", x, b, max); return 0; } 【图片】
+195
MyStudy_2018 的学生作业:
#include int find_max(int x, int y); int find_min(int x, int y); int get_result(int x, int y, int (*pfun)(int, int)); int main(int argc, char *argv[]) { int a = 100, b = 200; int ret1 = get_result(a, b, find_max); int ret2 = get_result(a, b, find_min); printf("%d和%d中的较大值为:%d\n", a, b, ret1); printf("%d和%d中的较小值为:%d\n", a, b, ret2); return 0; } int find_max(int x, int y) { return x > y ? x : y; } int find_min(int x, int y) { return x > y ? y : x; } int get_result(int x, int y, int (*pfun)(int, int)) { return pfun(x, y); } 【图片】
+189
MyStudy_2018 的学生作业:
#include #include char *design_arary(int *len); void input_array(const char *q); void output_array(const char *q); int cout_space(const char *q, int len); int main(int argc, char *argv[]) { int len = 0; const char *q = design_arary(&len); printf("数组首地址为:%p ,数组长度为:%d\n", q, len); input_array(q); len = strlen(q); output_array(q); int sum = cout_space(q, len); printf("数组中的空格数为:%d\n", sum); return 0; } char *design_arary(int *len) { static char a[100] = {0}; *len = sizeof(a) / sizeof(a[0]); return a; } void input_array(const char *q) { printf("请输入一窜字符串:"); gets(q); } void output_array(const char *q) { while (*q) { printf("%c ", *q); q++; } printf("\n"); } int cout_space(const char *q, int len) { int sum = 0; int i = 0; for (i = 0; i < len; i++) { if (q[i] == 32) { sum += 1; } } return sum; } 【图片】
+186
慕九州9493288 的学生作业:
练习1: 【图片】 代码如下 bitree.h #ifndef __BITREE_H__ #define __BITREE_H__ #include #include typedef int datatype_t; typedef struct tree_node { datatype_t data; struct tree_node *lchild; struct tree_node *rchild; }bitree_t; extern bitree_t *create_binary_tree(int n); extern void preorder(bitree_t *root,void(*callback)(datatype_t)); extern int max_depth(bitree_t *root); extern void free_tree(bitree_t *root); #endif bitree.c #include "bitree.h" #include static bitree_t *create_node(int i,int max_val) { if(i > max_val) return NULL; bitree_t *node = (bitree_t *)malloc(sizeof(bitree_t)); if(NULL == node) { perror("malloc failed"); return NULL;} node->data = i; node->lchild = NULL; node->rchild = NULL; // 处理左孩子:检查2*i是否溢出,避免非法值导致递归异常 int left_child = 2 * i; if(i > INT_MAX / 2) { node->lchild = NULL; } else { node->lchild = create_node(left_child,max_val); // 若左孩子本应存在(left_child (INT_MAX - 1) / 2) { node->rchild = NULL; } else { node->rchild = create_node(right_child,max_val); // 若右孩子本应存在(right_child lchild); free(node); return NULL; } } return node; } bitree_t *create_binary_tree(int n) { if(n data); preorder(root->lchild,callback); preorder(root->rchild,callback); } int max_depth(bitree_t *root) { if(NULL == root) return 0; int left_depth = max_depth(root->lchild); int right_depth = max_depth(root->rchild); return (left_depth > right_depth ? left_depth : right_depth) + 1; } void free_tree(bitree_t *root) { if(NULL == root) return; free_tree(root->lchild); free_tree(root->rchild); free(root); //释放当前节点 } main.c #include "bitree.h" void print_node(datatype_t data) { printf("%d ",data); } int main() { int n = 10; bitree_t *root = create_binary_tree(n); if(NULL == root) { printf("二叉树创建失败(可能原因:n=%d非法或内存不足)!\n",n); return 1; } printf("前序遍历结果:"); preorder(root,print_node); putchar('\n'); printf("二叉树深度: %d\n",max_depth(root)); free_tree(root); root = NULL; return 0; } 结果如下: 【图片】 练习2: 代码如下: bubble.h #ifndef __BUBBLE_H__ #define __BUBBLE_H__ #include #include #include typedef int datatype_t; typedef struct node { datatype_t data; struct node *next; }linknode_t; extern linknode_t *create_empty_linklist(); extern int is_empty_linklist(linknode_t *head); extern void insert_linklist(linknode_t *head,datatype_t data); extern void print_linklist(linknode_t *head); extern void sort_linklist(linknode_t *head); extern void destroy_linklist(linknode_t *head); #endif bubble.c #include "bubble.h" linknode_t *create_empty_linklist() { linknode_t *head = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == head) { perror("malloc failed"); return NULL; } head->next = NULL; return head; } int is_empty_linklist(linknode_t *head) { return head->next == NULL ? 1 : 0; } void insert_linklist(linknode_t *head,datatype_t data) { if(NULL == head) return; linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { perror("malloc failed"); return; } temp->data = data; temp->next = head->next; head->next = temp; } void print_linklist(linknode_t *head) { if(NULL == head) return; linknode_t *p = head; while(!is_empty_linklist(p)) { printf("%d ",p->next->data); p = p->next; } putchar('\n'); } void sort_linklist(linknode_t *head) { if(NULL == head || NULL == head->next) return; int swapped = 0; linknode_t *end = NULL; do { linknode_t *prev = head; linknode_t *p = head->next; linknode_t *temp = NULL; swapped = 0; while(p->next != end) { temp = p->next; if(p->data > temp->data) { p->next = temp->next; temp->next = p; prev->next = temp; swapped = 1; } else { p = p->next; } prev = prev->next; } p = end;//本轮最大值已经到end位置 }while(swapped); } void destroy_linklist(linknode_t *head) { if(NULL == head) return; datatype_t data = 0; linknode_t *temp = NULL; linknode_t *current = head->next; while(NULL != current) { temp = current; data = temp->data; current = temp->next; free(temp); temp = NULL; } free(head); } main.c #include "bubble.h" int main() { linknode_t *head = create_empty_linklist(); for(int i = 1;i < 6;i++) { insert_linklist(head,i); } printf("排序前列表:"); print_linklist(head); printf("排序后列表:"); sort_linklist(head); print_linklist(head); return 0; } 结果如下: 【图片】 练习3: 代码如下: andlinklist.h #ifndef __ANDLINKLIST_H__ #define __ANDLINKLIST_H__ #include #include #include typedef int datatype_t; typedef struct node { datatype_t data; struct node *next; }linknode_t; extern linknode_t *create_empty_linklist(); extern void insert_data_linklist(linknode_t *head,datatype_t data); extern linknode_t *andlinklist(linknode_t *head1,linknode_t *head2); extern void destroy_linklist(linknode_t *head); extern void print_linklist(linknode_t *head); #endif andlinklist.c #include "andlinklist.h" linknode_t *create_empty_linklist() { linknode_t *head = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == head) { perror("head malloc failed");return NULL; } head->next = NULL; return head; } void insert_data_linklist(linknode_t *head,datatype_t data) { if(NULL == head) return; linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { perror("temp malloc failed"); return;} temp->data = data; temp->next = head->next; head->next = temp; } linknode_t *andlinklist(linknode_t *head1,linknode_t *head2) { if(NULL == head1) return head2; if(NULL == head2) return head1; linknode_t *p1 = head1->next; linknode_t *p2 = head2->next; linknode_t *newlinklist = NULL; linknode_t *tail = NULL; //获取头节点 if(p1->data < p2->data) { newlinklist = head1; }else{ newlinklist = head2; } //获取尾节点 tail = newlinklist; while(NULL != p1 && NULL != p2) { if(p1->data < p2->data) { tail->next = p1; p1 = p1->next; }else{ tail->next = p2; p2 = p2->next; } tail = tail->next; } tail->next = (NULL != p1) ? p1 : p2; return newlinklist; } void destroy_linklist(linknode_t *head) { if(NULL == head) return; linknode_t *temp = NULL; linknode_t *current = NULL; datatype_t data = 0; current = head->next; while(current != NULL) { temp = current; data = temp->data; current = temp->next; free(temp); temp = NULL; } free(head); } void print_linklist(linknode_t *head) { if(NULL == head) return; linknode_t *p = head->next; while(p != NULL) { printf("%d ",p->data); p = p->next; } putchar('\n'); } main.c #include "andlinklist.h" linknode_t *str2list(int str[],int len) { linknode_t *h = create_empty_linklist(); for(int i = len - 1;i >= 0;i--) { insert_data_linklist(h,str[i]); } return h; } int main() { int head1[] = {1,3,5,7,9}; int head2[] = {2,4,6,8,10}; linknode_t *h1 = str2list(head1,sizeof(head1) / sizeof(head1[0])); linknode_t *h2 = str2list(head2,sizeof(head2) / sizeof(head2[0])); print_linklist(h1); print_linklist(h2); linknode_t *h3 = andlinklist(h1,h2); print_linklist(h3); // destroy_linklist(h1); // h1 = NULL; // destroy_linklist(h2); // h2 = NULL; destroy_linklist(h3); // 是h1和h2合并后的,复用了h1和h2的内存,只需要释放h3即可 h3 = NULL; return 0; } 结果如下: 【图片】 练习4: 已经知道一棵二叉树。 先序遍历:ABDGHCEIF 中序遍历:GDHBAEICF 要求大家画出这颗二叉树。【图片】
+8
MyStudy_2018 的学生作业:
#include #include int count_uppercase_character(char *q, int len); int main(int argc, char *argv[]) { char buf[] = "I Love China"; int len = strlen(buf); char *q = buf; int sum = count_uppercase_character(q, len); printf("数组buf[] = \"I Love China\"中大写字母个数为:%d\n", sum); return 0; } int count_uppercase_character(char *q, int len) { int i = 0; int sum = 0; for (i = 0; i < len; i++) { if (*(q + i) >= 65 && *(q + i)
+189
MyStudy_2018 的学生作业:
#include void input_array(int *p, int len); void output_array(int *p, int len); int find_max(int *p, int len); int main(int argc, char *argv[]) { int max_value; int a[6] = {0}; int len = sizeof(a) / sizeof(a[0]); input_array(a, len); output_array(a, len); max_value = find_max(a, len); printf("数组中的最大值为:%d\n", max_value); return 0; } void input_array(int *p, int len) { int i = 0; printf("请输入%d个整数:", len); for (i = 0; i < len; i++) { scanf("%d", p + i); } return; } void output_array(int *p, int len) { int i = 0; printf("打印数组:"); for (i = 0; i < len; i++) { printf("%d ", p[i]); } printf("\n"); return; } int find_max(int *p, int len) { int max = p[0]; int i = 0; for (i = 1; i < len; i++) { if (max < p[i]) { max = p[i]; } } return max; } 【图片】
+192
MyStudy_2018 的学生作业:
#include void calc_data(const int, const int, int *, int *); int main(int argc, char *argv[]) { int a, b, max_value, sum = 0; printf("请输入两个整数,并以空格隔开:"); scanf("%d %d", &a, &b); calc_data(a, b, &max_value, &sum); printf("最大值为:%d\t%d和%d的求和为:%d\n", max_value, a, b, sum); return 0; } void calc_data(const int a, const int b, int *max_value, int *sum) { if (a > b) { *max_value = a; } else { *max_value = b; } *sum = a + b; return; } 【图片】
+191
MyStudy_2018 的学生作业:
#include int do_leap(int); int main(int argc, char *argv[]) { int year; int ret = 0; printf("请输入一个年份:"); scanf("%d", &year); ret = do_leap(year); if(ret){ printf("%d年是闰年\n",year); }else{ printf("%d年不是闰年\n",year); } return 0; } int do_leap(const int year) { if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { return 1; } return 0; } 【图片】
+188
MyStudy_2018 的学生作业:
#include void do_sum(); void do_Result(int a, int b) { printf("(a + b)/2 = %d\n", (a + b) / 2); } int main(int argc, char *argv[]) { do_sum(); int a, b; printf("请输入两个整数,并以空格隔开:"); scanf("%d %d", &a, &b); do_Result(a, b); return 0; } void do_sum() { int m = 0; int i = 0; int sum = 0; printf("请输入一个整数:"); scanf("%d", &m); if (m % 2) { printf("%d是一个奇数\n", m); for (i = 1; i
+191
MyStudy_2018 的学生作业:
#include int main(int argc, char *argv[]) { int a[2][3] = {10, 20, 30, 40, 50, 60}; int(*p)[3] = a; int len1 = sizeof(a) / sizeof(a[0]); int len2 = sizeof(a[0]) / sizeof(a[0][0]); int i = 0, j = 0; for (i = 0; i < len1; i++) { for (j = 0; j < len2; j++) { printf("%d ", a[i][j]); } } printf("\n==================\n"); for (i = 0; i < len1; i++) { for (j = 0; j < len2; j++) { printf("%d ", *(a[i] + j)); } } printf("\n==================\n"); for (i = 0; i < len1; i++) { for (j = 0; j < len2; j++) { printf("%d ", *(*(a + i) + j)); } } printf("\n==================\n"); for (i = 0; i < len1; i++) { for (j = 0; j < len2; j++) { printf("%d ", p[i][j]); } } printf("\n==================\n"); for (i = 0; i < len1; i++) { for (j = 0; j < len2; j++) { printf("%d ", *(p[i] + j)); } } printf("\n==================\n"); for (i = 0; i < len1; i++) { for (j = 0; j < len2; j++) { printf("%d ", *(*(p + i) + j)); } } printf("\n==================\n"); return 0; } 【图片】
+186
MyStudy_2018 的学生作业:
#include #include int main(int argc, char *argv[]) { char a1[] = "abcdef"; char a2[] = "XYZBBQ"; char *p_array[] = {a1, a2, NULL}; int i = 0; for (i = 0; p_array[i] != NULL; i++) { if (p_array[i] == a1) { while (*p_array[i]) { if (*p_array[i] >= 97 && *p_array[i] = 65 && *p_array[i]
+199