4 条题解

  • 4
    @ 2023-11-30 21:19:56

    用数组去接收数字,数组下标代表每个个位数字,用数组的值代表每个数字出现的个数(来自csdn) #include <stdio.h> int main( ) { int i,M,N,b; int a[10]={0}; scanf("%d %d",&M,&N); for(i=M,i<=N;i++) { int num=i;//用变量num去代表i,不然进入while后i的值最终会变成0; while(num>0) { b=num%10; num/=10; a[b]++; } } for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; }

    • 3
      @ 2023-10-13 23:45:22

      #include <stdio.h>

      int main() { int number[10]={0};

      int m,n,k;
      scanf("%d %d",&m,&n);
      int num=m;
      for(k=1;k<=n-m+1;k++){
      	while(num!=0){
      		number[num%10]++;
      		num/=10;
      	}
      	num=m+k;
      }
       for(int p=0;p<=9;p++){
       	printf("%d ",number[p]);
       }
      
      
      return 0;
      

      }

      • 1
        @ 2024-10-12 0:58:48

        我这个更好理解一些,不过写的话还是按照下面曹操学长写的

        #include <stdio.h>

        int main () {

        int m, n;

        scanf("%d %d", &m, &n);

        int a[10] = {0};

        for (int i = m; i <= n; i++) {

        int k = i;

        while (k > 0) {

        int b = k % 10;

        if (b == 0) {

        a[0]++;

        } else if (b == 1) {

        a[1]++;

        } else if (b == 2) {

        a[2]++;

        } else if (b == 3) {

        a[3]++;

        } else if (b == 4) {

        a[4]++;

        } else if (b == 5) {

        a[5]++;

        } else if (b == 6) {

        a[6]++;

        } else if (b == 7) {

        a[7]++;

        } else if (b == 8) {

        a[8]++;

        } else if (b == 9) {

        a[9]++;

        }

        k /= 10;

        }

        }

        for (int k = 0; k <= 9; k++) {

        printf("%d ", a[k]);

        }

        return 0;

        }

        • 0
          @ 2025-1-5 11:59:14
          #include<stdio.h>
          #include<iostream>
          const int N=10;
          int f[N];
          using namespace std;
          int main()
          {
          int m,n;
          cin>>m>>n;
          for(int i=m;i<=n;i++)
          {
          while(i>0)
          {
          int t=i%10;
          f[t]++;
          i=i/10;
          }
          }
          for(int i=0;i<10;i++)
          {
          cout<<f[i]<<" ";	
          }
          return 0;
          }
          错误在于我用i直接去操作,你应该赋值一个临时变量去操作,在循环次数的控制上应该用N-M这个条件,这个题这样写侥幸ac,请看下面ALEX大佬写的控制条件🚀️
          
          • 1

          信息

          ID
          101
          时间
          1000ms
          内存
          256MiB
          难度
          4
          标签
          (无)
          递交数
          522
          已通过
          238
          上传者