严凯 发表于 2020-12-9 17:25:09

算法

#include<stdio.h>
int main()
{
        int i,count=0;
        for(i=1;i<=2020;i++)
        {
                if((i%10)==2)//对个位是否为2进行检查
                        count++;
                else if(19<(i%100)&&(i%100)<30)//对十位是否为2进行检查
                        count++;
                else        if(199<(i%1000)&&(i%1000)<300)   //同样百位
                        count++;
                else if(1999<(i%10000)&&(i%10000)<3000)   //千位检查
                        count++;
        }
        printf("%d",count);
        return 0;
}




//我这个是要求从1到2020,一共有多少个字符2,但是结果少了几十,正确答案是624.我这个是if else有问题吗?

昨非 发表于 2020-12-9 19:06:56

你漏了个十百千位同时有两个及其以上个2的情况
自己先改改

头发 发表于 2020-12-9 19:10:02

for循环的语句中一个成立就不会执行下一个了,所以会少。

严凯 发表于 2020-12-9 19:31:30

昨非 发表于 2020-12-9 19:06
你漏了个十百千位同时有两个及其以上个2的情况
自己先改改

漏倒是没有漏,主要是我把if else语句弄错了,我记得我昨天专门试了一下if else ,结果得出了错误的答案,我以为 if   else if   else if 这些会每一个都判断一次,

昨非 发表于 2020-12-9 19:33:52

严凯 发表于 2020-12-9 19:31
漏倒是没有漏,主要是我把if else语句弄错了,我记得我昨天专门试了一下if else ,结果得出了错误的答案 ...

?就是漏了啊{:10_277:}

严凯 发表于 2020-12-9 20:21:34

昨非 发表于 2020-12-9 19:33
?就是漏了啊

我的我的,我理解能力有限。。。。。。。{:10_285:}
页: [1]
查看完整版本: 算法