统计数字问题-算法实现(暴力统计法)

来源:互联网 发布:55开老婆淘宝店叫什么 编辑:程序博客网 时间:2024/06/02 01:31

这是一个暴力统计法对数字问题的算法实现。

 

在编辑代码的过程中遇到了if语句在进行每个数字的分拆时遇到了1的个数缺少的问题,其最高为的1的个数缺少统计。

经过查明是因为if的使用只是基于判断使用,而我的代码中要使用到的是循环计数。因而要使用while来实现循环。

 

下面就是算法的实现过程:

 

// 暴力统计法.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<stdio.h>

int sum[10]={0};
void count(int);

int main(int argc, char* argv[])
{
 int n;
 printf("请输入一个页数:");
 scanf("%d",&n);
 for(int i=1;i<=n;i++)
 {
  count(i);
 }
 for(int j=0;j<10;j++)
 {
  printf("%d的个数为%d/n",j,sum[j]);
 }
 return 0;
}

void count(int n)
{
 while(n>0) //这里使用if(n>0)就是错了。结果会出现1的位数少最高阶层的个数个。
 {
  sum[n%10]+=1;
  n=n/10;
 }
}


/*
while和if最大的不同点是:
IF语句运行完毕后,接着运行下面的语句。
而While中的执行语句运行完毕后,还要进行继续判断条件是否符合循环条件,
根据判断的条件,返回执行语句或继续运行下面的程序。


while(表达式) 语句组; 计算表达式,若为真,执行语句,并重复该过程,直到为假时,执行下一条语句。
例如:while(k>0)i++;表示只要k>0,就执行i++;直到等到k<=0时,不执行i++;程序执行下面的语句。

  if属于判断语句,不是循环语句。而while是循环语句。
*/