当前位置:首页 » 编程语言 » c语言数组逆行
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数组逆行

发布时间: 2022-12-24 21:22:06

⑴ 用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&lt;stdio.h&gt;

main()

{

int a[10],b[10],i,j,n,count=0;

scanf("%d",&n);

for(i=0;i&lt;n;i++)

{

scanf("%d",&a&lt;i&gt;);

}

for(j=n-1;j&gt;=0;j--)

{

b[count]=a[j];

count++;

}

printf("%d",b[0]);

for(i=1;i&lt;n;i++)

{

printf("%d",b&lt;i&gt;);

}

}

(3)c语言数组逆行扩展阅读:

用法:

1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。

格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。

要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。

2、printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。

⑷ 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='';//递归之前,p的位置要置上结束符,否则再次进入函数时,p会一直找到原来的字符串结尾
revstr(s+1);
*p=c;//这里才把正确的字符填进去
}
}
intmain()
{
chars[100];
gets(s);
revstr(s);
printf("%s",s);
}

楼主的代码有些乱,我改了改,你看看。

⑺ C语言编写程序 将一个一维数组进行逆置,如原来是1,2,3.后为3,2,1

将原本数组,头尾对称位置互换即可。

函数代码如下:

voidreverse(int*a,intl)//将a上长度为l的数组逆置
{
inti,t;
for(i=0;i<=l/2;i++)
{
t=a[i];
a[i]=a[l-i-1];
a[l-i-1]=t;
}
}

⑻ C语言 使一个数组逆序输出

#include<stdio.h>

void fac(int *p,int n)
{ int *q,t;
q=p+n-1;
while(p<q)
{t=*p;*p=*q;*q=t;p++;q--;}
}//这掉了个大括号~
void main()
{int a[10],*p,i;
p=a;
for(i=0;i<10;i++)
scanf("%d",p+i);
fac(a,10);
p=a;
for(i=0;i<10;i++)
printf("%d ",*(p+i));
}

⑼ C语言如何实现数组元素倒置

1、打开c语言编辑器,新建一个空白的文件:

⑽ c语言编程,将一个数组中的值按逆序排列。望解答。谢谢。

#include"stdio.h"
intmain(intargc,char*argv[]){
inta[10]={1,2,3,4,5,6,7,8,9,0},i,j,k;
for(i=0,j=9;i<j;j--,i++)
k=a[i],a[i]=a[j],a[j]=k;
for(i=0;i<10;printf("%d",a[i++]));
printf(" ");
return0;
}

运行结果: