当前位置:   article > 正文

【ZZULIOJ】1114: 逆序_题目描述 输入n(1<=n<=10)和n个整数,逆序输出这n个整数。 输入描述 输入n(1<=n<=

题目描述 输入n(1<=n<=10)和n个整数,逆序输出这n个整数。 输入描述 输入n(1<=n<=1

ZZULIOJ题解

1114: 逆序

题目描述
输入n(1<=n<=10)和n个整数,逆序输出这n个整数。

输入
输入n(1<=n<=10),然后输入n个整数。

输出
逆序输出这n个整数,每个整数占4列,右对齐。

样例输入

6
4 5 6 1 2 3 
  • 1
  • 2

样例输出

   3   2   1   6   5   4
  • 1

本题当然可以用之前的递归解决,不过也可以跟递归说再见,迈向新的起点,数组的学习啦。这里关于数组的定义其实是建议放在main函数之外的,因为会节省程序运行时间,这里就不得不提一下为什么会出现这种情况,因为,全局变量在静态存储区分配内存,局部变量是在栈上分配内存空间的。(c语言程序在运行时会动态创建一个堆栈段,里面存放着调用栈,保存着函数的调用关系和局部变量。)如果数组太大,可能会造成栈溢出。所以这样来说,我们把数组定位全局变量是很有必要的。一是防止了栈溢出,二是节省了动态创建的时间~而且防止溢出这个操作,对于代码来说也是很必要的,因此对于要求100的数组,我们一般是要开辟101甚至105的空间的,这就是防止溢出,那么话不多说,开始咱们的解题。

代码


#include<stdio.h>
int a[11];//注意啦数组初始是从0开始,例如int a[3]其实是里面是a[0]、a[1]、a[2]
//并且在外面定义是默认初始化数组值为0的,定义数字也是一样的~ 
int main()
{
	int i,n;//定义循环变量i和数组元素数n 
	scanf("%d",&n);//输入n 
	//int a[n];//定义数组a[n],这里数字比较小,所以可以这样。 但是并不推荐,所以划掉 
    for(i=0;i<n;i++)//开始循环 ,从0开始 
 	scanf("%d",&a[i]);//每次存入a[i] 
	for(i=n-1;i>-1;i--)//从n-1到0结束 
	printf("%4d",a[i]);//按照格式要求输出占4列右对齐的数字 
	return 0;//程序正常结束 	
}

//前边的递归方法是可以解决这个问题的
/*
void inverse(int n) 
{  
	int num;//定义数字num 
	if(n>1)
   {
   	scanf("%d",&num);//键盘读入num 
   	inverse(n-1);//递归给n-1 -->此时又进入了一个新的inverse()函数之中,重复操作 
   	printf("%4d",num);//输出num 
   }
 	if( n == 1){//当n为1的时候,输入之后就输出 
 	scanf("%d",&num);//键盘读入num 
 	printf ("%4d",num);//直接输出num;
	} 
}
int main()
{
	int n;//定义未知数数量n 
	scanf("%d",&n);//键盘输入n 
	inverse(n);//执行inverse函数
	return 0;//程序正常结束 
}
*/


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/292955
推荐阅读
相关标签
  

闽ICP备14008679号