c语言格式错误求助

Cwsy_C 2017-10-26 06:29:06
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1……AN-1)变换为(AN-M …… AN-1 A0 A1……AN-M-1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:每个输入包含一个测试用例,第1行输入N ( 1<=N<=100)、M(M>=0);第2行输入N个整数,之间用空格分隔。

输出格式:在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
#include <stdio.h>

int main()
{
int m,n;
scanf("%d %d",&m,&n);
int i;
int a[1001];
for (i=0; i<m; i++) {
scanf("%d",&a[i]);
}
int k=m-n;
if (k>0){
for (int j=0; j<n; j++) {
printf("%d ",a[k++]);

}
for (int j=0; j<k; j++) {
if (j!=m-n-1)
printf("%d ",a[j]);
else
printf("%d",a[j]);
}
}
else{
k=m-n%m;
for (int j=0; j<(n%m); j++) {
printf("%d ",a[k++]);
}
for (int j=0; j<k; j++) {
if (j!=k-1)
printf("%d ",a[j]);
else
printf("%d",a[j]);
}
}
return 0;
}
一直提示格式错误,减了3分,到底是哪里格式错误了?
...全文
886 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2017-10-27
  • 打赏
  • 举报
回复
int *array,n,size,i;
	int* arrtmp ;
	int* arrtmp1;
	scanf("%d %d",&size,&n);
	array = (int*)malloc(sizeof(int)*size);
	for( i=0;i<size;i++)
	{
		scanf("%d",array+i);
	}
	arrtmp = (int*)malloc(sizeof(int)*(size-n));
	arrtmp1 = (int*)malloc(sizeof(int)*(n));
	memcpy(arrtmp,array,sizeof(int)*(size-n));
	memcpy(arrtmp1,array+(size-n),sizeof(int)*n);
	memcpy(array,arrtmp1,sizeof(int)*n);
	memcpy(array+n,arrtmp,sizeof(int)*(size-n));
	for( i=0;i<size;i++ )
	{
		printf("%d ",array[i]);
	}
自信男孩 2017-10-27
  • 打赏
  • 举报
回复
#include <stdio.h>

int main()
{
    int m,n;
    int i, j;
    scanf("%d %d",&m,&n);
    static int a[1001];
    for (i=0; i < m; i++) {
        scanf("%d",&a[i]);
    }
    int k=m-n;
    if (k>0){
        for (j=0; j<n; j++) {
            printf("%d ",a[k++]);

        }
        for (j=0; j<k; j++) {
            if (j!=m-n-1)
                printf("%d ",a[j]);
            else
                printf("%d",a[j]);
        }
    }
    else{
        k=m-n%m;
        for (j=0; j<(n%m); j++) {
            printf("%d ",a[k++]);
        }
        for (j=0; j<k; j++) {
            if (j!=k-1)
                printf("%d ",a[j]);
            else
                printf("%d ",a[j]);
        }
    }
    return 0;
}
C语言不支持在for循环里定义循环变量,比如for (int j = 0; j < k; j++)只有C++以上的高级语言才支持这种写法
CT8100 2017-10-27
  • 打赏
  • 举报
回复
这个是实际上就是求余数把,这个余数就是最少移动次数。

33,320

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧