本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
题示需保证:1、1≤n≤10,声明数组时确定长度,保证略大一点;2、行末不得有空格,
法一:借助另一个数组
代码一:
#include<stdio.h>
int main()
{
int i,m,n,a[m],b[n];
scanf("%d",&n);
for(m=0;m<n;m++)
scanf("%d",&a[m]);
for(i=0;i<n;i++)
b[i]=a[n-1-i];
for(int j=0;j<n-1;j++){
printf("%d ",b[j]);}
printf("%d",b[n-1]);
return 0;
}
法二:循环到最后一个元素n=1时,使用continue不执行循环体剩余部分(即不输出空格)由此保证了行末无空格。
代码二:
#include <stdio.h>
int main()
{
int i,n,a[11];
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=n;i>=1;i--){
printf("%d",a[i]);
if(i==1) continue;
printf(" ");
}
return 0;
}
补充:控制语句continue作用于循环体内,不执行循环体剩余部分,结束本次循环,跳到判断的位置,重新开始下一次循环。
例: 该程序只输出奇数值
int main()
{
int i;
for(i = 0; i < 10; i ++) {
if(i%2==0) continue; //如果i为偶数 调用continue;
printf("%d,", i);//输出i值
}
}
法三:
代码三:
#include<stdio.h>
int main()
{
int n,i,a[11];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=n-1;i>=0;i--){ //数组元素从0-n-1,让其从最后一个n-1输出保证逆序
if(i!=0)
printf("%d ",a[i]);
else
printf("%d",a[i]); //结尾无空格,最后一个单独printf
}
return 0;
}
代码四:(最简洁)
#include <stdio.h>
int main()
{
int i,n,k,a[11];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(k=i-1;k>0;k--)
printf("%d ",a[k]);
printf("%d",a[0]);
}