• 统计数字问题1


    # include "stdlib.h"
    # include "stdio.h"

    //统计数字问题,此算法并不高效。还可以改进

    int f( int nn);


    void main()

    {
     int i,j,m,mm,n,nn,k=0,n1=1,n2,t=0,sumn2;
     int a[10];//0,1,...9
     
     printf("输入页码\n");
     scanf("%d",&n);
           nn=n;

    while (nn/10)
     {
      k++;
      nn/=10;
     }
       
     printf("页码为%d 位数\n",k+1);
       
     for (i=1;i<=k;i++)
      
     {
      n1 *= 10;
     }
     n2=n1;
     sumn2=0;
     while (n2)
     {
      sumn2+=n2/10;
      n2/=10;

    }

    printf("相关系数 如下:n=%d, n1=%d,n2=%d ",n,n1,n2);
     printf(",k=%d",k);
     for (i=0;i<=9;i++)
     {
      a[i]=0;
     }//数组的初始化
     if (k==0)
     {
      for (i=1;i<=n;i++)
       a[i]=a[i]++;
     }//一位数的情况
     else
          
      for(i=0;i<=9;i++)
      {
       a[i]=f(k);//0的问题要注意
      
      }
      a[0]-=sumn2;
        for (m=n1;m<=n;m++)
      
     {
      mm=m;
       while(mm)
       {

    j=mm%10;
          a[j] = a[j]+1;
          mm/=10;

    }
     }
      
     }
     printf("\n");
     for(i=0;i<=9;i++)

    printf("a[%d]=%d\n",i,a[i]);

    }


    //-------f()的描述为n个0 到n个9的次数,0 为特殊情况

    int f (int nn)
       
      int sumf=nn,i;
      for(i=1;i<=nn-1;i++)   sumf *= 10;
      return (sumf);
     }//end f()
      -----结果显示---------------------------------------------
    输入页码
    11
    页码为2 位数
    相关系数 如下:n=11, n1=10,n2=0 ,k=1
    a[0]=1
    a[1]=4
    a[2]=1
    a[3]=1
    a[4]=1
    a[5]=1
    a[6]=1
    a[7]=1
    a[8]=1
    a[9]=1
    Press any key to continue

  • 相关阅读:
    如何提高完成端口的性能
    我回来了
    减少资源包中的图片,提高效率
    新的MOVE结构,和在项目中实际的感受
    截图小结
    本周小记
    css选择器
    CSS的三种引入方式
    A标签的四个伪类(L V H A)排序上的讲究
    关于CSS清理浮动的方法
  • 原文地址:https://www.cnblogs.com/big4panda/p/6417618.html
Copyright © 2020-2023  润新知