【c】数组元素移动

本题的难点之处就是不让你创建新的数组,而且移动的距离也没有给限制,比如有7个数,本题没有限制必须移动距离小于7,也可能移动的距离大于7,甚至更多,下面·附上我的代码

#include<stdio.h>

int main()
{
	int n,b;
	scanf("%d %d",&n,&b);
	int arr[n];
	for(int i=0;i<n;i++)
	{

		scanf("%d",&arr[i]);
	}
	if(n>b)
	{
		for(int i=n-b;i<n;i++)
	    {
	    	printf("%d ",arr[i]);
	    }
	    for(int i=0;i<n-b;i++)
    	{
    		if(i==n-b-1)
	   	    printf("%d",arr[i]);
	   	    else
	   	    printf("%d ",arr[i]);
    	}
	}
	if(b>n)
	{
    	 b=b%n;
    		for(int i=n-b;i<n;i++)
	        {
	            printf("%d ",arr[i]);
	        }
	        for(int i=0;i<n-b;i++)
    	    {
    	    	if(i==n-b-1)
    	    	printf("%d",arr[i]);
				else
	   	        printf("%d ",arr[i]);
    	    }
    	    
	}
	






	return 0;
}

不能创建数组保存,那为什么不能直接打印,打印肯定也是先打印后面移动到前面的数,在打印前面移动到后面的数,我们只需要分清情况就好了

我的代码还是有些臃肿,for循环本来可以不加if,但是为了配合条件,最后一个输出的数字不能带空格,只好又加if了

欢迎各位大佬指出不足之处,谢谢

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值