C++编程问题,一本书的页码从1到600连续编号,则数字0到9在页码中各出现多少次?
答案:2 悬赏:0 手机版
解决时间 2021-03-27 15:15
- 提问者网友:贪了杯
- 2021-03-27 01:32
C++编程问题,一本书的页码从1到600连续编号,则数字0到9在页码中各出现多少次?
最佳答案
- 五星知识达人网友:大漠
- 2021-03-27 02:01
#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]);
}
#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]);
}
全部回答
- 1楼网友:思契十里
- 2021-03-27 03:00
以下代码用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);
}
祝编程快乐~
@所有人 如果觉得回答的不错,记得给点个赞哦,谢谢~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯