鬼魅王子 发表于 2019-10-26 18:22

C语言数组题目

本帖最后由 鬼魅王子 于 2019-10-26 18:24 编辑

题目:
将二维数组a表示的矩阵每行各元素循环左移n个数

1 2 3 4 5
11 12 13 14 15
21 22 23 24 25

例如左移两个
变成

34 512
13 14 15 11 12
23 24 25 21 22


我的代码运行一直是错的求看哪里错了
#include <stdio.h>
int main()
{
      int a={{1,2,3,4,5},{11,12,13,14,15},{21,22,23,24,25}};
      int n=0,j,k;
      printf("循环左移几个数:");
      scanf("%d",&n);
      
      for(j=0;j<=2;j++)
      {
                for(k=0;k<=n-1;k++)
                {
                        int t;
                        t=a,a=a,a=t;
                }
      }
      
      for(j=0;j<=2;j++)
      {
                for(k=0;k<=4;k++)
                {
                        printf("%d ",a);
                }
                printf("\n");
      }
      
      
      
      return 0;
}

乎乎 发表于 2019-10-26 19:05

scanf后加_s

鬼魅王子 发表于 2019-10-26 19:09

乎乎 发表于 2019-10-26 19:05
scanf后加_s

怎么加?

乎乎 发表于 2019-10-26 19:11

scanf("%d",&n);改为scanf_s("%d",&n);

鬼魅王子 发表于 2019-10-26 19:11

乎乎 发表于 2019-10-26 19:11
scanf("%d",&n);改为scanf_s("%d",&n);

scanf_s()是什么意思我还没用过

鬼魅王子 发表于 2019-10-26 19:12

乎乎 发表于 2019-10-26 19:11
scanf("%d",&n);改为scanf_s("%d",&n);

结果还是错的

鬼魅王子 发表于 2019-10-26 19:17

已解决
修改换位代码
#include <stdio.h>
int main()
{
        int a={{1,2,3,4,5},{11,12,13,14,15},{21,22,23,24,25}};
        int n=0,j,k;
        printf("循环左移几个数:\n");
        scanf("%d",&n);
       
        for(j=0;j<=2;j++)
        {
                for(k=0;k<=n-1;k++)
                {
                        int t;
                        t=a,a=a,a=t;
                }
        }
       
        for(j=0;j<=2;j++)
        {
                for(k=0;k<=4;k++)
                {
                        printf("%d ",a);
                }
                printf("\n");
        }
       
       
       
        return 0;
}

逍遥枷锁 发表于 2019-10-26 19:27

scanf_s("%d", &n);安全性问题,可以新建空项目,不要用默认模块。

乎乎 发表于 2019-10-26 20:09

#include <stdio.h>
int main()
{
        int a = { {1,2,3,4,5},
                                  {11,12,13,14,15},
                                {21,22,23,24,25} };
        int n = 0, j, k;
       
        printf("循环左移几个数:");
        scanf_s("%d", &n);

        for (j = 0; j <=2; j++)
        {
                for (k = 0; k <= n; k++)
                {
                        int t;
                        t = a,
                                a = a;
                        a = t;
                        if (k >= 3) {
                                t = a,
                                        a = a;
                                a = t;
                        }
                }
        }

        for (j = 0; j <= 2; j++)
        {
                for (k = 0; k <= 4; k++)
                {
                        printf("%d ", a);
                }
                printf("\n");
        }

        return 0;
}
不好意思,我是菜鸟,我是这样解决的

鬼魅王子 发表于 2019-10-26 20:12

乎乎 发表于 2019-10-26 20:09
#include
int main()
{


测试是错误的
页: [1] 2
查看完整版本: C语言数组题目