实验4
task1

Q1:是 一样
Q2:是 不一样 相差 sizeof(int)*二位数组列数 字节,代表二维数组按行存储时行与行的内存偏差
task2

Q1:形参:字母 加英文括号。括号内可以没有字母;实参:字母+英文括号。括号内必须有字母N。
暗示
Q2:1.输入数组里的元素。2.计算除去最高和最低的均值。
task3

Q1 形参:字母+2个英文括号(里面第一个省略,第二个不省)实参:字母+2个英文括号(里面都不省
Q2 第二个不能省略
Q3:1.输出二维数组的值。2.初始化一个二维数组
task4
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 100
// 函数声明
// 待补足
// xxx
void input(int x[N], int n);
double median(int x[N], int n);
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;
}
// 函数定义
// 待补足
// xxx
void input(int x[N], int n)
{
int i;
for (i = 0;i <= n - 1;++i)
scanf("%d", &x[i]);
}
double median(int x[N], int n)
{
double mid;
int i, j, t;
for (i = n - 1;i >= 1;--i)
for (j = 0;j < i;++j)
if (x[j] > x[j + 1])
{
t = x[j];
x[j] = x[j + 1];
x[j + 1] = t;
}
if (n % 2 != 0)
mid = x[(n - 1) / 2];
if (n % 2 == 0)
mid = (double)(x[n / 2 - 1] + x[(n / 2)]) / 2;
return mid;
}

task5
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 100
// 函数声明
void input(int x[][N], int n);
void output(int x[][N], int n);
void rotate_to_right(int x[][N], int n);
// 函数rotate_to_right声明
int main() {
int x[N][N];
int n;
printf("Enter n: ");
scanf("%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("%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 i, j, t;
for (i = 0;i < n;++i) {
t = x[i][n - 1];
for (j = n - 1;j > 0;--j) {
x[i][j] = x[i][j - 1];
}
x[i][0] = t;
}
}

task6
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 100
void dec_to_n(int x, int n); // 函数声明
int main() {
int x;
while(printf("输入十进制整数: "), scanf("%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进制,打印输出
// 补足函数实现
// xxx
void dec_to_n(int x, int n) {
char map[] = "0123456789ABCDEF";
char ans[N];
int d, r;
int cnt = 0;
while (1) {
r = x % n;
d = x / n;
ans[cnt++] = map[r];
if (d == 0)
break;
x = d;
}
ans[cnt] = '\0';
for (int i = 0; i < cnt / 2; i++) {
char temp = ans[i];
ans[i] = ans[cnt - i - 1];
ans[cnt - i - 1] = temp;
}
printf("%s\n", ans);
}


浙公网安备 33010602011771号