有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
思路:循环遍历每一位数字的情况,除去带有”4“的。第一位从不能取0,所以从1开始。
#include
int main()
{
int a,b,c,d,e,sum=0;
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
for(c=0;c<=9;c++)
{
for(d=0;d<=9;d++)
{
for(e=0;e<=9;e++)
{
if(a==4||b==4||c==4||d==4||e==4)
continue;
else
sum++;
}
}
}
}
}
return 0;
}
这个题可以这样解吧,为什么调试不出答案呢?
第一点 b应该可以为0 第二点 你压根没写输出 你想咋调试答案
1,代码不建议写多层循环嵌套
2,想看调试结果,可以在想看结果的位置log日志看一下
希望能帮你
10000-99999
第一位出现4 有 10000 种 表现40000 ~ 49999 格式:4****
第二位出现4有 8*1000 种 表现14000 ~ 14999 格式:*(1,2,3,5,6,7,8,9)4*** (除去 4 4***,因为已经包含在1中了)
第三位出现4有 8*8*100种 表现为 12400 ~ 12499 格式:*(1,2,3,5,6,7,8,9)*(1,2,3,5,6,7,8,9)4**
第三位出现4有 8*8*8*10种 表现为 12400 ~ 12499 格式:*(1,2,3,5,6,7,8,9)*(1,2,3,5,6,7,8,9)*(1,2,3,5,6,7,8,9)4*
第三位出现4有 8*8*8*8*10种 表现为 12400 ~ 12499 格式:*(1,2,3,5,6,7,8,9)*(1,2,3,5,6,7,8,9)*(1,2,3,5,6,7,8,9)*(1,2,3,5,6,7,8,9)4
如果把这些加起来就得结果咯:10000 + 8*1000 +8*8*100 +8*8*8*10 +8*8*8*8*1 = 25616 种
可用奖券:100000 -25616 = 74384
按着思路设计应该不难,施主可以自行设计。
没有做分析就直接跑代码,这样数据过大时会把计算机跑死,望施主多多分析。
题主不要听他们胡说,这点数据量用暴力是最简单的方法(#滑稽)
调试不出结果是因为你没有输出sum吧。。。
你在后面加上printf就可以出结果了。。
嗯,就在return 0;的前一行加上 printf("%d",sum);
没有输出当然调试不出来