永发信息网

C++编程问题,一本书的页码从1到600连续编号,则数字0到9在页码中各出现多少次?

答案:2  悬赏:0  手机版
解决时间 2021-03-27 15:15
C++编程问题,一本书的页码从1到600连续编号,则数字0到9在页码中各出现多少次?
最佳答案
#include 
#include 
void  statNum(int sn[10], int n)
{
    int i, c, k, s, pown;
    for(int i = 0; i < 10; i++)
        sn[i] = 0;
    for(k=s=0, pown=1; n > 0; k++, n /=10, pown *=10)
    {
        c = n%10;
        //先补0
        //统计从个位算起前k位 0 ~ 9 个数
        for(i=0; i < 10; i++)                 
            sn[i] += c*k*pown/10; 
       //  统计第k+1位出现 0 ~ (c-1) 个数              
        for(i=0; i < c; i++)                 
            sn[i] += pown; 
       //  统计第k+1位出现 c 个数              
        sn[c] += 1 + s; 
        
        //  去掉第k+1位补 0 个数              
        sn[0] -= pown;
        s += c*pown;
    }
}

void  main(int argc , char *argv[])
{
    int sn[10], i, n=2030;
    if(argc > 1)
        n = atoi(argv[1]);
    printf("n = %d
", n);    
    statNum(sn, n);
    for(i=0; i < 10; i++)
        printf("%d: %d
", i,sn[i]); 
}
全部回答

以下代码用C#编写,C++中应该能通用,关键是拆解数字,这类操作单片机数码管显示编程中非常常用(输出结果部分可能需要修改,也可删除)
private void Calc()
{
        //存放0~9的数目,正好0的位置放的0的数目,1的位置放的1的数目
    int[] sumNumbers = new int[10];
    for (int i = 600; i > 0; i--)
    {
        //拆解数字成百位,十位和个位
        int bai = 0, shi = 0, ge = 0;
        if (i >= 100)
        {
            bai = i / 100;
            sumNumbers[bai]++;
            shi = i % 100 / 10;
            sumNumbers[shi]++;
            ge = i % 10;
            sumNumbers[ge]++;
        }
        else if (i >= 10)
        {
            shi = i / 10;
            sumNumbers[shi]++;
            ge = i % 10;
            sumNumbers[ge]++;
        }
        else
            sumNumbers[i]++;
    }
    //输出结果部分 可删除
    string s = "";
    for (int i = 0; i < 10; i++)
    {
        s += (i.ToString() + " ==> " + sumNumbers[i].ToString() + Environment.NewLine);
    }
    MessageBox.Show(s);
}
祝编程快乐~
@所有人   如果觉得回答的不错,记得给点个赞哦,谢谢~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
江西南昌带女孩出去玩去哪玩好?
女生158体重48.3公斤去脂体重36.8基础代谢131
宠文,哥哥是妹控,妹妹是萌萝莉,但不是亲兄妹,
莫攀我,攀我太心偏,是什么意思?
河南冬季温室大棚管理方法有哪些
看见野兔屎怎么下夹
单反百微镜头最近对焦距离0.3m 是什么意思?
贷款35万元,期限15年,已经还了4年,现在还一部
L'Enigme-sans-Fin是什么意思
宅基地报建手续提交给部门后,我把自己原住房
侧生分生组织相当于次生分生组织对吗
用简便方法计算405除以45除以3=多少
旧时藁城境内有哪些寺庙祠堂?
2017年2月15日华锦股票是涨还是跌
垦利园博园作文用一处排比句
推荐资讯
穿越火线财富等级
潜水艇是仿照什么动物的
一个女人,只要能让男人张得开嘴,
百度起名陈梓毫名字行吗
为什么直男都喜欢杨超越
要算一张纸板的价格,怎么算
求E伯爵的文集下载地址
安多香巴拉饭店-商务中心这个地址在什么地方
怎样选窗帘导轨
我是男生,21.白天上班九个小时,找了个兼职
什么是安图恩对眼?
老父亲要做寿材是不是得看个日子
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?