统计数字1~n中各位数的个数

// countnum.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "iostream "
#include "math.h"
using namespace std;

 int main()
{
  int totalNumber,digitalCount[10]={0},destinationNum,countNum,switchNum; 
   int  midNum,bit,countNum1,midVariable ;   //bit 表示位数
 
    do
 {
  cout<<"请输入一个数字,该数大于0且小于1000"<<endl;

  cin>>totalNumber;                     //最大数
  if(totalNumber<0 || totalNumber>=1000)
  {
   cout<<"你输入的数据有误,请重新输入:"<<endl;
  }//if

 } while (totalNumber<0 || totalNumber>=1000);

    for(destinationNum=1;destinationNum<=totalNumber;destinationNum++)
      {
     if(destinationNum>0 && destinationNum<10 )
     {
             bit = 0;
     }//if
     else
     {
              if(destinationNum>=10 && destinationNum<100 )
           {
                    bit = 1;
           }//if
     else
        {
                 if(destinationNum>=100 && destinationNum<1000 )
             {
                    bit = 2;
             }//if
        }//else
            }//else
          midVariable = destinationNum;
    while(bit>=0)
    {
          
     countNum = midVariable/ pow(10,bit)  ;
     switchNum = int(pow(10,bit));
     midNum = destinationNum % switchNum;
    midVariable = midNum;
     bit--;
     switch(countNum)
     {
      case 0 : digitalCount[0]++; break;
       case 1 : digitalCount[1]++; break;
      case 2 : digitalCount[2]++; break;
      case 3 : digitalCount[3]++; break;
      case 4 : digitalCount[4]++; break;
      case 5 : digitalCount[5]++; break;
      case 6 : digitalCount[6]++; break;
      case 7 : digitalCount[7]++; break;
      case 8 : digitalCount[8]++; break;
   case 9 : digitalCount[9]++; break;
   default : cout<<"error"; break;
     }//switch
    }//while
 }//for

    //输出结果
 for(countNum1 = 0; countNum1<10;countNum1++)
     {
      cout<<  countNum1 <<"的个数为:"<<digitalCount[countNum1]<<endl;
     }//for
 return 0;

 

 

 

 

 

 

 


}

 

 

运行结果

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值