AMNO.6題目描述 給出一個不多於5位的整數,要求 1、求出它是幾位數 2、分別輸出每一位數字 3、按逆序輸出各位數字,例如原數為321,應輸出123 輸入 一個不大於5位的數字 輸出 三
阿新 • • 發佈:2018-12-08
題目描述
給出一個不多於5位的整數,要求 1、求出它是幾位數 2、分別輸出每一位數字 3、按逆序輸出各位數字,例如原數為321,應輸出123
輸入
一個不大於5位的數字
輸出
三行 第一行 位數 第二行 用空格分開的每個數字,注意最後一個數字後沒有空格 第三行 按逆序輸出這個數
樣例輸入
12345
樣例輸出
5
1 2 3 4 5
54321
提示
哈姆雷特:數字還是字元?這是一個問題!
來源/分類
C語言
題目截圖:
思路:
利用: %運算,和/運算!將獨立的數存入一個數組裡! %運算取得餘數,/運算使得參與運算的數不斷減小! 我們定義一個最大的陣列:長度為5!這下總能裝得下吧~哈哈~ int b[5]={0}; 先是有個判斷條件:必須要5位數以內! if(a<1000000) {} 就用這個啦! 但是那個統計位數,可是讓人頭痛呀!只好再找個變數啦~ 利用a來進行運算,但是a的值後面還要用到,因此只能用一個臨時變數啦! 定義一個:t c初始化為0!每執行一次運算就加一!這樣就可以獲得它的位數啦! do{ t/=10; c++; }while(t!=0); 獲取獨立的數: for(int i=c-1;i>=0;i--) { b[i]=a%10; a/=10; }cout<<c<<endl; 假如輸入的是:12345. 我們,會先得到5!這個應該儲存在最後面的!所以就把陣列顛倒一下! 從:b[c-1].開始儲存數字!
具體程式碼:
#include<iostream> using namespace std; int main() { int a,t;int b[5]={0};int c=0; cin>>a; t=a; do{ t/=10; c++; }while(t!=0); if(a<1000000) { for(int i=c-1;i>=0;i--) { b[i]=a%10; a/=10; }cout<<c<<endl; for(int i=0;i<c;i++) { cout<<b[i]<<" "; }cout<<endl; for(int i=0;i<c;i++) { cout<<b[c-1-i]; } } }
程式碼截圖:
OJ執行截圖:
OK!