编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序相关的知识,希望对你有一定的参考价值。
编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序时不使用辅助数组)。如:输入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
以上内容参考:百度百科-逆序数
参考技术A 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]);
上面就是你要的函数,希望你能看懂。 参考技术B javascript 的..这只是个方法 ...
var s=new Array("1","2","3","4");
var d="";
for(i=s.length-1;i>=0;i--)
d+=s[i];
alert(d) 参考技术C 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脚本这样搞定 参考技术D 你没明确给出要求用什么语言编程。
[PTA]练习7-3 将数组中的数逆序存放
[PTA]练习7-3 将数组中的数逆序存放
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
- 提交结果:
- 源码:
#include<stdio.h>
int main(void)
{
int array[10];
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) //读入数组
{
scanf("%d", &array[i]);
}
for (int j = 0; j < n / 2; j++) //将数组元素首尾依次交换,实现逆序排放
{
int temp;
temp = array[j];
array[j] = array[n - (j + 1)]; //array[0]<->array[n-1],array[1]<->array[n-2]
array[n - (j + 1)] = temp;
}
for (int k = 0; k < n; k++) //输出逆序存放后的字符串
{
printf("%d", array[k]);
if (k != n - 1) //相邻数字中间用一个空格分开,行末不得有多余空格。
{
printf(" ");
}
}
return 0;
}
以上是关于编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序的主要内容,如果未能解决你的问题,请参考以下文章