用C语言把一个数组中的值按逆序重新存放?

输入几个数字不定,那几个数字不定。用C++的软件
2024-11-14 07:38:49
推荐回答(3个)
回答1:

楼主你好
代码如下:
#include
#define MAX 100

int main()
{
int a[MAX],n=0,i,j;
printf("请输入任意个数(用空格间隔每一个数 回车结束输入):\n");
do{
scanf("%d",a+n);
n++;
}while(getchar()!='\n');

j=n-1,i=0;
while(i<=j)//采用二分法逆序储存
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
j--;
}

for(j=0;j printf("%d\n",a[j]);
}

希望能帮助你哈

回答2:

可以用下面的方法实现,我的运行环境是vs2008,测试正常。
#include"stdafx.h" //不是vs环境的可以去除
#include
#include
void*nizhi(int *newarry,int a)
{ int mid=0;
/*newarry=(int*)malloc(a*sizeof(int));
if(newarry==NULL)
{
printf("分配空间失败!");
exit(1);
}*/
printf("请输入数组的元素,数字之间以空格分隔.\n");
for(int i=0;i scanf("%d",&newarry[i]);
printf("你新建立的数组是:\n");
for(int i=0;i printf("%d\t",newarry[i]);
for(int j=a-1,i=0;i<=j;i++,j--)
{
mid=newarry[i];
newarry[i]=newarry[j];
newarry[j]=mid;
}
printf("\n逆序后的数组为:\n");
for(int i=0;i printf("%d\t",newarry[i]);
return newarry;
}
int _tmain(int argc, _TCHAR* argv[])//不是vs运行环境的话,自己修改成你使用的环境定义方式
{
int *arry,*p,n;
xunhuan: printf("请输入要建立的数组长度:");
scanf("%d",&n);
p=&n;
arry=(int*)malloc(n*sizeof(int));
if(arry==NULL)
{
printf("分配空间失败!");
return 0;
}
nizhi(arry,*p);
printf("\n循环执行:\n");
goto xunhuan;
return 0;
}
该程序可以循环执行,而且参数传递的是地址值,因此,你可以再次基础对nizhi函数中进行数组元素的增加、减少都是可以的,而且返回和最终存储都是修改后的数组,这也是使用指针的好处。你试试吧。

回答3:

好做