【发布时间】:2013-03-02 10:22:42
【问题描述】:
我正在做一个在线挑战,挑战如下: “孩子们在玩一个叫做“数数”的游戏。对于给定的数字 S 和 K,他们首先在这些数字之间写下所有数字,然后计算每个数字出现的次数(0,1,2,3,4,5,6 ,7,8,9)。例如,S=767,K=772,数字将为:767,768,769,770,771,772
所以,0 将显示一次(在 770 中),1 将显示一次(在 771 中)等等..
基本上,我的程序必须执行以下操作(给定示例):
输入: 1 9 (这些是数字 1,2,3,4,5,6,7,8,9)
输出: 0 1 1 1 1 1 1 1 1 1 (0不显示,其他数字显示一次)。”
我被这段代码困住了......没有想法。
#include <iostream>
using namespace std;
int main()
{
int s,k;
int array[10];
int c0=0,c1=0,c2=0,c3=0,c4=0,c5=0,c6=0,c7=0,c8=0,c9=0;
cin >> s >> k;
int saves = s;
int savek = k;
cout << s%10;
for(int i=s;i<=k;i++)
{
int savei=i;
while(savei!=0)
{
savei=savei%10;
}
}
感谢任何伪代码/sn-p/code/hint。
【问题讨论】:
-
如果号码包含多个数字怎么办?例如 770 ?
-
有两种方法可以做到这一点。一种是使用
sprintf()将每个数字转换为字符串,然后统计字符串中的位数。另一种是使用除法和模数从数字中获取每个数字,并计算它们。无论哪种情况,您都需要一个数组count[10]来包含每个数字的计数器。 -
顺便说一句,
for循环中的终止条件应该是i<=k,因为您的端点是包容性的。 -
while(val) {int dig = val % 10;val /= 10; /*用 dig 做事*/ }
-
@X-Factor 你在说什么?他不是想找到一个数字,而是想计算每个数字在一系列数字中使用了多少次。