方法一:笔算
第五位数有9种可能,第一位数到第四位数有10种可能,排除4,则答案为89999=52488
方法二:利用求余运算
#include<stdio.h>
int judge(int i){
while(i>0){
if(i%10==4)
return false;
i/=10;
}
return true;
}
int main(){
int i;
int count=0;
for(i=10000;i<=99999;i++){
if(judge(i))
count++;
}
printf("%d",count);
return 0;
}
方法三:利用for循环暴力破解
#include<stdio.h>
int main(){
int i,j,k,l,n;
int count=0;
for(i=1;i<=9;i++){if(i==4)continue;
for(j=0;j<=9;j++) {if(j==4)continue;
for(k=0;k<=9;k++){if(k==4)continue;
for(l=0;l<=9;l++){if(l==4)continue;
for(n=0;n<=9;n++){if(n==4) continue;
count++;
} } } } }
printf("%d",count);
return 0;
}
错误做法,以为的小聪明,其实是自欺欺人,小聪明只有经历实践证实了才是小技巧,没有经历实践只是自己的小聪明
#include<stdio.h>
//错误思维,i!=4,当i=4时for循环就结束了,不会再执行下去,即5,6,7,8,9都没有执行,最后错误结果为768
int main(){
int i,j,k,l,n;
int count=0;
for(i=1;i<=9j!=4;i++)
for(j=0;j<=9&&j!=4;j++)
for(k=0;k<=9&&k!=4;k++)
for(l=0;l<=9&&l!=4;l++)
for(n=0;n<=9&&n!=4;n++)
count++;
printf("%d",count);
return 0;
}