本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
我的答案:
解法一:
常规解法:
#include<stdio.h>
#define MAXN 10//宏定义,因为n(1≤n≤10)
int main(void)
{
int i,n,a[MAXN]; //这里不用定义,直接写10也是可以的
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);//循环法输入数组
}
for(i=n-1;i>0;i--)//因为题目要求逆序,即从最后一个开始打印到第一个
{
printf("%d ",a[i]);
}
printf("%d",a[i]);//对于第一个的打印,因为要求最后一个后面没空格,所以单拿出来打印
return 0;
}
解法二:
函数解法:
#include<stdio.h>
#define MAXN 10//宏定义,因为n(1≤n≤10)
void back(int a[],int i);//函数声明
int main(void)
{
int i,n,a[MAXN]; //这里不用定义,直接写10也是可以的
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);//循环法输入数组
}
back(a,i);
return 0;
}
void back(int a[],int i)
{
for(i--;i>0;i--)//i--是因为输入最后一个时,i++,i=n越界了
{
printf("%d ",a[i]);
}
printf("%d",a[i]);
}
Ps:
解法无所谓,能最快最简单地去解决问题就可以。