#include<cstdlib> #include<iostream> using namespace std; int main() { int n; int result=0;

cin>>n;
for(int i=1;i<=n;++i)
{
i=n%10;
if(i==1||i==0)
result++;
n/=10;
}
cout<<result<<endl;
system("pause");
}
输入n,统计1到n之间只含有0和1的数(如1,10,11,100等)的个数
求助:程序哪里写错了?(⊙o⊙)?
急急急急!

这么说吧,需要两层循环,对于每一个自加得到的i,,都需要一次循环来判断是否满足条件。而且N的值是不能变化的。1~1000000测试正常,下面是我的代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
int main()
{
int n,i=0,result=0;
cin>>n;
while(i++<n)
{
int j=0,k=i;
while(1)
{
if(k==0||k==1)
{
result++;
break;
}
j=k%10;
if(j!=0&&j!=1)
break;
k=k/10;
}
}
cout<<result<<endl;
return 0;
}追问

while (1)是什么意思?谢谢!

追答

while(1)就是无限循环的意思,因为1!=0,所以条件满足,继续执行。直到执行break,退出循环。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-18
刚看到等我写完发给你
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,i,k,m;
int result=0;
cin>>n;
for(i=1;i<=n;i++)
{
k=i;
m=k%10;
k=k/10;
if((m==0||m==1)&&(k==1||k==0))
{
result++;
}
}
cout<<result<<endl;
return 0;
}

n<100是正确的 n>100自己改下追问

这是我同学的作业,直接把源代码发给我好吗?附加解释就更好了。我还得给她解释,自己也只是beginner,呵呵。
Tip:我原来程序100以内也是对的呀,~~~~(>_<)~~~~
帮我在源代码上改一改好吗,麻烦你了,谢谢喽!

第2个回答  2014-08-18
#include<cstdlib>
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int i;
char str[10000];
int result=0;
cout<<"请输入一个数;"<<endl;
scanf("%s",str);
for(i=0;i<5;i++)
if (str[i]!='\0')
{
if (str[i]=='1'||str[i]=='0')
result++;
}
cout<<"1和0的数目为:"<<result<<endl;
system("pause");
return 0;
}
算法本身有问题 我写的这个你试试 望采纳 上班之余写的
第3个回答  2014-08-18
i除了自增之外,还对它另外赋值了,肯定乱了啊追问

能具体写一下吗?谢谢!^-^
我是beginner,呵呵

第4个回答  2014-08-18
n没有初值呦~~
希望能解决您的问题。追问

能具体写一下吗?谢谢!^-^
我是beginner,呵呵