要求将一维数组a[]中的元素循环右移m次,如a[]={1,2,3,4,5}右移3次a[]={3,4,5,1,2},求指点代码有何问题。
求教+是要求一步到位的那种#include<stdio.h>#definen5voidmain(){inta[n],b[n],m,d,i;for(i=0;i<n;i++)...
求教+是要求一步到位的那种
#include<stdio.h>
#define n 5
void main()
{
int a[n],b[n],m,d,i;
for(i=0;i<n;i++) a[i]=i+1;
printf("右移前数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
printf("右移次数:");scanf("%d",&m);
i=0;
while(i<n)
{ d=(i+m)%5;
b[d]=a[i];
i++;
}
a[i]=b[i];
printf("右移后数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
} 展开
#include<stdio.h>
#define n 5
void main()
{
int a[n],b[n],m,d,i;
for(i=0;i<n;i++) a[i]=i+1;
printf("右移前数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
printf("右移次数:");scanf("%d",&m);
i=0;
while(i<n)
{ d=(i+m)%5;
b[d]=a[i];
i++;
}
a[i]=b[i];
printf("右移后数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
} 展开
4个回答
展开全部
你把代码改成下面的样子吧,就可以了
#include <cstdio>
#include <iostream>
#define n 5
int main()
{
int a[n],b[n],m,d,i;
for(i=0;i<n;i++) a[i]=i+1;
printf("右移前数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
printf("右移次数:");scanf("%d",&m);
i=0;
while(i<n)
{
for(int iter = 0; iter < n; iter++)
{
d=(i+m)%5;
b[d]=a[i];
}
i++;
}
for(int iter = 0; iter < n; iter++)
a[iter]=b[iter];
printf("右移后数组a[]=");
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
system("PAUSE");
return 0;
}
#include <cstdio>
#include <iostream>
#define n 5
int main()
{
int a[n],b[n],m,d,i;
for(i=0;i<n;i++) a[i]=i+1;
printf("右移前数组a[]=");
for(i=0;i<n;i++) printf("%4d",a[i]);
printf("\n");
printf("右移次数:");scanf("%d",&m);
i=0;
while(i<n)
{
for(int iter = 0; iter < n; iter++)
{
d=(i+m)%5;
b[d]=a[i];
}
i++;
}
for(int iter = 0; iter < n; iter++)
a[iter]=b[iter];
printf("右移后数组a[]=");
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
system("PAUSE");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#define MAX_LEN 1000
void LoopMove(char* pStr,int m)
{
int n = strlen(pStr)-m;
char temp[MAX_LEN];
strcpy(temp,pStr+n);
strcpy(temp+m,pStr);
*(temp+strlen(pStr)) = '\0';
strcpy(pStr,temp);
}
这个比较简单。。。
void LoopMove(char* pStr,int m)
{
int n = strlen(pStr)-m;
char temp[MAX_LEN];
strcpy(temp,pStr+n);
strcpy(temp+m,pStr);
*(temp+strlen(pStr)) = '\0';
strcpy(pStr,temp);
}
这个比较简单。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请将a[i]=b[i];改成 *a=&b; 就行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询