7-13 輸出一個數的位數及其逆序數 (12分)
從鍵盤輸入一個正整數(不超過9位,即最多9位),要求編程實現以下功能:
① 求出這個數是幾位數,並輸出其位數;
② 輸出這個數的逆序數。
輸入格式:
輸入一個正整數(不超過9位,即最多9位)。
輸出格式:
輸出剛剛輸入的正整數,包含的位數及其逆序數,中間用英文逗號分隔開,最后換行。
輸入樣例:
147258369
輸出樣例:
147258369,9,963852741
我之前已知是這樣寫的
#include<bits/stdc++.h> using namespace std; int rev_num(int x); void fun(int x, int &digit, int &rev) { int a[20]; int i = 0; while(x > 0) { a[i++] = x%10; x/=10; } digit = i; rev = 0; for(int i = 0; i < digit; i++) { rev += a[i]; if( i !=digit-1) rev*=10; } } int main() { int x; // while(cin>>x) cin>>x; { int digit = -1; int rev = -1; fun(x,digit, rev); cout<<x<<','<<digit<<','<<rev<<endl; } return 0; }
這是改進后的
#include<bits/stdc++.h> using namespace std; int rev_num(int x); void fun(int x, int &digit, int &rev) { digit = 0; rev = 0; while(x > 0) { rev = rev*10 + x%10; x/=10; digit++; } } int main() { int x; cin>>x; { int digit = -1; int rev = -1; fun(x,digit, rev); cout<<x<<','<<digit<<','<<rev<<endl; } return 0; }