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; 
}

第一次发随笔,希望记录自己的学习过程,如果大家有更多好的想法,欢迎多多讨论,小白在此谢过。

posted @ 2020-08-04 10:59  爵企  阅读(308)  评论(0编辑  收藏  举报