标题:【求助】方阵循环右移,请道友大显身手!!!
只看楼主
家勒比好哦
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-12-5
 问题点数:0 回复次数:1 
【求助】方阵循环右移,请道友大显身手!!!
读入两个正整数m和n(1<=n<=6),再读入n阶的方阵a,将该方阵中的每个元素循环向右移m个位置,即将第0、1···n-1列变为n-m、n-m+1···n-1、0、1、n-m-1列移动后的方阵可以存到另一个二维数组中。 1 2 3  右移1    2 3 1
       4 5 6           5 6 4
       7 8 9           8 9 7
我写的好像不怎么好,道友有高见么,我是小白来的。
#include"stdio.h"
int main()
{
    int a[6][6],b[6][6];
    int i,j,n,m,c;
    scanf("%d,%d",&n,&m);
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            a[i][j]=i*n+j+1;
    for(i=0;i<n;i++)
        for(c=m,j=0;j<n-m;j++,c++)   
            b[i][j]=a[i][c];
    for(i=0;i<n;i++)
        for(c=0,j=n-m;j<n;j++,c++)
            b[i][j]=a[i][c];
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf(" %2d",b[i][j]);
        printf("\n");
    }
    return 0;
}

[此贴子已经被作者于2017-12-8 20:11编辑过]

搜索更多相关主题的帖子: 方阵 循环 右移 for i++ 
2017-12-08 19:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 

#include <stdio.h>
#include <string.h>
int main()
{
    int a[6][6], b[6][6];
    int i,j,n,m;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            a[i][j]=i*n+j+1;
    m %= n;
    for (i=0; i<n; ++i)
    {
        memmove(&b[i][0], &a[i][m], sizeof(int)*(n-m));
        memmove(&b[i][n-m], &a[i][0], sizeof(int)*(m));
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf(" %2d",b[i][j]);
        printf("\n");
    }
    return 0;
}


[此贴子已经被作者于2017-12-9 07:22编辑过]

收到的鲜花
  • 家勒比好哦2017-12-09 16:21 送鲜花  2朵   附言:我很赞同
2017-12-09 07:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483226-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.492017 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved