用C语言编程:从1到300的自然数中,完全不含有数字3的有多少个?将所有含3的数字

如题所述

原理很简单,只要把数的每位取出,判断是否为3即可。
#include <stdio.h>

void main()
{
int k=0,a,b,c;
int i=300;

for(i=0;i<300;i++)
{
a=(int)i/100;
b=((int)i/10)%10;
c=i%10;
if((a!=3)&&(b!=3)&&(c!=3))
k++;
}

printf("%d\n",k);
}
答案为243,用数学验证过了,对的。
9+C8(1)*C9(1)+C2(1)*C9(1)*C9(1)=243
不知道你学了排列组合没得。这就是个例子。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-31
#include <stdio.h>
int main()
{
int i, k=0;
for(i=1;i<=300;i++)
{
int t=i,flag=1;
for(;t!=0;t/=10)
{
if(3==t%10)
{
flag=0;
break;
}
}
if(flag)
{
printf("%d ",i);
k++;
}
}
printf("\ncount: %d\n",k);
getchar();
}

其实上面那位同学的做法没错,似乎i的初始值是1吧,我的方法可扩展性更好些,如果范围更大的话
第2个回答  2010-10-31
很简单
int Count=0;
for(int 1=0;i<=300;i++)
{
CString str;
str.Format("%d",i);
if(str.Find("3");
Coun++;
}

ptintf("%d",Count);
相似回答