日期:2023-11-18
一:个人对于矩阵元素移位的一些想法
对于单行元素的迁移,可利用循环遍历实现调取元素a并对其复制元素c,但考虑到数组储存的顺序问题,对于元素c无法直接衔接赋值,而是取元素b实现间接赋值,此步骤实现与内循环,无需对于元素b的值进行清空或者是覆盖。
对于单列元素:与行元素不同的只有循环的条件区分,列数的递增不同于行数的递增,涉及程序时要考虑对位元素的移动方向及其本身位置与应该移动到的位置的数理逻辑。
二:个人对于程序设计时几种方法的思考
一:遍历矩阵数组元素并实现数组逻辑内的赋值调换,单存实现在矩阵的数组遍历中调换元素位置,并依据题目要求输出所有元素。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int s[100];
int t[100];
int n, m,j,i;
int z = 0,num;
scanf("%d%d", &n, &m);
num = m;
for (i = 0; i < n; i++)
{
scanf("%d", &s[i]);
}
for (j = n - m; j < n; j++)
{
t[j] = s[z];
z++;
}
for (j = 0; j <=(n-m-1); j++)
{
t[j] = s[num];
num++;//注意循环执行语句不能有改变for循环的判断条件的情况出现
}
for (j = 0; j < n; j++)
{
if (j == 0)
{
printf("%d", t[j]);
}
else
{
printf(" %d", t[j]);
}
}
return 0;
}
方法二:通过数学逻辑分析特定位移量对于矩阵元素排列的影响,并设计出相应的判断语句实现数据分割和区块判断
#include <stdio.h>
int main()
{
int n, m, a[110];
int i;
scanf("%d %d", &n, &m);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
//8 3
//1 2 3 4 5 6 7 8
//4 5 6 7 8 1 2 3
m %= n;
if (n == m) {
for (i = 0; i < n; i++) {
if (i == 0)
printf("%d", a[i]);
else
printf(" %d", a[i]);
}
}
else {
for (i = m; i < n; i++) {
if (i == m)
printf("%d", a[i]);
else
printf(" %d", a[i]);
}
for (i = 0; i < m; i++)
printf(" %d", a[i]);
}
}