从键盘输入一个长度为N(N为10)的整型数组,而后将数组中小于零的元素移动到数组的前端,大于零的元素移动到数组的后端,等于零的元素留在数组中间,前、后端要分别保持数组中原来的先后顺序。比如原始数组为:
从键盘输入一个长度为N(N为10)的整型数组,而后将数组中小于零的元素移动到数组的前端,大于零的元素移动到数组的后端,等于零的元素留在数组中间,前、后端要分别保持数组中原来的先后顺序。比如原始数组为:2 -5 -89 75 0 -89 0 93 48 0,经过处理后的数组为:-5 -89 -89 0 0 0 2 75 93 48。由于不要求数组有序,所以不允许用排序方法。要求按如下函数原型编写程序
·
从键盘输入一个长度为N(N为10)的整型数组,而后将数组中小于零的元素移动到数组的前端,大于零的元素移动到数组的后端,等于零的元素留在数组中间,前、后端要分别保持数组中原来的先后顺序。比如原始数组为:2 -5 -89 75 0 -89 0 93 48 0,经过处理后的数组为:-5 -89 -89 0 0 0 2 75 93 48。由于不要求数组有序,所以不允许用排序方法。 要求按如下函数原型编写程序: void Rearrange(int a[], int n); **输入格式要求:"%d" 提示信息:"Input %d integer number\n" **输出格式要求:"%5d" 程序运行示例如下: Input 10 integer number 2 -5 -89 75 0 -89 0 93 48 0↙ -5 -89 -89 0 0 0 2 75 93 48
#include <stdio.h>
#define N 10
void Rearrange(int a[], int n);
int main()
{
int a[N];
int i;
printf("Input %d integer number\n", N);
for (i=0; i<N; i++)
{
scanf("%d", &a[i]);
}
Rearrange(a, N);
for (i=0; i<N; i++)
{
printf("%5d", a[i]);
}
printf("\n");
return 0;
}
void Rearrange(int a[], int n)
{
int i, j, b[N];
for (i=0, j=0; i<n; i++)
{
if (a[i] < 0)
{
b[j++] = a[i];
}
}
for (i=0; i<n; i++)
{
if (a[i] == 0)
{
b[j++] = a[i];
}
}
for (i=0; i<n; i++)
{
if (a[i] > 0)
{
b[j++] = a[i];
}
}
for (i=0; i<n; i++)
{
a[i] = b[i];
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)