首页 > 试题广场 >

包含数字9的数

[编程题]包含数字9的数
  • 热度指数:35039 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

今年是2019年,KiKi想知道1~2019中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。


输入描述:


输出描述:
一行,一个整数,表示1~2019中共有多少个数包含数字9。
#include<stdio.h>
int main()
{
    int i , one , ten , hun , kilo , i_output = 0;
    for( i = 1 ; i <= 2019 ; i++ )
    {
        one = i % 10;//个位
        kilo = i / 1000;//千位
        hun = (i - kilo * 1000) / 100;//百位
        ten = (i - kilo * 1000 - hun * 100) / 10;//十位
        if( one == 9 || kilo == 9 || hun == 9 ||ten == 9) i_output++;
    }
    printf("%d",i_output);
}

发表于 2022-06-15 10:34:12 回复(0)
#include <stdio.h>
int main()
{
    int n,sum=0;
    for(n=1;n<=2019;n++)
    {
        if((n+1)%10==0||(n+10)%100==0||(n+100)%1000==0)//9 90 190 1900 1990等类似的包含9的整数
        {
            sum++;
        }
        else if(n/100+1==(n+10)/100||n/1000+1==(n+100)/1000)//9x x9x 9xx 19xx 1x9x等上述判断条件不能判断出来的包含9的整数
        {
            sum++;
        }
    }
    printf("%d",sum);
    return 0;
}

发表于 2022-02-28 21:49:39 回复(0)
public class Main{
    public static void main(String[]args)
    {
            int sum=0;
            for(int i=1;i<=2019;i++)
            {
                String str=i+"";
                if(str.contains("9"))
                {
                    sum++;
                }
            }
            System.out.println(sum);
    }
}

发表于 2022-01-22 11:32:07 回复(0)
#include <stdio.h>
int main()
{
    int i,j,n,count=0;
    for(i=1;i<=2019;i++){
        n=i;                                //用n继承i的值进行计算
        for(j=0;;j++){                      //对比当前数值从个位数开始的每一位数的值
        if(n==9||n%10==9) {count++;break;}  //从1到2019每次数值中有9就count加1直接跳出
        n=n/10;
        if(n==0) break;                     //个位数也不是9就跳出
        }
    }
    printf("%d",count);
    return 0;
}

发表于 2021-09-13 21:10:50 回复(0)

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        int index=0, temp;
        int counter=0;
        for(index=0; index<2020; index++){
            temp = index;
            while(temp>0){
                if(temp % 10 == 9){
                    counter++;
                    break;
                }
                temp = temp/10;
            }
        }
        System.out.println(counter);
    }
}

发表于 2021-06-05 17:04:49 回复(1)
#include <iostream>
using namespace std;

int main()
{
    int count = 0;
    for (int i = 1; i <= 2019; ++i)
    {
        if (i < 10 && (i / 9 == 1))
            ++count;
        else if (i < 100 && (i % 10 / 9 == 1 || i / 10 / 9 == 1))
            ++count;
        else if (i % 10 / 9 == 1 || i / 10 % 10 / 9 == 1 || i / 100 % 10 / 9 == 1)
            ++count;      
    }
    cout << count << endl;
    return 0;
}
发表于 2020-03-23 22:35:53 回复(0)
count=0
for i in range(1,2020):
    t=i
    while t>0:
        if t%10==9:
            count+=1
            break
        t=int(t/10)
print(count)

发表于 2022-02-24 14:27:40 回复(0)
#include <bits/stdc++.h>
using namespace std;
int main(){
    int a, b, c, d;
    int count = 0;
    for(int i=1; i<=2019; i++){
        a = i%10; // 个位
        b = i/10%10; // 十位
        c = i/10/10%10; // 百位
        d = i/10/10/10%10; // 千位
        if(a==9 || b==9 || c==9 || d==9)
            count++;
    }
    cout<<count;
    return 0;
}

发表于 2022-01-21 18:08:49 回复(0)
sum=0
for i in range(1,2020):
    if '9' in str(i):
        sum=sum+1
print(sum)
发表于 2021-01-15 17:14:54 回复(0)
#include <stdio.h>
/* 每100个数字中有19个带9的数字 */
/* 每1000个数字中有9*19+100个带9的数字 */
/* 0~2019中带9的数字 = 2*(9*19+100)+2 = 544 */
int main()
{
    printf("544\n");
    return 0;
}

发表于 2020-07-20 22:27:00 回复(15)
#include <stdio.h>

int main(void)
{
    int count = 0;
    int i, t1, t2, t3, t4;
    
    for (i = 1; i <= 2019; i++)
    {
        if (i < 10)
        {
            if (0 == i % 9)
            {
                count++;
            }
        }
        else if (i >= 10 && i < 100)
        {
            t1 = i / 10;
            t2 = i % 10;
            if (t1 == 9 || 9 == t2)
            {
                count++;
            }
        }
        else if (i >= 100 && i < 1000)
        {
            t1 = i / 100;
            t2 = i / 10 % 10;
            t3 = i % 10;
            if (t1 == 9 || 9 == t2 || t3 == 9)
            {
                count++;
            }
        }
        else
        {
            t1 = i / 1000;
            t2 = i / 100 % 10;
            t3 = i / 10 % 10;
            t4 = i % 10;
            if (t1 == 9 || 9 == t2 || t3 == 9 || 9 == t4)
            {
                count++;
            }
        }
    }
    printf("%d\n", count);
    
    return 0;
}
//可以用循环取数运算,拆分每一位数是最简单暴力的解法;
编辑于 2020-04-18 19:52:44 回复(0)
#include <stdio.h>
int main()
{
  int i, count=0;
  for(i=1; i<=2019; i++)
  {
    int m = i;
    while(m > 0)   //易被忽略的一点
    {
      if(m % 10 == 9)    //如果某数个位上是9
      {
        count++;    //计数+1
        break;      //跳出循环,检测下一个数
      }
       else
          m = m/10;  //否则截去个位,继续检查是否可以对10取余为9
     }
   }
    printf("%d\n", count);
  return 0;
}

发表于 2022-01-09 22:52:48 回复(7)
#include <stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 1; i <= 2019; i++)
	{
		int t = i;
		while (t)
		{
			if (t % 10 == 9)
			{
				count++;
				break;
			}
			t = t / 10;
		}
	}
	printf("%d\n", count);
	return 0;
}

发表于 2021-12-26 19:28:31 回复(0)
这道题给我整蒙了,排列组合了老半天,其实不用那么麻烦,一张图理解就ok了。


看懂了吧,代码里面附带一些解释,有兴趣的可以看下。
#include <stdio.h>

//组合排列啊!
int main(){
    int count = 0;
    //一位数        1个
    //二位数        9+10-1
    //由此可得 100内含有 19个
    //同理 1000内含有9*19+100
    count = 9*19+100;
    //2019以内含9的数字个数
    count = count * 2 + 2;//加上2009与2019
    printf("544\n");
    return 0;
}


发表于 2021-09-06 14:27:25 回复(2)
代码为C语言
 我的思路:
        遍历1-2019,用if语句判断符合条件的数字,并记录下来,最后输出个数。
#include <stdio.h>
#include <math.h>

int main()
{
    int flag=0;
    for(int i=1;i<=2019;i++)
    {
        if(i==9||i/10==9||i%10==9||i%100==9||i/10%10==9||i%10==9||i/100%10==9|i/10%100==9||i%10==9)
        {
            flag++;
        }
    }
    printf("%d",flag);
    return 0;
}

发表于 2021-01-01 13:31:18 回复(1)
#include <stdio.h>

int main() {
    int i, count = 0;

    for (i = 0; i <= 2019; i++) {
        int m = i;
        while (m) {
            if (m % 10 == 9) {
                count++;
                break;
            }
            m /= 10;
        }
    }
    printf("%d\n", count);
    return 0;
}

发表于 2024-01-17 22:18:12 回复(0)
#include<iostream>
using namespace std;
int main(){
 int n=1;
    int m=0;
    while(n<=2019){
    if(n%10==9||n/10%10==9||n/100%10==9)
        m++;
    n++;
    }
    cout<<m;
}

发表于 2022-08-04 00:42:03 回复(0)
#include <iostream>
using namespace std;
bool count(int x)
{
    int s = 0;
    while (x)
    {
        int e = x % 10;
        if (e == 9) return true;
        x /= 10;
    }
    return false;
}

int main()
{
    int n = 0;
    for (int i = 1; i <= 2019; i ++ )
        n += count(i);
    cout << n << endl;
    
}

发表于 2022-02-26 14:20:37 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int count = 0;
    for(int i = 1;i<2020;i++){
        if((i == 9)|| (i % 10 == 9)|| ((i /10) % 10 == 9 )|| ((i / 100)% 10 == 9) )
            count++;
    }
    cout<<count;
}

发表于 2020-09-29 22:13:48 回复(1)
#include <stdio.h>

int main() {
    int tag=0, a[3]={0};
    for(int i=1; i<=2019; i++){
        a[2] = i%10;
        a[1] = (i/10)%10;
        a[0] = (i/100)%10;
        if(a[0]==9 || a[1]==9 || a[2]==9){
            tag++;
        }
    }
    printf("%d", tag);
    return 0;
}
发表于 2024-01-20 11:20:48 回复(0)