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(),一個先確定幾位數,一個取整順序輸出;