C++逆序算法有感
C++逆序算法有感
数字的逆序算法
数字的逆序比较简单,直接利用去余去除最后一位,优先输出;并且通过整除保证下一次去余的正确性。
代码如下:
#include <stdio.h>
int main()
{
int x;
int d;
scanf("%d",&x);
while(x!=0)
{
d=x%10;
x=x/10;
printf("%d",d);
}
return 0;
}
字符的逆序
字符的逆序,采用递归算法比较好,配合getchar()和 putchar()可以进行递归输出
/*
利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来
*/
#include <stdio.h>
void reverse(int i)
{
char next;
if(i<=1)
{
next=getchar();
printf("相反顺序输出结果\40:\40");
putchar(next);
}
else
{
next=getchar();
reverse(i-1);
putchar(next);
}
}
int main()
{
int i=5;
printf("请输入5个字符");
reverse(i);
return 0;
}
- 以上这种递归的用法适用于知道具体的字符个数,否则用递归比较麻烦。
- 具体原因是由于getchar()和putchar()需要提前知道字符的个数。
字符的逆序2
- 以下是一种比较简单的思路
1. 利用循环计算出字符的个数
2. 再通过数组和替换变量对数组重排
#include <stdio.h>
void reserve(char *s)
{
int len;
char *p=s;
while(*p!=0)
{
len++;
p++;
}
int i;
char c;
for(i=0;i<len/2;i++)
{
c=s[i];
s[i]=s[len-1-i];
s[len-1-i]=c;
}
}
int main()
{
char s[1000];
scanf("%s",&s);
printf("'%s'转化成",s);
reserve(s);
printf("'%s'",s);
return 0;
}
第一次发随笔,希望记录自己的学习过程,如果大家有更多好的想法,欢迎多多讨论,小白在此谢过。