⑴ 用c语言将一个数组中的值按逆序重新存放怎么操作
#include <stdio.h>
#define N 5
int main()
{ int a[N],i,temp;
printf("enter array a: ");
for (i=0;i<N;i++)
scanf("%d",&a[i]);
printf("array a: ");
for (i=0;i<N;i++)
printf("%4d",a[i]);
for (i=0;i<N/2;i++) //循环的作用是将对称的元素的值互换
{ temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf(" Now,array a: ");
for (i=0;i<N;i++)
printf("%4d",a[i]);
printf(" ");
return 0;
}
⑵ C语言:下列代码定义NxN数组并自动赋值,填空使数组行元素逆行放置并输出结果,咋写
(1)a[i][j]
(2)j=N-1
(3)a[i][k]=a[j][k]
(4)j--或j=j-1
⑶ c语言将数组中的数逆序存放
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
#include<stdio.h>
main()
{
int a[10],b[10],i,j,n,count=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a<i>);
}
for(j=n-1;j>=0;j--)
{
b[count]=a[j];
count++;
}
printf("%d",b[0]);
for(i=1;i<n;i++)
{
printf("%d",b<i>);
}
}
(3)c语言数组逆行扩展阅读:
用法:
1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。
格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。
要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。
2、printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。
⑷ C语言数组元素逆序排列怎么做
首先阐述一下逆序对的概念。假设有一个数组为Array[0..n] 其中有元素a[i],a[j].如果 当i<j时,a[i]>a[j],那么我们就称(a[i],a[j])为一个逆序对。
那么统计一个数组中的逆序对,有什么作用呢。逆序对可以反映插入排序的效率问题,如果逆序对数量多,那么插入排序的效率就低,反之亦然。
那么如何快速的找到逆序对的数量,同时又能够对数组进行排序,并且使得复杂度为O(n*logn)呢?这就可能是一个小问题
看到复杂度为n*logn 有一种亲切感,应为我们可以知道归并排序的时间复杂度为O(n*logn)。 同时归并排序是通过递归的方法建立递归树,利用最小的两个元素进行对比然后逐层向上进行递归,然后对比两个已经排好序的数组,得到最终完整的排好序的数组。
归并排序分为了3步骤;
第一步 拆分
第二步进行 计算两个同样类型但是规模较小的数组
第三步 合并两个已排好序的数组
因此从整个数组拆分过程中,我们将它不断进行拆分,而拆分得到的两个数组,又是和原数组目的和形式相同的(即都是要排序,同时如果不为最小还要进行以上3步)
这样可以想到递归解决问题,每一层进行相同的3步,知道不能进行位置。那么这个不能进行的判断显得格外重要。
那么加入了逆序对后,如何考虑呢,实际上很简单。以为从最下面的含两个元素的数组,到上层含多个元素的数组都有前后之分,这正好与逆序对性质相符,只要我
们找出前面那一个数组中假设L[i] 大于 后面一个数组中某个元素R[j]
然后就知道前面那个数组在该元素L[i]之后的元素都应该是大于R[j]的。因为在归并过程我们也进行了排序。
大概思路就是这样,以下是代码。
[cpp] view plain
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define Infinite_num 1000
int L[100];
int R[100];
int merge_sort(int Array[],int p,int q,int r)
{
int n1 = q-p+1;
int n2 = r-q;
for(int i=0;i<n1;i++)
{
L[i] = Array[p+i];
}
L[n1] = Infinite_num;
for(i=0;i<n2;i++)
{
R[i] = Array[q+i+1];
}
R[n2] = Infinite_num;
int inversions = 0;
int count = false;
int j=0;
i=0;
for(int k=p;k<=r;k++)
{
if(count==false &&(L[i]>R[j])&&(R[i]!=Infinite_num))
{
inversions = inversions+n1-i;
count = true;
}
if(L[i]<=R[j])
{
Array[k] = L[i];
i++;
}
else
{
Array[k] = R[j];
j++;
count = false;
}
}
return inversions;
}
int merge_inverse(int Array[],int p,int r)
{
int inversions = 0;
int q = -1;
if(p < r)
{
q = (p+r)/2;
inversions = inversions+merge_inverse(Array,p,q);
inversions = inversions+merge_inverse(Array,q+1,r);
inversions = inversions+merge_sort(Array,p,q,r);
}
return inversions;
}
int main(int argc, char* argv[])
{
int Array[] = {1,3,7,8,2,4,6,5};
int inverse_times = 0;
inverse_times = merge_inverse(Array,0,7);
printf("%d",inverse_times);
return 0;
}
⑸ 用C语言编程将一个数组的元素值按逆序重新排放。
#include <stdio.h>
#define N 10
void main()
{
int a[N],i,temp;
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("输入的数字是:\n");
for(i=0;i<N;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i<N/2;i++)
{
temp=a[i];
a[i]=a[N-1-i];
a[N-1-i]=temp;
}
printf("重新排序后的数组是:\n");
for(i=0;i<N;i++)
printf("%3d",a[i]);
printf("\n");
}
⑹ c语言,数组逆置
#include<stdio.h>
voidrevstr(char*s)
{
char*p=s,c;
while(*p)p++;
p--;
if(s<p)
{
c=*s;
*s=*p;
*p='