C++基礎編程DAY10

21、寫一個函數,將一個整數的各位數字的反序打印

//寫一個函數,將一個整數的各位數字的反序打印
#include<iostream>
#include<stdlib.h>

using namespace std;

//int reverse_out(int n)
//{
//	while(n)
//	{
//		cout << n%10 << " ";
//		n /= 10;
//	}
//	cout << endl;
//	return 0;
//}

void show(int n)
{
	if(n < 10) cout << n;//遞歸函數結束條件
	else
	{
		cout << n%10 << " " ;
		show(n/10);
	}
}

int main()
{
	int x;
	cin >> x;
	//reverse_out(x);
	show(x);
	system("pause");
	return 0;
}

總結

1、函數show()採用遞歸求解,if(n<10) cout << n;看着多餘,實則是遞歸函數結束條件,不可或缺;

22、寫一個函數,將一個整數的各位數字的按順序打印

//寫一個函數,將一個整數的各位數字的按順序打印
#include<iostream>
#include<stdlib.h>

using namespace std;

//int show_m1(int n)
//{
//	int a[10] = {0}, i = 0;
//	while(n)
//	{
//		a[i] = n%10;
//		i++;//i多加了一次
//		n /= 10;
//	}
//	for(i; i>0; i--)
//		cout << a[i-1] << " ";
//	return 0;
//}

void show_m2(int n)
{
	if(n < 10) cout << n;//遞歸函數結束條件
	else
	{
		show_m2(n/10);
		cout << " " <<  n%10;
		
	}
}

int main()
{
	int x;
	cin >> x;
	//show_m1(x);
	show_m2(x);
	system("pause");
	return 0;
}

總結

1、show_m1()採用先求餘取得從低位到高位各個位數,放入一個數組再逆序打印,不用考慮是幾位數,但需增加數組逆序輸出循環;
2、show_m2()採用遞歸,同21題代碼相比只是調換了順序,解法很妙!!
3、參考代碼還有一種方法,用了兩個while(),一個先確定幾位數,一個取整順序輸出;

題目來源:50道C++編程練習題及解答

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章