【ZZULIOJ】1114: 逆序

ZZULIOJ题解

1114: 逆序

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

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

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

样例输入

6
4 5 6 1 2 3 

样例输出

   3   2   1   6   5   4

本题当然可以用之前的递归解决,不过也可以跟递归说再见,迈向新的起点,数组的学习啦。这里关于数组的定义其实是建议放在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;//程序正常结束 
}
*/


  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

 江海寄余生 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值