任务一
1.连续,相同
2.连续,相同,相差16,一个单位所占的字节数
任务二
1.int x[] ,x[]
2.输入数组,计算输入数据的均值
任务三
1.int x[N],x[N][N]
2.不能
3.将数据初始化后输出
任务四
#include <stdio.h> #define N 100 void input(int arr[], int size); double median(int arr[], int size); int main() { int x[N]; int n; double ans; while(printf("Enter n: "), scanf("%d", &n) != EOF) { input(x, n); // 输入数组元素 ans = median(x, n); // 计算中位数 printf("ans = %g\n\n", ans); } return 0; } void input(int arr[], int size) { printf("Enter %d integers: ", size); for (int i = 0; i < size; i++) { scanf("%d", &arr[i]); } } double median(int arr[], int size) { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } if (size % 2 == 1) { return arr[size / 2]; } else { return (arr[size/2-1]+arr[size/2])/2; } }

任务五
#include <stdio.h> #define N 100 // 函数声明 void input(int x[][N], int n); void output(int x[][N], int n); // 函数rotate_to_right声明 // 待补足 void rotate_to_right(int x[][N], int n); int main() { int x[N][N]; int n; printf("输入n: "); scanf_s("%d", &n); input(x, n); printf("原始矩阵:\n"); output(x, n); // 函数rotate_to_right调用 rotate_to_right(x, n); printf("变换后矩阵:\n"); output(x, n); return 0; } // 函数定义 // 功能: 输入一个n*n的矩阵x void input(int x[][N], int n) { int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) scanf_s("%d", &x[i][j]); } } // 函数定义 // 功能: 输出一个n*n的矩阵x void output(int x[][N], int n) { int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) printf("%4d", x[i][j]); printf("\n"); } } // 函数rotate_to_right定义 // 功能: 把一个n*n的矩阵x,每一列向右移, 最右边一列绕回左边 void rotate_to_right(int x[][N], int n) { int a[N]; for (int i = 0; i < n; ++i) { a[i] = x[i][n - 1]; } for (int j = n - 1; j > 0; j--) { for (int i = 0; i < n; i++) { x[i][j] = x[i][j - 1]; } } for (int i = 0; i < n; i++) { x[i][0] = a[i]; } }

任务六
#include <stdio.h> #define N 100 #include<string.h> void dec_to_n(int x, int n); // 函数声明 int main() { int x; while (printf("输入十进制整数: "), scanf_s("%d", &x) != EOF) { dec_to_n(x, 2); // 函数调用: 把x转换成二进制输出 dec_to_n(x, 8); // 函数调用: 把x转换成八进制输出 dec_to_n(x, 16); // 函数调用: 把x转换成十六进制输出 printf("\n"); } return 0; } // 函数定义 // 功能: 把十进制数x转换成n进制,打印输出 // 补足函数实现 void dec_to_n(int x, int n) { int a[N], t = 0; int b[N], c[N]; while (x>0){ a[t] = x % n; x = x / n; t++; } for (int h = t - 1; h >= 0; h--) { printf("%d", a[h]); } printf("\n"); }

任务七
#include <stdio.h> #define N 100 int t[]; // 函数声明 void input(int x[][N], int n); void output(int x[][N], int n); // 待补足函数is_magic声明 int is_magic(int x[][N], int n); int main() { int x[N][N]; int n; while (printf("输入n: "), scanf_s("%d", &n) != EOF) { printf("输入方阵:\n"); input(x, n); printf("输出方阵:\n"); output(x, n); if (is_magic(x, n)) printf("是魔方矩阵\n\n"); else printf("不是魔方矩阵\n\n"); } return 0; } // 函数定义 // 功能: 输入一个n*n的矩阵x void input(int x[][N], int n) { int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) scanf_s("%d", &x[i][j]); } } // 功能: 输出一个n*n的矩阵x void output(int x[][N], int n) { int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) printf("%4d", x[i][j]); printf("\n"); } } // 功能: 判断一个n阶方阵是否为魔方矩阵,如果是,返回1,否则,返回0 // 待补足函数is_magic定义 int is_magic(int x[][N], int n) { int total = n * (n*n+ 1) / 2; int exit[N * N + 1] = { 0 }; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int ans = x[i][j]; if (ans<1 || ans>n * n || exit[ans]) { return 0; } exit[ans] = 1; } } for (int i = 0; i < n; i++) { int add = 0; for (int j = 0; j < n; j++) { add += x[i][j]; } if (add != total) { return 0; }//计算行; } for (int i = 0; i < n; i++) { int add = 0; for (int j = 0; j < n; j++) { add += x[j][i]; } if (add != total) return 0; //计算列; int a = 0; for (int i = 0; i < n; i++) { a += x[i][i]; } if (a != total) { return 0; } }//计算主对角线; int b=0; for (int i = 0; i < n; i++) { b += x[i][n - i-1]; } if (b!= total) { return 0; }//计算fu对角线; return 1; }


