C语言:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数.写一函数实现
我写了程序 语法没有错误 但是没有办法把最后m个数变成前面m个数.以后长期定向提问
#include
int *p,n,m,a[100];
void swap(int *p,int n,int m)
{
int i,j,*t,b[100];
\x05t=b;
\x05for(j=n-1;j>=m;j--)
\x05{
\x05 *(t+j)=*(p+j);
\x05 }
for(i=m-1;i>=0;i--)
\x05 {
\x05\x05*(p+i+m)=*(p+i);
}
\x05for(j=n-1;j>=m;j--)
\x05{
\x05 *(p+j+m)=*(t+j);
\x05}
}\x05
int main()
{
\x05int i;
\x05printf("输入数据的个数以及想要从哪里开始移动:\n");
scanf("%d%d",&n,&m);
printf("输入移动前的数组为:\n");
for(i=0;i
人气:254 ℃ 时间:2019-11-02 02:46:17
解答
void swap(int *p,int n,int m)
{
\x05int i,j,*t,b[100];
\x05t=b;
\x05for(i=0;i=m;i--)
\x05{
\x05\x05p[i] = p[i-m];
\x05}
\x05for(i=0;i不是指针就错,而是你的算法有问题你的代码等价于 void swap(int *p, int n, int m) { int i,j,*t,b[100];t=b;for(j=n-1;j>=m;j--) {b[j]=p[j]; // 把m到n-1复制到b }for(i=m-1;i>=0;i--){ p[i+m]=p[i]; // 把前面m个往后面挪 }for(j=n-1;j>=m;j--){ p[j+m]=b[j]; // 这行在j=n-1的时候,p[j+m]已经越界了 } }
推荐
- c语言编程 有N个整数,使其前面各数顺序向后移动M个位置,最后M个数变成前面的M个数
- c语言题目 有n个整数,使前面各数顺序向后移动 m个位置,最后m个数变成最前面m个数,要求用指针.
- 一根2米长的圆柱形木料,横截面的半径是10厘米,沿横截面的直径垂直锯开,分成相等的两块,每块的体积和表面积各是多少?
- 春雷小学六年级两班同学共捐款五百九十八元帮助印度洋海啸受灾的国家六一班50人平均每人捐款6.2元六二班是四十八人平均人捐款多少元
- 某高山顶峰想设一旅游景点,需要开挖一条盘山公路,要求盘山公路的摩擦阻力是车重的0.1倍,机械效率是50%,若山高1500m,则要开挖多长的盘山公路
- 1.若f(2x+1)的定义域为【1,4】,则f(x+3)的定义域是A.[0,3/2] B.[0,6] C.[1/2,3/2] D.[3,9/2] 2.函数f(x)=1/(1+x的平方)(x∈R)的值域是 A.(0,1) B.(0,1] C.
- The bird tried to get away from the cage.
- 六分之五表示把单位“1”平均分成多少份,表示这样多少份,它的分数单位是多少?
猜你喜欢