精华内容
下载资源
问答
  • 运用C语言求一个整数各个位数数字

    万次阅读 多人点赞 2019-03-30 18:26:26
    1.先的位数 用此数除以10可以丢掉这数的位,循环除10多次直到结果为0,统计循环次数,便为此数的1位数 例:45678 数字 45678 4567 456 45 4 运算 45678/10=4567 4567/10=...

     

    1.先求这个数的位数

           用此数除以10可以丢掉这个数的个位,循环除10多次直到结果为0,统计循环次数,便为此数的1位数

                 例45678

     数字 45678 4567 456 45 4
    运算 45678/10=4567 4567/10=456 456/10=45 45/10=4 4/10=0

    循环

    次数

               1         2        3       4     5

             知道原理后运用代码实现

    unsigned char Figure(int n)
    {
    	int i = 0; 
    	
    	while(n!=0)
    	{
    		n = n / 10;//每次除以10
    		i++;//统计循环次数
    	}
    
    	return i;
    }

    2.求此数各个位数上的数字

         由<1>知道这个数的位数,便可以依次丢掉最高位,再除以相应10的指数,得到此位数的数字。

             例:45678

    数字 45678 5678 678 78 8
    位数数字 45678/10^4=4 5678/10^3=5 678/10^2=6 78/10=7 8/1=8
    去最高位 45678%10^4=5678 5678%10^3=678 678%10^2=78 78%10=8 8%1=0
    void Number(int n)
    {
    	int i = Figures(n);                         // 获取n的位数,调用<1>的函数                     
    	int power = (int)pow((float)10,(float)i-1);  //  获取n最高位数字需要除模的数字   
    	int temp;
    
    	while(power != 0)
    	{
    		temp = n / power;   //    此数位数上的数字
    		n =n% power;    //   下一个需要除的数字
    		power =power/ 10;    //    每次除10的指数
    		printf("%d",temp);
    	}
    	printf("\n");
    }

    3.完整代码

     

    #include<stdio.h>
    #include<math.h>
    unsigned char Figure(int n)
    {
    	int i = 0; 
    	
    	while(n!=0)
    	{
    		n = n / 10;//每次除以10
    		i++;//统计循环次数
    	}
    
    	return i;
    }
    
    void Number(int n)
    {
    	int i = Figure(n);                         // 获取n的位数,调用<1>的函数                     
    	int power = (int)pow((float)10,(float)i-1);  //  获取n最高位数字需要除模的数字   
    	int temp;
    
    	while(power != 0)
    	{
    		temp = n / power;   //    此数位数上的数字
    		n =n% power;    //   下一个需要除的数字
    		power =power/ 10;    //    每次除10的指数
    		printf("%d",temp);
    	}
    	printf("\n");
    }
    int main()
    {
    	
    	printf("%d\n", Figure(45678));//测试
    	Number(45678);
    	printf("%d\n", Figure(4));//测试
    	Number(4);
    	printf("%d\n", Figure(555555));//测试
    	Number(555555);
    		
    		
    }

     

     

    666

     

     

    总结

    把一个数字拆分的方法还有很多,此方法应还有些许不足,但万变不离其宗,去个位和去最高位的思想有了,会有更优秀的代码,所以以上代码仅供参考。

     

    展开全文
  • 在谭浩强的《C程序设计》中习题4.8要求:给一个不多于5位的正整数的上面三个问题,发现很多只能适用于题目条件下,而不能用于计算机可识别的全部正整数,故将我的经验分享给大家。更加方便的方法欢迎与我探讨。 #...

    在谭浩强的《C程序设计》中习题4.8要求:给一个不多于5位的正整数的上面三个问题,发现很多只能适用于题目条件下,而不能用于计算机可识别的全部正整数,故将我的经验分享给大家。更加方便的方法欢迎与我探讨。

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        unsigned long int a;//本类型取值范围: 0~4294967295
        int n;
    	scanf("%lu", &a);
        n = (int)log10(a) + 1;//求a的位数 
        printf("%lu是一个%d位数。\n", a, n);
    
        /*
        int n = 0;
        do
        {
    		a /= 10;
    		n++;
    	}
    	while(a != 0);
    	求位数方法二 
        */ 
        
        int af = a;//a的副本
        
    	do
    	{
    		int w = a/pow(10, n-1);//pow(x,y)为求x的y次方的值 
    		printf("%d\n", w);//输出第一位 
    		a = a - w * pow(10, n-1);//a减少最大的位 
    		n--;//位数减少一位 
    	}
    	while(n!=0);//正序输出 
        
        do
    	{
            printf("%d\n", af%10);//输出最后一位 
            af = af/10; //a的副本减少一位 
        }
    	while(af != 0);//逆序输出 
    
    	return 0;	
    }
    

    在这里插入图片描述

    展开全文
  • 题目:给一个不多于5位整数,要求:一、它是几位数,二、逆序打印出各位数字。【方法一】使用穷举法。穷举法意思就是列出所有可能出现结果。因为题目给了限定条件为不多于5位整数,所...

    1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。关注微信公众号【嵌入式大杂烩】,回复1024,即可免费获取!

    题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

    【方法一】使用穷举法。穷举法的意思就是列出所有可能出现的结果。因为题目给了限定条件为不多于5位的正整数,所以很容易就可以找出5位数、4位数、3位数、2位数、1位数的情况。

    示例程序:

    #include <stdio.h>
    
    int main(void)
    {
      int a,b,c,d,e,x;
      printf("请输入一个整数(0-99999):");
      scanf("%d",&x); 
      a = x/10000;      /*分解出万位*/
      b = x%10000/1000; /*分解出千位*/
      c = x%1000/100;   /*分解出百位*/
      d = x%100/10;     /*分解出十位*/
      e = x%10;         /*分解出个位*/
      
      if (a != 0) 
        printf("这是个5位数, 逆序:%d %d %d %d %d\n",e,d,c,b,a);
      else if (b != 0) 
        printf("这是个4位数, 逆序:%d %d %d %d\n",e,d,c,b);
      else if (c != 0) 
        printf("这是个3位数, 逆序:%d %d %d\n",e,d,c);
      else if (d != 0) 
        printf("这是个2位数, 逆序:%d %d\n",e,d);
      else if (e != 0) 
        printf("这是个1位数, 逆序:%d\n",e);
      
      return 0;
    }

    程序输出结果如:

    【方法二】假如这题的限定条件改为“不多于10位的正整数”,或者直接改为“给一个正整数”。这可怎么办,总不能再使用穷举法吧。这时应该想着怎么设计一个通用的算法。以满足各种通用的条件。

    关于此题的通用算法示例程序如下:

    #include <stdio.h>
    
    int main(void)
    {
      char buf[20];
      int n = 0, i = 0, j = 0;
      long x;
      printf("请输入一个整数(整数的位数不大于10):");
      scanf("%d",&x); 
      
      while(x != 0)
      {
        buf[i] = x%10; // 提取从后往前的的数字依次保存到数组中。如x=1234,则依次提取4 3 2 1
        x = x/10; // 依次舍掉最后一位往前的位数
        i++;  //数组索引
      }
      
      n = i; //循环结束后,i的值正好为该正整数的位数
      printf("这是个%d位数\n",n);
      printf("逆序数字为:");
      for (j = 0; j < n; j++)
      {
        printf("%d ", buf[j]);
      }
    }

    程序运行结果如:

    这是一道常见的编程练习题。这类题目能用穷举法首先使用穷举法,然后再想着怎么设计通用的算法,以适用尽可能多的情况。每天进步一点点,关注小编,每天和小编一起打卡学习吧!

     

    展开全文
  • 统计一个整数的位数 本题要求编写程序,对于给定的整数N,它的位数。 输入格式: 输入在一行中给出一个绝对值不超过10​9的整数N。 输出格式: 在一行中输出N的位数。 输入样例1: 12534 输出样例1: 5 输入样例2:...

    统计一个整数的位数

    本题要求编写程序,对于给定的整数N,求它的位数。

    输入格式:

    输入在一行中给出一个绝对值不超过10​9的整数N。

    输出格式:

    在一行中输出N的位数。

    输入样例1:

    12534

    输出样例1:

    5

    输入样例2:

    -987600321

    输出样例2:

    9

    输入样例3:

    0

    输出样例3:

    1

    我的代码

    #include<stdio.h>
    int main()
    {
    	int n,count;
    	scanf("%d",&n);
    	if(n<0)
    	{
    		n=-n;
    	}
    	do
    	{
    		count++;
    		n=n/10;
    	}while(n!=0);
    	printf("%d",count);
    	return 0;
    }
    
    展开全文
  • 二级C语言求一个的位数以及每一位以及逆序输出的暴力解法。 1、求几位数只要介于该区间就行了 2、求每一位从最高位到最低位依次进行整除运算 3、逆序输出 巧用输出格式控制 #include<stdio.h> int main() { ...
  • 一个不多于5位整数,要求:一、出它是几位数,二、逆序打印出各位数字 程序分析 可以使用数组来存放我们输入数字,而且在存放前,我们先进行处理,按照要输出顺序存放进去 主要代码 int main(){ int ...
  • 一个不多于5位整数,要求: 1、出它是几位数; 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123;
  • C语言 求整数的位数及各位数字之和

    千次阅读 2020-08-27 18:44:07
    求整数的位数及各位数字之和 题目描述: 对于给定的正整数N,它的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过10 ​9 ​​ 的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间...
  • c语言 求整数的位数及各位数字之和

    千次阅读 2020-03-08 11:04:14
    对于给定的正整数 N,的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过 10 ​9 ​​ 的正整数 N。 输出格式: 在一行中输出 N 的位数及其各位数字之和,中间用一个空格隔开。 我的答案 #include...
  • 这道题也很简单:利用模运算和除运算依次、十、百。。。。位值并打印,然后位数累加即可。 直接看程序: #include <stdio.h> #include <stdlib.h> int main() { int i; int digits(int); ...
  • switch(x) { case 1: printf("你选择了加法,请输入两个整数:"); scanf("%s%s",s1,s2); printf("\n%s + %s",s1,s2); addmain(s1,s2,sResult); break; case 2: printf("你选择了减法"); break; default: printf(...
  • 给出一个不多于5位的整数,要求 1、出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位数字 输出 三行 第一行 位数 第二行 用空格分开每个数字,注意...
  • C语言 输入一个4位数的整数,要求逆序输出(4582变成2854) 代码: #include <stdio.h> void main(){ int num,a,b,c,d,s; printf(“请输入一个位数的整数:\n”); scanf("%d",&num); a=num/1000; //千位...
  • /输入一个整数各位数字之和,及位数,例如234 和为9 位数3/#include int main(void) { int integer,count=0,sum=0; printf("Enter a integer"); scanf("%d",&integer); if(integer) integer=-integer;
  • 【qduoj】C语言_求整数位数之和

    千次阅读 2018-09-03 23:54:10
    10),做r次下列运算:输入一个整数,输出它的位数及各位数之和。 输入   同上 输出   同上 输入样例 1  3 123456 -100 99 输出样例 1 number=6,sum=21 number=3,sum=1 number=2,sum=18   解题...
  • 对于给定的正整数N,的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过10 ​9 ​​ 的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 请问哪位大神能给出...
  • 要理解此示例,您应该了解以下C语言编程主题:该程序从用户处获取一个整数并计算位数。例如:如果用户输入2319,则程序输出将为4。程序计算位数#includeintmain(){longlongn;intcount=0;printf("输入一个整数:");...
  • 1、先来例子,计算a*b=c,理解数组中位数逐个相乘步骤: 987*654;利用数组计算,则a[0]=9,a[1]=8,a[2]=7;b[0]=6,b[1]=5,b[2]=4; 第趟计算,用9分别与6、5、4相乘,得:c[0+0]=54,c[0+1]=45,c[0+2]=36;...
  • 对于给定的正整数N,的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过10^9​的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 输入样例: 321 输出样例: 3 ...
  • 【问题描述】输入一个整数n,的位数以及各位数字之和。例如,123的位数是3,各位数字之和是6。 【输入输出样例1】 Input n:1280 count=4,sum=11 【输入输出样例2】 Input n:-99 count=2,sum=18 【样例说明】 ...
  • C语言 输入一个整数,输出每位数字之积。列如,输入234,输出24。 代码: #include <stdio.h> void main(){ int num,s=1; printf(“Input number:”);//输入一个数 scanf("%d",&num); while(num>0) { s...
  • Code: /*给一个整数,要求: 1.出它是几位数; 2.分别输出每一位数字; 3.按逆序输出各位数字, */ #include #include void main() { int a,b,c,d,i=0
  • 给出一个不多于5位的整数,要求 1、出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字 输入: 一个不大于5位数字 输出: 输出三行, 第一行 位数, 第二行 用空格分开每个数字,注意最后一个数字后...
  • 7-1 统计一个整数的位数 -------------------------do-while循环典型例题--------------------------- 本题要求编写程序,对于给定的整数N,它的位数。 输入格式: 输入在一行中给出一个绝对值不超过10的九次方的...
  • 对于给定的正整数N,的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过10​9​​的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 输入样例: 321 ...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 297
精华内容 118
关键字:

c语言求一个整数的位数

c语言 订阅