课堂练习_找出1的个数

一、思路想法

    在找出1的个数,首先不能用穷举的方法。在此程序中,我借鉴了同学的方法,将各个位

  上的数值的1的个数相加,最后得出最终的个数。

二、代码

  

#include "stdafx.h"
#include <stdio.h>
int Count(int num)
{
    int count,mul,num1,num2,num3;
    count=0;
    mul=1;                                             
    num1=num2=num3=0;
    while(num/mul)
    {
        num1=num-(num/mul)*mul;
        num2=(num/mul)%10;                
        num3=num/(mul*10);           
        switch(num2)                            
        {
        case 0:                           
            count+=num3*mul;
            break;
        case 1:   
            count+=num3*mul+num1+1;
            break;
        default:  
            count+=(num3+1)*mul;
            break;
        }
        mul*= 10;
    }
    return count;
 }
 int main(int argc, char* argv[])
 {
    int num,ones;
    printf("请输入一个正整数:");
    scanf("%d",&num);
    ones=Count(num);
    printf("该数值中1的个数为:%d
",ones);
    return 0;
 }

三、截图

  

四、总结

    在这次的代码中,我根据老师的想法并没有得出什么简单的规律,反而是在听了同学的想法和代码后才

  有了好的解决方法,即将每一位上出现1的次数记录下来,相加得出结果。

原文地址:https://www.cnblogs.com/littlechar/p/4477213.html