精华内容
下载资源
问答
  • 得到一个数字中每一位数字

    万次阅读 2014-05-16 10:59:01
    学习编程也有一段时间了,随着学习的不断深入,我越来越体会到了算法的重要性,最近遇到了一些非常有意思的算法,比如打印水仙花数、将数字逆置,在这两个算法会用到一个数字每一位的值 如:判断数字123是否是...

    学习编程也有一段时间了,随着学习的不断深入,我越来越体会到了算法的重要性,最近遇到了一些非常有意思的算法,比如打印水仙花数、将数字逆置,在这两个算法中会用到一个数字钟每一位的值

    如:判断数字123是否是水仙花数需要得到每一位的数字

    通常计算每一位的数字的算法是:

    个位:a = 123 % 10 = 3

    十位:b  = 123 %100 / 10 = 2

    百位::c = 123 % 100 = 2


    随着位数的越来越大,这种方法满足不了程序的需求

    比如计算:123445677777777777777777777每一位的数字使用上面的方法肯定是不行的


    最近我学了一种比较好的方法:

    为了便于理解这种方法,我用前面的例子使用这种方法计算123中每一位的值


    需要计算的数字:

    1 2 3

    首先定义变量  j = 123

    m = 0


    第一步:求出个位上的数字

    m = j % 10 = 123 % 10 = 3

    j = j / 10 =  123 / 10 = 12;//将三位数变成两位数


    第二步:求出十位上的数字

    m = j % 10 = 12 % 10 = 2

    j = j / 10 = 12 / 10 = 1//将两位数变成一位数


    第三步:求出百位上的数字

    m = j % 10 = 1 % 10 = 1

    j = j / 10 = 1 / 10 = 0//将数字清零


    最后得到个位上的数字是3,十位上的数字是2, 百位上的数字是1


    程序代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    void main()
    {
    	int num;
    	int i = 0;
    
    	printf("请输入一个数字:");
    	scanf("%d", &num);
    
    	while(num>0)
    	{
    		i = num % 10;//计算每一位上的数字
    
    		printf("%d\n", i);//打印每一位数字
    
    		num = num / 10;//实现位与位之间的遍历
    	}
    
    	system("pause");
    }
    

    测试程序:
    当输入123时


    当输入一个比多位数时:比如12341221

    
    展开全文
  • 得到一个每一位数字的几种方法

    万次阅读 多人点赞 2018-10-01 23:19:08
    1.(最简单暴力)直接将数字转换为字符串,然后转换为字符数组输出。 int n=12345; char[] chars=String.valueOf(n).toCharArray(); for(int j=0;j&lt;chars.length;j++){ System.out.print(chars[j]+&...

    1.(最简单暴力)直接将数字转换为字符串,然后转换为字符数组输出。

         int n=12345;
         char[] chars=String.valueOf(n).toCharArray();
    		for(int j=0;j<chars.length;j++){
    			System.out.print(chars[j]+" ");
    		}
    

    在这里插入图片描述
    2.整除法。

    		int n=12345;
    		List<Integer> list=new ArrayList<Integer>();
    		for(int i=10000;i>=1;i/=10){
    			list.add(n/i);//将商添加到list中,就是当前的位数。12345/10000=1  所以第一位是1
    			n=n-(n/i)*i;//用原来的数减去上一位的大小      12345变为2345
    		}
    		for(int x:list){
    			System.out.print(x);
    		}
    

    在这里插入图片描述
    3末位取余法。(取出来为倒序)

              //依次得到一个数的每一位(从后往前)
    		  int n=12345;
    		  int[] a = new int[5];
    		  for(int i=0;i<5;i++){
    			  a[i] = n%10;   //除以10取余数就是最后一位
    			  n /= 10;
    		  }
    		  for(int x:a){
    			System.out.print(x+"  ");
    		}
    

    在这里插入图片描述

    展开全文
  • python 利用递归实现打印一个数字每一位 def func(n): # 从高分为开始打印 lengh = len(str(n)) # 确定数字的长度 x = 10**(lengh-1) # 确定数字的分位 if n < 10: print(n) else: print(int(n/x)) ...

    python 利用递归实现打印一个数字的每一位

    def func(n):
        # 从高分为开始打印
        lengh = len(str(n))     # 确定数字的长度
        x = 10**(lengh-1)       # 确定数字的分位
        if n < 10:
            print(n)
        else:
            print(int(n/x))
            func(n % x)  # 对n的x分位取余得到
    
    
    def func1(n):
        # 从低分位开始打印
        if n < 10:
            print(n)
        else:
            print(n % 10)
            func(int(n / 10))
    

    上述凶高分位打印的时候,会出现0无法打出的现象,现在加一个判断做一个优化

    def f(n):
        num_len = len(str(n))
        if n < 10:
            print(n)
            # return n
        else:
            print(int(n / (10**(num_len-1))), end=' ')
            mod = n % (10**(num_len-1))
            dif_value = num_len - len(str(mod))
            if dif_value > 1:
                for i in range(1, dif_value):
                    print(0, end=' ')
            f(mod)
    
    
    f(200400900000)
    

    当然也有同学有跟简单的方法来写,但是需要一定的理解力,就是把低分为的实现方法打印和调用换一个位置变可实现

    def func1(n):
    	    # 从低分位开始打印
    	    if n < 10:
    	        print(n)
    	    else:
    	        func(int(n / 10))
    	        print(n % 10)
    

    func(int(n / 10))这一步呢其实是先一直在调用,并没有实现打印,等调用到最后一位的时候,就开始回溯,没回溯一步,便打印一位数数来

    展开全文
  • 用C语言判断一个数的位数,并取出数字

    万次阅读 多人点赞 2018-05-10 12:58:34
    简单写下直接求一个数的位数的原理,直接手写了 知道了位数再求数字就比较好求了 #include<stdio.h> #include<math.h> int main() { int n; int N; int i; int a[10]; scanf("%d", &...

    这个方法是我在写C语言作业时想出来的

    简单写下直接求一个数的位数的原理,直接手写了

    知道了位数再求每个数字就比较好求了

    #include<stdio.h>
    
    #include<math.h>
    
    int main()
    {
        int n;
        int N;
        int i;
        int a[10];
        scanf("%d", &N);
        n = (int)log10(N) + 1;
        printf("%d\n", n);
    
    
        for (i = 0; i < n; i++) {
        a[i] = (int)(N / (int)pow(10, n - i - 1)) % 10;
        }
        for (i = 0; i < n; i++) {
        printf("%d\n",a[i]);
        }
    return 0;
    }

     

    展开全文
  • 取出一个整数的每一位具体的数字

    千次阅读 2018-12-19 10:44:54
    写了一个小东西,取出整数每一位的具体数字,这个实现方式五花八门,而且,大家第一次接触编程的时候都写过,很简单,以供参考 代码如下, ------------------------------------------------ public void ...
  • 提取数字每一位

    千次阅读 2015-07-24 12:19:34
    C++,使用取余和除法来提取数字每一位
  • 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于2^64。 输出格式:在一行内输出n的各位数字之和的一位,...
  • 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字 输出 三行 第一行 位数 第二行 用空格分开的个数字,...
  • 逆序输出n的每位数字 void PrintReverse(int n) //定义一个函数 他的数据类型为整型 { if(n < 0) { printf("-"); n = -n; } //对于负数的整数,改变输出“-”的多少 do { printf("%d ",n%10); //当n不等于...
  • 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100^。输出格式:在一行内输出n的各位数字之和的一位,拼音...
  • C语言基础 输出数字每一位

    万次阅读 2018-10-15 14:37:52
    ---------------------...问题:任意输入一个整数,输出他的每一位数 1、 逆序输出 思路: (1)余除,输出最低位数字 (2)整出,依次减少尾数 (3)先余除再整除以此为循环,则形成余尾数,甩尾数的模式,依次输出...
  • 给定一个整数,请将该数各个位上数字反转得到一个新数。(新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零) import java.util.Scanner; public class Main{ public...
  • 分别输出每一位数字 3.按逆序输出各位数字 #include<stdio.h> #include<math.h> //求几位数 int Count (long long n) { if(n==0) return 1;//如果是0,则要返回1 int tmp = 0; while(n!= 0) { n = n/ 10...
  • 扩展一个数字表示和截断数字

    千次阅读 2016-08-27 11:07:18
    一个补码数字转换为更大的数据类型要执行符合扩展,规则是在表示添加最高有效的值的副本。如果原始的表示为,那么扩展后的表示为。下面证明符号扩展是正确的,即证明下式:表达式的左边增加了k
  • 怎么根据浮点数到字符串的转换得到浮点数的长度?怎么得到一个浮点数小数点后的数字位数是多少呢?
  • 快速获取一个数字各个上的数值

    千次阅读 2017-03-08 21:57:15
    今天遇到一个这样的需求:有一个数字,要得到每一位上的数字,对其进行判断做后续处理。 举例:如123 如何快速获取1 2 3 php版 获取3:123%10 获取2:intval(123/10)%10 获取1:intval(123/10/10)%10 总结:...
  • 用循环 每次除以10 再用一个变量P循环一次 加1 知道这个数除去10后的数小于10 P再加1就可以了
  • 一个函数get_digits(n),将参数n分解出数字并按顺序存放到列表。举例:get_digits(12345) ==> [1, 2, 3, 4, 5] 分析问题 想要将一个数字分解成一个列表,首先我们可以定义一个空列表,然后将所给数的...
  • 题目要求:将1~9这9个数字分成三组,的三个数排成一个的完全平方数,要求数字必须且只能用一次 。 思路如下: 1、先造一个数组num[]用来标记1到9这几个数字是否已经被使用过。比如:num[1] = 0,表示&...
  • leetcode-字序列一位数字

    千次阅读 2020-06-30 13:29:59
    数字以0123456789101112131415…的格式序列化到一个字符序列。在这个序列,第5(从下标0开始计数)是5,第13是1,第19是4,等等。 请写一个函数,求任意第n对应的数字。 示例 1: 输入:n = 3 输出:3 ...
  • 1、 求一个正整数是几数 #include&lt;stdio.h&gt; int Number(int n) { int bit=0; do { n=n/10; bit++; }while(n!=0); return bit; } n/=10丢掉尾数,丢掉一个尾数,位数bit加1,当尾数为0...
  • #include<stdio.h> int Output_digits(int n)//输出位数 { int i=0; if(n==0){ i=1; } else{ for(;n%10!=0 || n/10 != 0;i++){ ... int output_bits(int n)//输出每位数字 { in...
  • 编程计算x的每一位数字相加之和

    千次阅读 2015-02-13 21:52:21
    从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和(忽略整数前的正负号)。例如,输入x为1234,则由1234分离出其千位1、百位2、十位3、个位4,然后计算1+2+3+4=10,并输出10。程序的运行结果如下: ...
  • 宏函数在c语言编程有不可忽视的作用,并且数字二进制的奇偶交换也比较常见,所以用宏函数来实现数字二进制的奇数和偶数交换不失为一个很好的方法。
  • var a = prompt("请输入一个三位数"); var b = a%10 //个位数字 var c = (a%100)/10 var d = Math.floor(c)//十位数字 var e = (a/100) var f = Math.floor(e)//百位数字 var g = b+d+f al
  • 给出不多于5位的正整数,要求:1,求出它是几位数2,分别输出一位数3,按逆序输出每一位数字,例如原数为321,应输出123.第一种方法:(1)求一个数是几位数,有一种方法是:if (x &gt; 9999) { place = 5; ...
  • 分别输出每一位数字; 按逆序输出各位数字。 1.求出它是几位数 思路:一个一次除以10都会少一位数。 // scanfNum:输入的5位数 // printfNum:用作输出的5位数 // total:记录有几位数 do { scanfNum /= 10; ...
  • 分别输出每一位数字 //3.按逆序输出各位数字 #include&amp;amp;lt;stdio.h&amp;amp;gt; #include&amp;amp;lt;math.h&amp;amp;gt; //求出它是几位数 int Count(int n) { int tmp = 0; ...
  • 一个数组的各个元素拼接组合,得到数字最大的组合。 如:int[]arr=newint[5]{1,26,56,894,5648}; 拼接组合后最大的数为894565648261--> 894565648261的拼接结构 public string GetArraySortMaxNumber ...
  • 获取int类型数据的每一位数字

    千次阅读 2018-07-10 14:45:36
    //获取一个数的个 百位 千位 public static void takePlace(){ int intNum = 2108; int thousand = intNum/1000;//千 int hundred = intNum/100%10;//百 int ten = intNum/10%10;//十 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 653,904
精华内容 261,561
关键字:

得到一个数字中每一位的数字