C++基礎編程DAY9

20、寫一個函數,取一個整數值並返回此整數的各數字反序的數值

//寫一個函數,取一個整數值並返回此整數的各數字反序的數值

#include<iostream>
#include<stdint.h>

using namespace std;

//int reverse_m1(int x)
//{
//	int y;
//	if(x>0 && x<10)
//	{
//		y = x ;
//		return y;
//	}
//	else if (x>9 && x<100)
//	{
//		y = x/10 + x%10*10;
//		//cout << x/10 << " " << x%10*10 << " " << x/10 + x%10*10 << endl;
//		return y;
//	}
//	else if(x>99 && x<1000)
//	{
//		y = x/100 + x/10%10*10 + x%10*100;
//		return y;
//	}
//	else
//	{
//		cout << "超出範圍,該整數不在0-1000以內" << endl;
//	}
//}


//int reverse_m2(int x)
//{
//	for(int i=0; i<10; i++)
//		for(int j=0; j<10; j++)
//			for(int k=0; k<10; k++)
//			{
//				if(x==i*100+j*10+k)
//				{
//					//if(x>0 && x<10) return x;
//					//if(x>9 && x<100) return k*10+j;
//					//if(x>99 && x<1000) return k*100+j*10+i;
//					if(i==0) 
//					{
//						if(j==0)
//							return x;
//						else 
//							return k*10+j;
//					}
//					else
//						return k*100+j*10+i;
//
//				}
//
//			}
//}

int reverse_m3(int n)
{
	int s = 0;
	while(n)
	{
		s = s*10 + n%10;
		n /= 10;
	}
	return s;
}

int main()
{
	
	cout<< "請輸入一個整數:" ;
	int x;
	cin >> x;
	//cout << reverse_m1(x) << endl;
	cout << "反序數爲:" << reverse_m3(x) << endl;
	//getchar();
	system("pause");
	return 0;
}

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

總結

1、兩種函數寫法都可以求1-1000以內任意整數的反序數,函數一先判斷是幾位數,然後有求整、求語運算求各個位的數;函數二用三個for()循環列出0-1000的所有數與輸入的整數一一比較,採用從高位數是否爲0來判斷位數,判斷條件較函數一簡潔;
2、函數三源於參考代碼,求餘取得整數的各位數,循環*10,不用考慮整數的位數,代碼簡潔高效。強烈推薦這種方法!!

發佈了27 篇原創文章 · 獲贊 3 · 訪問量 846
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章