
作业社区
探索学习新天地,共享知识资源!
风_往北吹 的学生作业:
#include int main() { int a[2][3] = { 10,20,30,40,50,60 }; int(*p)[3] = a; printf("=======a[i][j]输出==========\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("a[%d][%d]=%d\t", i, j, a[i][j]); } printf("\n"); } printf("=======*(a[i]+j)输出==========\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("*(a[%d]+%d)=%d\t", i, j, *(a[i] + j)); } printf("\n"); } printf("=======*(*(a + i) + j)输出==========\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("*(*(a+%d)+%d)=%d\t", i, j, *(*(a + i) + j)); } printf("\n"); } printf("=======p[i][j]输出==========\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("p[%d][%d]=%d\t", i, j, p[i][j]); } printf("\n"); } printf("=======*(p[i]+j)输出==========\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("*(p[%d]+%d)=%d\t", i, j, *(p[i] + j)); } printf("\n"); } printf("=======*(*(p + i) + j)输出==========\n"); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("*(*(p+%d)+%d)=%d\t", i, j, *(*(p + i) + j)); } printf("\n"); } return 0; } 【图片】





慕尼黑3595755 的学生作业:
#ifndef JOSEPHUS_H #define JOSEPHUS_H typedef struct Node { int value; struct Node* next; } Node; Node* createCircularLinkedList(int n); void removeKthNode(Node** head, int k); void josephusProblem(int n, int k, int m); #endif // JOSEPHUS_H//josephus.c #include #include #include “josephus.h” // 创建新节点 Node* createNode(int value) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->value = value; newNode->next = NULL; return newNode; } // 构建单向循环链表 Node* createCircularLinkedList(int n) { Node* head = createNode(1); Node* current = head; for (int i = 2; i next = createNode(i); current = current->next; } current->next = head; // 形成循环链表 return head; } // 打印并删除第k个节点 void removeKthNode(Node** head, int k) { Node* current = head; Node previous = NULL; for (int i = 0; i < k - 1; i++) { previous = current; current = current->next; } if (previous != NULL) { previous->next = current->next; } else { *head = current->next; // 如果删除的是头节点,更新头节点 } free(current); } // 解决约瑟夫问题 void josephusProblem(int n, int k, int m) { Node* head = createCircularLinkedList(n); Node* current = head; // 找到起始位置k-1的节点 for (int i = 0; i < k - 1; i++) { current = current->next; } printf(“出列序列: “); while (n > 0) { for (int i = 0; i < m - 1; i++) { current = current->next; } printf(”%d “, current->value); removeKthNode(&head, current->value); current = current->next; n–; } printf(”\n”); }//main.c #include “josephus.h” int main() { int n = 8, k = 3, m = 4; josephusProblem(n, k, m); return 0; }





风_往北吹 的学生作业:
练习一: #include int main() { int a[5] = {0}; int i = 0; int* p_max = &a[0]; printf("请为数组赋5个数值:\n"); for (i;i= *p_max) p_max = &a[i]; } printf("数组中最大值为:%d",*p_max); return 0; } 【图片】 练习二: #include int main { unsigned int data=0x11223344; unsigned short* q = NULL; unsigned short t1 = 0; unsigned short t2 = 0; //指针q保存data的地址 q = (int *)&data; //利用q读取data的低2个字节赋值給t1 ===>0x3344 t1 = *q; printf("t1:%#x\n",t1); //利用q读取data的高2个字节赋值給t2 ===>0x1122 t2 = *(++q); printf("t2:%#x\n", t2); //输出t1和t2的和与差 printf("t1+t2=%#x\nt1-t2=%#x\n", t1 + t2, t1 - t2); return 0; } 【图片】




