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 60 编写的示例使用的就是直接计数的方法,函数 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、首先以一个数组变量和一个数组长度变量。
2、接下来假设有一个数组交换的函数和一个输出的函数。
3、接下来我们开始编写逆序交换。
4、此时,我们开始swap交换函数。
5、然后我们定义函数声明。
6、然后再编写输出函数就可以了,全部代码如图。
#include <stdioh>
#define N 20
int main()
{
int i = 0, a[N];
do
{
scanf("%d", a + i);
} while (a[i++] > 0);
{
int j,t;
for(j=0,i-=2;j<i;j++,i--)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
/ 请在这里填写答案 /
}
for (i = 0; a[i] > 0; i++)
printf("%5d", a[i]);
return 0;
}
对半分,互换
按你的要求,10个数,读取到5,然后a[i]和a[9-i]互换
程序:
int main()
{
int a[10]={12,3,11,1,4,21,15,25,18,22};
int i,t;
for(i=0;i<5;i++) //互换
{ t=a[i];
a[i]=a[9-i];
a[9-i]=t;
}
for(i=0;i<10;i++)//输出换后的数组
printf("%d",a[i]);
return 0;
}
#include<stdioh>
int main()
{
int a[20]={1,0},i,n,j;
printf("请输入数组元素的个数:");
scanf("%d",&n);
printf("请输入数组元素:\n");
for(i=0;i<n;i++)
scanf("%d",&a<i>);
for(i=0;i<n/2;i++)
a<i>=a[n-1-i];
printf("逆序存放后的数组:\n");
for(i=0;i<n;i++)
printf("%d",a<i>);
return 0;
}
扩展资料:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
以上就是关于编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序全部的内容,包括:编写程序将一个数组中的数按逆序重新存放并输出(程序中数组的元素个数自定,逆序、c语言编程:将一个数组中的值按逆序重新存放,例如,原来顺序为8,6,5,4,3,要求改为3,4,5、c语言数组逆序问题 求助大佬等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)