有m 个数,使前面的各位顺序向后移动m个位置,最后m个变为前面m个 。
/*我这个程序编译能通过但是运行会停止是哪里错了求大神指教* /# include<stdio.h>
# include<stdlib.h>
void main(){
voidyidong(int x[],int n1,int n2);
int a;
int m;
printf("please enter 10 numbers:\n");
for(int i=0;i<10;i++){
scanf("%d",&a);
}
printf("请输入一个小于10的数m=");
fflush(stdin);
scanf("%d",&m);
yidong(a,10,m);
for(int j=0;j<10;j++) {
printf("%d ",a);
}
}
voidyidong(int x[],int n1,int n2){//
int *p=(int *)malloc(n2*sizeof(int));
int c=n1-n2;//
int j=0;
for(;c<n1;c++,j++){
*(p+j)=x;
}
int y=n1-n2-1;
int z=n1-1;
for(;y<0;y--,z--){
x=x;
}
int i,k;
for(i=0,j=0;i<n2;i++,k++){
x= *(p+k) ;
}
}
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int moveArray(int *array,int n,int m,int **pArray)
{
int ret=0;
if (NULL==array || 0==n || 0==m || NULL==pArray)
{
ret=-1;
return ret;
}
{
int *p=NULL;
int i=0,j=0;
p=(int *)malloc(sizeof(int)*n);
if (!p)
{
ret -2;
return ret;
}
for (i=0,j=m;j<n;i++,j++)
{
p=array;
}
for (j=0;j<m;i++,j++)
{
p=array;
}
*pArray=p;
return ret;
}
}
void printArray(int *array,int n)
{
if (NULL== array || 0==n)
{
return;
}
{
int i;
for (i=0;i<n;i++)
{
printf("%d\n",array);
}
return;
}
}
void main()
{
int a={0};
int i,m,ret=0;
int *nArray=NULL;
printf("请给数组赋值:\n");
for (i=0;i<10;i++)
{
scanf("%d",&a);
}
printf("移动前的数组:\n");
printArray(a,10);
printf("请输入后移的单位m:");
scanf("%d",&m);
ret=moveArray(a,10,m,&nArray);
if (ret!=0)
{
printf("The Function moveArray() is Error:%d",ret);
}
printf("移动后的数组:\n");
printArray(nArray,10);
system("pause");
return;
} 你修改的是形参的值 #define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int moveArray(int **array,int n,int m)
{
int ret=0;
if (NULL==array || 0==n || 0==m )
{
ret=-1;
return ret;
}
{
int *p=NULL;
int *a=array;
int i=0,j=0;
p=(int *)malloc(sizeof(int)*(n-m));
if (!p)
{
ret -2;
return ret;
}
for (i=0,j=m;j<n;i++,j++)
{
p=a;
}
for (i=0,j=0;i<n-m;i++,j++)
{
a=p;
}
return ret;
}
}
void printArray(int *array,int n)
{
if (NULL== array || 0==n)
{
return;
}
{
int i;
for (i=0;i<n;i++)
{
printf("%d\n",array);
}
return;
}
}
void main()
{
int a={0};
int i,m,ret=0;
printf("请给数组赋值:\n");
for (i=0;i<10;i++)
{
scanf("%d",&a);
}
printf("移动前的数组:\n");
printArray(a,10);
printf("请输入后移的单位m:");
scanf("%d",&m);
ret=moveArray(&a,10,m);
if (ret!=0)
{
printf("The Function moveArray() is Error:%d",ret);
}
printf("移动后的数组:\n");
printArray(a,10);
system("pause");
return;
} Mr.HO 发表于 2018-6-9 00:29
你修改的是形参的值
可以加个好友吗 111222233333 发表于 2018-6-9 15:27
可以加个好友吗
有什么不明白的你直接说吧
页:
[1]