1.7

一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。要求对给定的总页码n,统计0,1, 2,…,9每个数字分别被用到的次数。

输入:一个整数n (1≤n≤109),表示书的总页码。

输出:共有10 行,在第k 行输出页码中用到数字k-1 的次数,k=1,2,…,10

例如:

输入:11

输出:

1

4

1

1

1

1

1

1

1

1

要求,结果分别输出到屏幕和文本文件result.txt 中。

 1 #include<iostream>
 2 #include<fstream>
 3 using namespace std;
 4 int main()
 5 {
 6 int a[1000]={0},i=0,page,j,x,b[10]={0},m;
 7 cin>>page;
 8 for(x=1;x<=page;x++)
 9 {
10 m=x;    
11 while(m)
12 {
13 a[i]=m%10;
14 m=m/10;
15 i++;
16 }
17 }
18 for(j=0;j<i;j++)
19 {
20     m=a[j];
21     b[m]++;
22 }
23 ofstream spark;
24 spark.open("result.txt",ios::out);
25 for(i=0;i<10;i++)
26 {
27 cout<<b[i]<<endl;
28 spark<<b[i]<<endl;
29 }
30 spark.close();
31 }

要点:数字各位的统计

【文件题二】

对参赛结果分数进行处理:评委给每位选手打一个分数(分数为小于等于10的一个正实数),选手的最后得分为,去掉一个最高分和一个最低分后,剩余得分的平均值。

假设事先已经建立了文本文件in.txt,其中依次记录着5个选手的编号(一个正整数)、姓名(一个字符串)以及7个评委给出的得分。

1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2

2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3

3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6

4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3

5 liuyifan 9.5 9.1 9.8 9.2 9.0 9.5 8.9

请编制程序,依次从数据文件f1.txt中读入5个选手的有关信息,按上述规定方法计算出每一个选手的最后得分,根据最后得分排序后,往屏幕上以及另一个二进制文件out.txt中同时输出如下信息。

5 liuyifan 9.5 9.1 9.8 9.2 9 9.5 8.9 46.3 9.26

1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2 44.9 8.98

2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3 43.9 8.78

3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6 42.9 8.58

4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3 42.2 8.44

提示:设计结构体变量存储每个选手的信息,排序时将结构体变量作为一个整体进行排序,写入到二进制文件时,使用write()函数每次写入一个结构体变量。

 1 #include<iostream>
 2 #include<fstream>
 3 #include<string>
 4 using namespace std;
 5 fstream spark("in.txt",ios::in);
 6 fstream hunter("out.txt",ios::out|ios::binary);
 7 struct a
 8 {
 9 char number;
10 char name[20];
11 float grades[9];
12 };
13 int main()
14 {
15 a jojo[5];
16 char *p[5];
17 int i,j;
18 float total=0,max,min;
19 for(i=0;i<5;i++)
20 {
21     p[i]=&jojo[i].number;
22     spark>>jojo[i].number>>jojo[i].name;
23     for(j=0;j<7;j++)
24     spark>>jojo[i].grades[j];
25 }
26 for(i=0;i<5;i++)
27 {
28     max=jojo[i].grades[0];
29     min=jojo[i].grades[0];
30     for(j=0;j<7;j++)
31     {
32     total+=jojo[i].grades[j];
33     if(jojo[i].grades[j]>max) max=jojo[i].grades[j];
34     if(jojo[i].grades[j]<min) min=jojo[i].grades[j];    
35     }
36     jojo[i].grades[7]=(total-max-min);
37     jojo[i].grades[8]=(total-max-min)/5.00;    
38     total=0;
39 }
40 a box;
41 for(i=4;i>0;i--)
42 {
43 for(j=0;j<i;j++)    
44 {
45     if(jojo[j].grades[8]>jojo[j+1].grades[8])
46     {
47         box=jojo[j];
48         jojo[j]=jojo[j+1];
49         jojo[j+1]=box;
50      } 
51 }
52 }
53 for(i=4;i>=0;i--)
54 {
55     cout<<jojo[i].number<<" "<<jojo[i].name<<" ";
56     for(j=0;j<9;j++)
57     cout<<jojo[i].grades[j]<<" ";
58     cout<<endl;
59 }
60 for(i=0;i<5;i++)
61 hunter.write(p[i],39);
62 }

要点:从文件的输入输出 (包括二进制文件)

posted @ 2022-01-07 22:08  闻淤野  阅读(897)  评论(0)    收藏  举报