❶ c语言 数组 数据的逆序
刚编译了下,咋看还真没什么问题。后来我发现题目的意思是可以输入多组数据,等输入0确认输入完毕时将它们分别倒序输出。你的程序是输入一组按回车后就立马输出这组数据的结果,然后才可以输入下一组,这可能就是所谓的格式不对吧。
❷ 用C语言实现数组中的数据逆序输出
可以将这个功能封装为一个函数。
传入数组首地址,以及数组长度。
以循环方式,对数组逆序遍历即可。
代码:
voidrevers_print(int*a,intl)
{
inti;
for(i=l-1;i>=0;i--)
printf("%d,",a[i]);
return0;
}
❸ 用C语言编程:将一个数组逆序输出
从最后一个元素,逆向遍历到数组的0元素,逐一输出即可实现。
1、创建数组;
2、输入值;
3、逆序遍历输出数组。
代码:intmain(){ inta[10]; inti;
for(i=0;i<10;i++)
scanf("%d",a+i);
for(i=9;i>=0;i--)
printf("%d",a[i]);}
(3)数组逆序c语言模板扩展阅读:
将一个数组逆序输出。
1、程序分析:用第一个与最后一个交换。
2、程序源代码:
#define N 5
main()
{ int a[N]={9,6,5,4,1},i,temp;
printf(" original array: ");
for(i=0;i printf("%4d",a[i]);
for(i=0;i {temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf(" sorted array: ");
for(i=0;i printf("%4d",a[i]);}
❹ 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;
}
运行结果:
❺ 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语言将数组中的数逆序存放
输入格式:
输入在第一行中给出一个正整数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>);
}
}
(6)数组逆序c语言模板扩展阅读:
用法:
1、printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。
格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。
要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。
2、printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。
❼ c语言数组逆序问题 求助大佬
#include <stdio.h>
#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;
}
❽ 用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"
voidmain()
{
inta[100],n,m;
printf("请输入元素的个数:");
scanf("%d",&n);
printf("请依次输入%d个数:",n);
for(m=0;m<n;m++)
scanf("%d",&a[m]);
printf("按逆序输出为:");
for(m=n-1;m>=0;m--)
printf("%d",a[m]);
}
执行结果
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。