倒叙问题
题目描述
输入一个长度为n(1 <= n <= 100000)数组,倒序输出他。 数组中的元素ai满足(1≤ai≤100000)。
输入格式
第一行一个整数n,表示数字长度,1≤n≤100000 第二行有n个整数ai,表示数组的内容,1≤ai≤100000。
输出格式
输出第一行为数组长度n 接第二行为倒序输出的结果。
样例
输入样例
3
4 5 6
输出样例
3
6 5 4
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("%d\n",n);
for(int i=n-1;i>=0;i--)
{
printf("%d ",a[i]);
}
return 0;
}
题目描述
读入一个四位数abcd,请你输出他的“反写”的值。 比如读入1015,输出5101; 读入4310,输出134 (不能有前导零) 不合法的四位数,如234, 0123, 12412不会作为读入数据。
输入格式
输入一个4位数abcd
输出格式
输出一个4位数,表示反写的值
样例
输入样例
4432
输出样例
2344
#include<stdio.h>
int main()
{
int abcd,n,a,b,c,d;
scanf("%d",&abcd);
d=abcd%10;
c=abcd/10%10;
b=abcd/100%10;
a=abcd/1000;
n=d*1000+c*100+b*10+a;
printf("%d",n);
return 0;
}
题目描述
给出两个整数 a 和 b ,倒序输出 a 到 b 之间(包括 a 和 b )的所有整数。
输入格式
第一行两个数a(0<=a<=100000)和b(0<=b<=200000),保证a<=b.
输出格式
b−a+1 行,每行一个整数,表示倒序输出的第i个数。
样例
样例输入
1 5
样例输出
5
4
3
2
1
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
for(;a<=b;b--)
{
printf("%d\n",b);
}
return 0;
}
对于这三个问题,都属于是倒叙问题,但要实现它们,所编写的代码却各不相同。对于第一个数组的倒叙问题,采用的则是数组的下标进行置换,来实现数组的倒序输出,需要注意的是数组下标是从0开始的。
对于第二个多位数的倒序问题,采用的则是取余相除的方法,将它的每一位上的数进行置换,需注意的是这里进行运算时,会进行强制类型转换,因为我们定义了数据为int型,则运算时会将右边表达式的值转变成左边变量的类型。
对于第三个整数之间的倒叙问题,采用的则是最大的整数进行for循环自减,倒序输出它们之间的所有整数,这里区别于数组,不存在下标。