如何将数组中的前N个数逆序排列?

[复制链接]
查看11 | 回复2 | 2008-6-14 22:21:27 | 显示全部楼层 |阅读模式
如果函数main中定义了int a[N],请编写函数g,将数组a中的前n项数据逆序,并在函数main中测试。例如数组中原来的内容是{0,1,2,3,4,5,6,7,8,9},则前6向逆序后将变成{5,4,3,2,1,0,6,7,8,9}
我的程序两次都输出原始数组.最好能帮我找出程序中的错误.
#include
int a[10];
int b[10];
void main()
{
int i,j,n;
void g();
printf("please input 10 numbers:\n");
for(i=0;i<10;i++)scanf("%d",&a);
i=0;
for(j=0;j<10;j++){printf("%d ",a);
i++;}
i=0;
for(j=0;j<10;j++){b[j]=a;i++;}
printf("\nplease input the number about n:\n");
scanf("%d",&n);
g(n);
for(j=0;j<10;j++){printf("%d ",b[j]);}
printf("\n");
}
void g(int x)
{int i,b[10],j=0;
for(i=0;i<x;i++)
{b[j]=a[x-i-1];
j++;
}
}
按一楼的方法试了,不行,还是输出原数组.

回复

使用道具 举报

千问 | 2008-6-14 22:21:27 | 显示全部楼层
void fun(int a[],int n){int t;for(int i=0;i<n/2;i++){t=a;a=a[n-i];a[n-i]=t;}return;}交换必须在N/2次你交换了N次等于又交换回来了
回复

使用道具 举报

千问 | 2008-6-14 22:21:27 | 显示全部楼层
int a[10]; int b[10]; 没初始化void g(); 函数不符for(j=0;j<10;j++){printf("%d ",a); i++;} 和j没关系吗for(j=0;j<10;j++){b[j]=a;i++;} 没有中间变量b[j]消失了{b[j]=a[x-i-1]; 没有中间变量你自己不要
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行