编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序

编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序时不使用辅助数组)。如:输入5个数3、9、7、6、1,逆序存放后数组是1、6、7、9、3。

void invert(int a[ ],int n){

int temp;// 临时存储单元

// 以n/2为对称点,进行对称位置交换。

for(int i=0;i<n/2;i++){

// a[i]存放在临时存储单元

temp=a[i];

// 将i的对称的数据存到a[i]

a[i]=a[n-1-i];

// 将原a[i]中的数据(即temp),存放到i的对称点a[n-1-i]

a[n-1-i]=temp;

}

// 重新输出数组

for(int i=0;i<n;i++){

printf("%d\t",a[i]);

}

}

直接计数

计算一个排列的逆序数的直接方法是逐个枚举逆序,同时统计个数。例如在序列 { 2, 4, 3, 1 } 中,逆序依次为 (2,1),(4,3),(4,1),(3,1),因此该序列的逆序数为 4。

Visual Basic 6.0 编写的示例使用的就是直接计数的方法,函数 NiXushu 返回一个字符串的逆序数。

Private Function NiXuShu(ByVal l As String) As Long '逆序数计算

Dim i As Integer, j As Integer, c As Long

Dim n() As Integer

ReDim n(Len(l))

For i = 1 To Len(l)

n(i) = Val(Mid(l, i, 1))

For j = 1 To i - 1

If n(i) < n(j) Then

c = c + 1

End If

Next j

Next i

NiXuShu = c

End Function

以上内容参考:百度百科-逆序数

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-19
void invert(int a[ ],int n){
int temp;// 临时存储单元
// 以n/2为对称点,进行对称位置交换。
for(int i=0;i<n/2;i++){
// a[i]存放在临时存储单元
temp=a[i];
// 将i的对称的数据存到a[i]
a[i]=a[n-1-i];
// 将原a[i]中的数据(即temp),存放到i的对称点a[n-1-i]
a[n-1-i]=temp;
}

// 重新输出数组
for(int i=0;i<n;i++){
printf("%d\t",a[i]);

}

}

上面就是你要的函数,希望你能看懂。本回答被网友采纳
第2个回答  2010-05-18
Javascript 的..这只是个方法 ...

var s=new Array("1","2","3","4");
var d="";
for(i=s.length-1;i>=0;i--){
d+=s[i];
}
alert(d)本回答被网友采纳
第3个回答  2010-05-18
use strict;
use warnings;
print "how much number you want in put:";
my $tal=<>;
chomp($tal);
my @num;
for (my $i=0;$i<$tal;$i++){
$num[$i]=<>;
chomp $num[$i];
}
@num=reverse@num;
for(@num){
print "$_\n"
}

perl脚本这样搞定
第4个回答  2010-05-18
你没明确给出要求用什么语言编程。
相似回答