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 }
要点:从文件的输入输出 (包括二进制文件)

浙公网安备 33010602011771号