吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1856|回复: 12
收起左侧

[已解决] C语言数组题目

[复制链接]
鬼魅王子 发表于 2019-10-26 18:22
本帖最后由 鬼魅王子 于 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


我的代码运行一直是错的求看哪里错了
[C] 纯文本查看 复制代码
#include <stdio.h>
int main()
{
        int a[3][5]={{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[j][k],a[j][k]=a[j][4-n],a[j][4-n]=t;
                }
        }
        
        for(j=0;j<=2;j++)
        {
                for(k=0;k<=4;k++)
                {
                        printf("%d ",a[j][k]);
                }
                printf("\n");
        }
        
        
        
        return 0;
} 

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

乎乎 发表于 2019-10-26 19:05
scanf后加_s
 楼主| 鬼魅王子 发表于 2019-10-26 19:09
乎乎 发表于 2019-10-26 19:11
 楼主| 鬼魅王子 发表于 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
已解决
修改换位代码
[C] 纯文本查看 复制代码
#include <stdio.h>
int main()
{
	int a[3][5]={{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[j][k],a[j][k]=a[j][k+n+1],a[j][k+n+1]=t;
		}
	}
	
	for(j=0;j<=2;j++)
	{
		for(k=0;k<=4;k++)
		{
			printf("%d ",a[j][k]);
		}
		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[3][5] = { {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[j][k],
                                a[j][k] = a[j][2 + k];
                        a[j][2 + k] = t;
                        if (k >= 3) {
                                t = a[j][k],
                                        a[j][k] = a[j][2 + k];
                                a[j][2 + k] = t;
                        }
                }
        }

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

        return 0;
}
不好意思,我是菜鸟,我是这样解决的
 楼主| 鬼魅王子 发表于 2019-10-26 20:12
乎乎 发表于 2019-10-26 20:09
#include
int main()
{

测试是错误的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-11 01:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表