一、思路想法
在找出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\n",ones); return 0; }
三、截图
四、总结
在这次的代码中,我根据老师的想法并没有得出什么简单的规律,反而是在听了同学的想法和代码后才
有了好的解决方法,即将每一位上出现1的次数记录下来,相加得出结果。
时间: 2024-10-26 09:19:59