逆序存放是一个比较经典的问题,我们这里介绍两种方法。(当然是用C语言喽~)
第一种:自减排序
#include <stdio.h>
int main()
{
char arr[100]={0};
gets(arr);
int count(char a[]);
int ret=count(arr);
for(ret--;ret>=0;ret--)//逆序的第一种算法,从最后面依次写到最前面。
{
printf("%c",arr[ret]);
}
return 0;
}
int count(char a[])
{
int i=0,count=0;
for(i=0;i<100;i++)
{
if(a[i]!='0')
count++;
else
break;//数到不是字符0的地方就跳出来。
}
return count;
}
//可逆序存放任意字符串。
//这道题的第一个问题是要知道随意输入的字符串到底包含多少字符,我们的第一步就是编写了一个函数去解决这个问题。
//效率最高,最简便的一种算法。
第二种:交换法
//我们把最低位与最高位进行交换,次最高位与次最低位进行交换~以此类推,就能实现逆序输出。
#include <stdio.h>
int main()
{
char arr[100]={0};
gets(arr);
int count(char a[]);
int ret=count(arr);
int t=0;
for(int i=1;i<ret/2;i++)//对于奇偶均适用。
{
t=arr[i-1];
arr[i-1]=arr[ret-i];
arr[ret-i]=t;
}
for(int i=0;i<ret;i++)
{
printf("%c",arr[i]);
}
return 0;
}
int count(char a[])
{
int i=0,count=0;
for(i=0;i<100;i++)
{
if(a[i]!='0')
count++;
else
break;
}
return count;
}
//关键点是i从一开始,到整个长度/2结束。