算法设计与分析 1-1 统计数字问题(C语言版)

问题描述:
    一本书的页码从自然数1开始顺序编码直到自然数n。书的页码 按照通常的习惯编排,一个页码内都不包含多余的前导数字0.例如,第6页用数字6表示,而不是06或006等;数字计数问题要求给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,……9.
编辑任务:
    给定表示书的总页码的十进制数n。变成计算书的全部页码  中分别用到多少次0,1,……9.
数据输入:
     输入数据由文件名为input.txt的文本文件提供。每个文件只有一行,给出表示书的总页码的整数n。
 
 
结果输出:
     程序运行结束时,将计算结果输出到文件output.txt中。输出文件共有10行,在地k行输出页码中用到的数字(k-1)的次数,k=1,2,……10.
c程序代码如下:
(此题用到了重定向问题)
#include<stdio.h>
#include<stdlib.h>
int a[10]={0};	
void count(int n)
{


    while (n > 0)
    {
        a[n%10] += 1;
        n = n/10;
    }
}
int main()
{


	int i,j,n;
	freopen("E:\\input.txt", "r", stdin);           
	freopen("E:\\output.txt","w",stdout) ; //此时若把 freopen("E:\\output.txt","w",stdout)注释掉,便可以在控制台看到结果! 
    int temp;
	 scanf("%d",&temp);              
	for(i=1;i<=temp;i++) 
	{
	 count(i); 
     }
	 for(j=0;j<=9;j++)
	 	{
	     printf("%d\n",a[j]); //在控制台输出结果 
		  
	    }
	         
} 
/*(1)我们平常读取数据都要从stdin读取,就是从标准输入读取数据,用freopen("file.in", "r", stdin),
就是不再从stdin读取,而是从file.in读取;
(2)平常写数据是写到stdout,就是写到标准输出,显示在控制台上,用freopen("file.out", "w", stdout);
就是直接写在file.out文件里,不在控制台上输出了
(3)函数 scanf() 是从标准输入流 stdin 中读内容的通用子程序,可以读入全部固有类型的数据并自动转换成机内形式。
所以说,scanf此时读取的便是文件中的数据,并把它保存在了变量temp中 */

你可能感兴趣的:(算法设计与分析 1-1 统计数字问题(C语言版))