N为正整数,计算从1到N的所有整数中包含数字1的个数.用(c++)

比如,N=10,从1,2...10,包含有2个数字1.

第1个回答  2013-06-17

确定是C++? 把数字转化成字符串,然后搜索相应的字符即可。 下面是一个简单的实现:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

bool isDigitinNumber(const unsigned int digit, const unsigned int number);

int main(int argc, char** argv) 
{
    const unsigned int num = 145; // 整数 N
    const unsigned int digit = 1; // 待搜查的数字
    unsigned int cnt = 0; // 包含数字的次数统计
    
    for (unsigned int i = 0; i < num; i++)
    {
        if ( isDigitinNumber(digit, i) )
        {
            cnt ++;
            cout << i << " "; // 调试输出,可以关闭
        }
    }
    cout << endl;
    cout << "Total " << cnt << " digit(s) of " << digit 
         << " in the Number " << num << endl;
    
    return 0;
}

bool isDigitinNumber(const unsigned int digit, const unsigned int number)
{
    bool found = false;
    stringstream ss_number, ss_digit;    
    size_t pos;
    
    ss_number << number;        
    ss_digit << digit;    
    
    pos = ss_number.str().find(ss_digit.str());
    if (pos != string::npos)
       found = true;
       
    return found;
}

追问

谢谢!

追答

不必客气。 是否符合你的要求? 或还有其它需要,比如希望代码最少,希望是存C,或者C++,都请明说。

追问

嘿嘿,表示看不懂,我只看懂简单的(c++)

追答

所以我一开始就问你,是否C++。 是C还是C++?iostream,string等都是STL,即C++的标准库。

本回答被网友采纳
第2个回答  2013-06-16
比如 1201,这样做
先 拿10取余数,看末尾是否是1

然后 1201/10得到 120
再拿120%10

然后120/10 得到 12
。。。。
第3个回答  2016-12-04
#include<stdio.h>
int main(){
int n,i,a[10000],b,t;
while(scanf("%d",&n)!=0){

for(i=1;i<=n;i++){
t=0;b=i;

while(b>0){
if(b%10==1){
t++;
}
b=b/10;
}
a[i]=a[i-1]+t; }
printf("%d\n",a[n]);
}
}
第4个回答  2013-06-16
#include "stdio.h"
#define N 5

short fun(short *a);
void input(short *a);

main()
{
    short a[N];
    
    input(a);
    
    printf("%hd",fun(a));
}
short fun(short *a)
{
 short i;
 short count=0;
 
 for(i=0;i<N;++i)
     if(a[i]==1)
         count++;
   
 return count;
}
void input(short *a)
{
 short i;
 
 for(i=0;i<N;++i)
     scanf("%hd",a+i);
}

追问

谢谢!

第5个回答  2013-06-17
你想要别人给你写代码啊?

N为正整数,计算从1到N的所有整数中包含数字1的个数.用(c++)
确定是C++? 把数字转化成字符串,然后搜索相应的字符即可。 下面是一个简单的实现:include <iostream>#include <sstream>#include <string>using namespace std;bool isDigitinNumber(const unsigned int digit, const unsigned int number);int main(int argc, char** argv) { const unsigned int...

题目:(c++)N为正整数,计算从1到N的所有整数中包含数字1的个数。 求...
可另设正整数k,令k=i include<iostream>using namespace std;int main(){int n,k,temp,cnt=0;cin>>n;for(int i=1;i<=n;i++){k=i;while(k){temp=k%10;if(temp==1) cnt++; cout<<cnt; k\/=10; }}cout<<"出现1的次数为:"<<cnt;return 0;} ...

C语言 N为正整数,计算从1到N的所有整数中包含数字1的个数
如下:\/*用c语言编写程序 输入一个正整数n,求1到n的数中1出现的个数 \/#include"stdio.h"intcount(int n){int i,j,c=0;for(i=1;i<=n;i++){ j=i; while(j!=0){if(i%10==1) \/*判断位数中是否有1*\/{c++;} j=j\/10; \/*让数除以十让他原来的高位变为低位,即原来的十位...

...程序:用户输入一个正整数N,计算从1到N(包含1和N)相加后的结果。 求...
用Python编写程序:用户输入正整数n,计算从1到n(包括1和n)相加的结果。实际上,它仍然是一个递归求和。第一个文本版本,然后添加图片。N=input(“please input integer N:”)sum=0 对于范围内的I(int(N)):(空四个空格)sum=I 1 print(“1 to N summation result:”,sum)“空四...

c++怎么计算一个数列中数字的个数?
int n=0;int i;int data;printf(“请输入一串数:\\n”);\/\/这个数值是Int类型的别超过最大值,既可 scanf(“%d”,&data);int num[10] = {0};while(data){ n = data%10;data \/=10;++num[n];} for(i = 0; i<10; i++){ if(num[i] > 0)printf(“数%d出现的次数是:%d”...

C语言输入一个正整数倒序输出1到n内所有整数每行一个
include<stdio.h> int main(){ int n;printf("请输入一个正整数:");scanf("%d",&n);for(; n;)printf("%d\\n",n--);return 0;}

用c++编程 输入一个整数n,输出1!+2!+3!+……+n! 急急急急急!
先写出一个如下的函数:int fun(int n){ int s=1;for(int i=1;i<=n;i++)s*=i;return s;} 然后在主函数中调用反复调用它 int main(){ int n;while(cin>>n){ int sum=0;for(int i=1;i<=n;i++){ sum+=fun(i);} cout<<sum<<endl;} } ...

...要求用户输入一个正整数n,采用循环计算从1到n的和。例如,如果输入的...
n = int(input())total = 0 for x in range(1,n+1):total += x print(total)

C++ 给你n个整数,求他们中所有奇数的乘积。
h> int main(){ int n, t, s, a, b;while (scanf("%d", &n) != EOF){ t = 0;b = 1;while (n > t){ t = t + 1;scanf("%d", &s);a = s % 2;if (a != 0)b = s * b;} if(n>0) printf("%d\\n", b);} return 0;} 如果n小于等于0,怎么处理呢?

从键盘上任意输入一个整数n,编程计算并输出1~n之间的所有素数及所有素数...
int sum=0;printf("请输入一个大于2的整数:");scanf("%d",&n);l=n;for(;n>=2;n--){ for(i=2;i<n;i++){ if(n%i!=0)\/\/判断其为素数 t=1;1 else { t=2;break;} } if(t==1){ sum+=n;\/\/printf("%d ",n);\/\/输出1-n之间的所有素数 } } printf("1-%d之间的...

相似回答