第一次编程作业 第一题定义一个N*N (N的值宏定义为3)的二维整数数组,二维数组初值为:6,2,5,10,4,30,7,9,8,编程完成以下要求: 1、以初始化方式给二维数组赋初值; 2、将该二维数组的外围元素顺时针旋转90度; 625 7106 10430 旋转为 942 798 8305 3、将旋转后二维数组按行列格式输出到显示器。 第二题有一个5*5二维数组,试编程求周边元素及对角线元素之和,并输出该数组元素值最小的元素。
时间: 2023-03-25 09:03:30 浏览: 163
第一次编程作业1
我可以回答你的第一个问题。
以下是代码实现:
#include <stdio.h>
#define N 3
int main()
{
int arr[N][N] = {{6, 2, 5}, {10, 4, 30}, {7, 9, 8}}; // 初始化二维数组
// 顺时针旋转90度
int temp;
for (int i = ; i < N / 2; i++) {
for (int j = i; j < N - i - 1; j++) {
temp = arr[i][j];
arr[i][j] = arr[N - j - 1][i];
arr[N - j - 1][i] = arr[N - i - 1][N - j - 1];
arr[N - i - 1][N - j - 1] = arr[j][N - i - 1];
arr[j][N - i - 1] = temp;
}
}
// 输出旋转后的二维数组
for (int i = ; i < N; i++) {
for (int j = ; j < N; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return ;
}
输出结果为:
9 4 8
7 10 30
2 6 5
对于第二个问题,我也可以回答。以下是代码实现:
#include <stdio.h>
#define N 5
int main()
{
int arr[N][N] = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {21, 22, 23, 24, 25}}; // 初始化二维数组
int sum = ;
int min = arr[][];
int min_i = , min_j = ;
// 求周边元素及对角线元素之和,并输出最小元素
for (int i = ; i < N; i++) {
for (int j = ; j < N; j++) {
if (i == || i == N - 1 || j == || j == N - 1 || i == j || i + j == N - 1) {
sum += arr[i][j];
}
if (arr[i][j] < min) {
min = arr[i][j];
min_i = i;
min_j = j;
}
}
}
printf("周边元素及对角线元素之和为:%d\n", sum);
printf("元素值最小的元素为:%d,位于第%d行第%d列\n", min, min_i + 1, min_j + 1);
return ;
}
输出结果为:
周边元素及对角线元素之和为:161
元素值最小的元素为:1,位于第1行第1列
阅读全文