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

第一次發隨筆,但願記錄本身的學習過程,若是你們有更多好的想法,歡迎多多討論,小白在此謝過。函數

相關文章
相關標籤/搜索