給一個正整數n,求出位數。並按正序輸出,逆序輸出
求出位數
通過讓給定的正整數n整除10,且每整除一次讓統計位數的變數count自增一,返回count得到位數。
#include<stdio.h>
int GetFigure(int n)
{
int count=0;
do
{
count ++;
n /=10;
}while(n!=0);
return count;
}//while迴圈的bug在於n=0,位數輸出為0
逆序輸出數字。
例如1234-》4 3 2 1,首先n對1000取餘可以得到個位數4,接著丟棄個位數,得到123,
對100取餘得到十位數字3,再丟棄十位數字。
void PrintReverse(int n)
{
do
{
printf("%d",n%10); //得到個位數字
n/=10; //丟棄個位
}while(n!=0);
printf("\n");
}
正序輸出數字
要按順序輸出各個位上的數字,可以通過整除10的不同次方來得到每個位上的數字
如123 按順序輸出為1,2,3, 要得1→123/100,得到2→取餘捨棄最高位後,整除10。此型別題都是這種方法。
void PrintOrder(int n)
{
int m = GetFigure(n); //m儲存整數位數,呼叫求出位數函式
//pow();
int power = 1;
for(int i=0;i<m-1;i++)
{
power *= 10; //此時power=100
}
do
{
printf("%d ",n/power); //得到最高位數字
n %= power; //丟棄最高位
power /= 10; //此時power=10
}while(n != 0);
printf("\n");
}
int main()
{
printf("%d\n", GetFigure(9));
printf("%d\n", GetFigure(19));
PrintReverse(123);
PrintReverse(12345);
PrintOrder(123);
PrintOrder(12345);
return 0;
}
相關推薦
給一個正整數n,求出位數。並按正序輸出,逆序輸出
求出位數通過讓給定的正整數n整除10,且每整除一次讓統計位數的變數count自增一,返回count得到位數。#include<stdio.h> int GetFigure(int n) { int count=0; do { count ++;
【c語言】給一個不多於五位的正整數: 1.求出它是幾位數 2.分別輸出每一位數字 3.逆序輸出各位數字
#include<stdio.h> #include<math.h> //求出它是幾位數 int Count(int n) { int tmp = 0; while (n != 0) { tmp++; n /= 10;
不多於5位數的正整數1、求出它是幾位數;2、按逆序打印出各位數字。
《C程式設計 第二版》P105 5.7 給一個不多於5位數的正整數,要求:1、求出它是幾位數;2、分別打印出每一位數字;3、按逆序打印出各位數字,例如原數為321,應輸出123. 答:第2問和第3重複,沒寫第2問,直接第3問。 #include<stdio.h>
安裝App後,點選開啟。再按home回首頁,再開啟,出現App重複載入的問題
安裝App後,點選開啟。再按home回首頁,再開啟,出現App重複載入的問題 具體表現是: 1、將app包通過電腦QQ傳送到手機QQ上面,點選安裝,安裝後選擇開啟app (此間的應用邏輯應該是要觸發 【閃屏頁Activity】, 然後跳轉 【主頁Activity】) 2
ACM 給你一個整數Q,找出一個最小的正整數N,使得它的各位之積等於Q,如果不存在,請輸出-1 輸入:第一行為組數,
#include<iostream> #include<stdio.h> using namespace std; bool smallten(int data) { if((data<10)
給定一個正整數n,求出0到n中有幾個數滿足其二進位制表示不包含連續的1
樣例: 輸入:5 輸出:5 0 01 10 100 101滿足,11不滿足。 那麼6144呢? 答案是610,怎麼去計算呢? 思路:查詢從0到n中有多少個數包含連續的1,然後在總數中去掉這些情況,得到
給定一個十進位制正整數N,求出從1開始,到N的所有整數,數字1出現的次數(java實現)
【程式設計之美】給定一個十進位制正整數N,求出從1開始,到N的所有整數,數字1出現的次數。 例如,N=2,則兩個數為1,2 。數字1出現的個數是1. 又如n = 20.則20個數中1出現的為:1,10,11,12,13,14,。。。19 共有12個。 設計一個演算法
求階乘,輸入一個正整數 n,輸出n!
factor i++ print 階乘 pri tor n) printf main #include<stdio.h>int factorial (int n); int main(){ int n; scanf("%d",&n); printf("
給出不多於5位的正整數,求出它是幾位數,分別輸出每一位按逆序輸出每一位數字。
給出不多於5位的正整數,要求: 1,求出它是幾位數 2,分別輸出每一位數 3,按逆序輸出每一位數字,例如原數為321,應輸出123. 第一種方法: (1)求一個數是幾位數,有一種方法是: if (x > 9999) { place = 5; printf("這是一個五位數\n");
[PAT][Python](讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。)
讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。 輸入格式:每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10^100 。 輸出格式: 在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空
任意給定一個正整數N,求一個最小的正整數M(M>1),使得N*M的十進位制表示形式裡只含有1和0。
解決這個問題首先考慮對於任意的N,是否這樣的M一定存在。可以證明,M是一定存在的,而且不唯一。 簡單證明:因為 這是一個無窮數列,但是數列中的每一項取值範圍都在[0, N-1]之間。所以這個無窮數列中間必定存在迴圈節。即假設有s,t均是正整數,且s<t,有 。於是迴圈節長度為t-s。於是10
給定一個正整數n,將其分成m段,每段為n1,n2,...,nm,求怎麼劃分使得n1*n2*...*nm最大
#include <iostream> #include <fstream> #include <math.h> using namespace std; #define SIZE 1000 unsigned long m[SIZE], t[SIZE]; //m
隨意輸入一個正整數n, 在輸入轉化的進位制數,將轉化後的序列輸出,並判斷某一個數字的個數,這裡給的是二進位制的例子
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T
輸入一個正數x和一個正整數n,求下列算式的值。要求定義兩個調用函數:fact(n)計算n的階乘;mypow(x,n)計算x的n次冪(即xn),兩個函數的返回值類型是double
返回值 %d time data body 一個 pow color printf 題目描述 輸入一個正數x和一個正整數n,求下列算式的值。要求定義兩個調用函數:fact(n)計算n的階乘;mypow(x,n)計算x的n次冪(即xn),兩個函數的返回值類型是d
給一個正整數n,計算從1-n中出現1的次數
con 個數字 優化 個數 數字 higher 通過 需要 出現的次數 如12出現1的次數為5,分別是:1,10,11,12 一般做法:從1-n遍歷,計算每一個數中每一位出現1的次數 function count(num){ var n=0;
給定一個正整數,求其位數以及正序逆序輸出
給定一個正整數,求其位數以及正序逆序輸出 #include<stdio.h> int Count(int n)//求正整數的位數 { int tmp=0; do { n=n/10; tmp++; }while(n!=0); return tmp; } void PrintReve
編寫一段 JS 程式碼,求出一個整數的各個位數之和
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> </style
輸入一個正整數n,輸出所有和為n的連續正整數序列
1 public static void main(String[] args) { 2 Scanner sc = new Scanner(System.in); 3 while (true) { 4 System.out.prin
【面試題】給多個無序正整數,求中位數
題目:給你很多很多正整數,但它們是無序的,找出它們的中位數。 最開始就想說使用快排,先將這些整數進行排序,然後找到中位數,但又想到可能不是面試官想要的答案,於是又採用了其他方法,最終也沒完全解決出來。 【經驗總結:當面試官問了一個演算法題後,如果想不到優化一點的方法,就先
輸入一個正整數n,輸出n!的值。 其中n!=1*2*3*…*n。
問題描述 輸入一個正整數n,輸出n!的值。 其中n!=1*2*3*…*n。 演算法描述 n!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用一個數組A來表示一個大整數a,A[0]表示a的個位,A[1]表示a的十位,依次類推。 將a乘以一個整