C语言数组题

题目:

将一副扑克牌编号为 1,2,3,…,53,54,以某种特定的方式洗牌,这种方式是将这 副牌分成两半,然后将它们交叉,并始终保持编号为:1,28,2,29,…,53,27,54。两次洗 牌后结果为:1,41,28,15,2,42,…,43,40,27,14,54。输出经过 m 次这样洗牌后的结果。 (要求使用:一维数组+嵌套 for,以及最后一个数字后面不能出现”,”(逗号)

示例 1:

输入:2

输出: 1,41,28,15,2,42,29,16,3,43,30,17,4,44,31,18,5,45,32,19,6,46,33,20,7,47,34,21,8,48,35, 22,9,49,36,23,10,50,37,24,11,51,38,25,12,52,39,26,13,53,40,27,14,54

示例 2:

输入:4

输出: 1,11,21,31,41,51,8,18,28,38,48,5,15,25,35,45,2,12,22,32,42,52,9,19,29,39,49,6,16,26, 36,46,3,13,23,33,43,53,10,20,30,40,50,7,17,27,37,47,4,14

代码加思路:


#include<stdio.h>
int main()
{
    int a[27],b[27],c[54],i,j,n,m;//定义出三个数组,
                        //把c[54]分成2部分方便交换运算 
    scanf("%d",&m);//m代表洗m次 
    for(i=1;i<=27;i++)//定义出a[i]b[]的大小 
    {
        a[i]=i;
        b[i]=i+27;
    }
    for(n=1;n<=m;n++)//洗一次m=1:c[1]=a[1],c[2]=b[1],c[3]=a[2];
    {
        for(i=1;i<=27;i++)//将a[]b[]融入c[] 
        {
            c[2*i-1]=a[i];
            c[2*i]=b[i];
        }
        for(i=1;i<=27;i++)//洗后重新赋值 
        {
            a[i]=c[i];
            b[i]=c[i+27];
        }
    }
    for(i=1;i<=54;i++)//输出格式问题 
    {
        if(c[i]==54)
        printf("%d",c[i]);
        else
        printf("%d,",c[i]);
    }
    return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值