C++程序设计(第2版)课后习题答案第8章

1.使用结构体变量来表示学生数据:姓名、学号和3门课程的成绩。从键盘输入个学生的数据,要求打印出每个学生的姓名和3门课程的平均成绩,此外要求按学生的平均成绩降序输出,按学生姓名搜索。

View Code
 1 #include <fstream>
 2 #include <iostream>
 3 using namespace std;
 4 struct student
 5 {
 6     int num;
 7     char name[20];
 8     float score[3];
 9 };
10 
11 //从键盘输入数据
12 void input(student* std,int n)
13 {
14     for(int i=0;i<n;i++)
15     {
16         cin>>std[i].name;
17         cin>>std[i].num;
18         cin>>std[i].score[0]>>std[i].score[1]>>std[i].score[2];
19     }
20 }
21 //输出学生信息
22 void print(student* std,int n)
23 {
24     int i;
25     for(i=0;i<n;i++)
26     {
27         cout<<std[i].name<<"\t"<<
28             std[i].num<<'\t'<<
29             std[i].score[0]<<'\t'<<
30             std[i].score[1]<<'\t'<<
31             std[i].score[2]<<'\t'<<
32             (std[i].score[0]+std[i].score[1]+std[i].score[2])/3<<'\t'<<endl;
33     }
34 }
35 //按成绩排序
36 void sort(student* std,int n)
37 {
38     int i,j,L;
39     student tmp;
40     for(i=0;i<n-1;i++)
41     {
42         L=i;
43         for(j=i+1;j<n;j++)
44         {
45             if(std[j].score[0]+std[j].score[1]+std[j].score[2]>
46                 std[L].score[0]+std[L].score[1]+std[L].score[2])
47                 L=j;
48         }
49         tmp=std[i];
50         std[i]=std[L];
51         std[L]=tmp;
52     }
53 }
54 //按姓名搜索
55 int search(student* std,int n,char* name)
56 {
57     int i;
58     for(i=0;i<n;i++)
59     {
60         if(strcmp(std[i].name,name)==0)
61             return i;
62     }
63     return -1;
64 }
65 
66 void main()
67 {
68     student std[10];
69     input(std,10);
70     print(std,10);
71     sort(std,10);
72     int i=search(std,10,"wangwu1");
73     if(i!=-1)
74         cout<<"Found"<<endl;
75     else
76         cout<<"No Found"<<endl;
77 
78 }
原文地址:https://www.cnblogs.com/shajianheng/p/2825300.html