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

第一次发随笔,但愿记录本身的学习过程,若是你们有更多好的想法,欢迎多多讨论,小白在此谢过。函数

相关文章
相关标签/搜索