问题:
输入一个数,这个数的取值范围在1~一个十位数之间,然后让你输出,从0到这位数一共出现多少个1;
例如
输入 1
输出 1
输入 13
输入 6 (1,10,11,12,13)这几个数含有的1相加
解决方案:
①从1到这位数循环遍历一次,每次统计出现1的个数。
#include<iostream>
using namespace std;
long longint ATT(long long int n)
{
long long int count=0;
while(n)
{
count+=(n%10==1)?1:0;
n=n/10;
}
return count;
}
int main()
{
long long int i,count=0,n;
cout<<"请输入一个合法的数:"<<endl;
cin>>n;
for(i=0;i<=n;i++)
{
count+=ATT(i);
}
cout<<count<<endl;
return 0;
}
缺点: