【2018.3.4】实验修正

 1 #include<iostream>
 2 #include<stdlib.h>
 3 using namespace std;
 4 int sort(int *score,int count);          //函数间传递数组:int score[]/int *score
 5 int ave(int *score,int count);
 6 int main()
 7 {
 8     int count;
 9     cout << "请输入成绩个数:";
10     cin >>  count;
11     cout << endl;
12     if(count<=0)
13     cout << "error!";
14     else
15     {
16         int *point;
17         point=new int[count];
18         if(point==NULL)
19         {
20             cout << "动态分配内存空间失败!";
21             exit(0);
22             return NULL; 
23         }
24         cout << "请输入成绩:";
25         for(int i=0;i<count;i++)    //注意输入和输出!
26             cin >> point[i];
27         cout << endl;
28         int average=ave(point,count);
29         cout << "平均分为:"<<average<<endl;
30         sort(point,count);
31         cout << "排序后成绩为:";
32         for(int i=0;i<count;i++,point++)
33             cout << *point<<" ";
34     }
35     return 0;
36 }
37 
38 
39 int sort(int *score,int count)
40 {
41     int i,j,tem;
42     for(i=0;i<count;i++)
43     {
44         for(j=i+1;j<count;j++)
45         {
46             if(score[j]>score[i])
47             {
48                 tem=score[j];
49                 score[j]=score[i];
50                 score[i]=tem;
51             }
52         }
53     }
54 }
55 
56 int ave(int *score,int count)
57 {
58     int i,sum=0;
59     float ave;
60     for(i=0;i<count;i++)
61     {
62         sum+=score[i];
63     }
64     ave=sum/count;
65     return ave;
66 }

总算改对了一个。

 1 #include<iostream>
 2 #include<stdlib.h>
 3 using namespace std;
 4 int* space(int count);
 5 int sort(int *score,int count); 
 6 int ave(int *socre,int count);
 7 int main()
 8 {
 9     int count;
10     cout << "请输入成绩个数:";
11     cin >>  count;
12     cout << endl;
13     if(count<=0)
14     cout << "error!";
15     else
16     {
17         int point[count];
18         *point=*space(count);
19         cout << "请输入成绩:";
20         for(int i=0;i<count;i++)
21             cin >> point[i];
22         cout << endl;
23         int average=ave(point,count);
24         cout << "平均分为:"<<average<<endl;
25         sort(point,count);
26         cout << "排序后成绩为:";
27         for(int i=0;i<count;i++)
28              cout << point[i]<<" ";
29     }
30     return 0;
31 }
32     
33 int *space(int count)
34 {
35     int *dyn;
36     dyn=new int [count];
37     if(dyn==NULL)
38     {
39         cout << "动态分配内存空间失败!";
40         exit(0);
41         return NULL; 
42     }
43     return dyn;        //返回空间地址
44 }
45 
46 int sort(int *score,int count)
47 {
48     int i,j,tem;
49     for(i=0;i<count;i++)
50     {
51         for(j=i+1;j<count;j++)        //注意排序方式!
52         {
53             if(score[j]>score[i])
54             {
55                 tem=score[j];
56                 score[j]=score[i];
57                 score[i]=tem;
58             }
59         }
60     }
61 }
62 
63 int ave(int *score,int count)
64 {
65     int i,sum=0;
66     float ave;
67     for(i=0;i<count;i++)
68     {
69         sum+=score[i];
70     }
71     ave=sum/count;
72     return ave;
73 } 

 

  1 //********************************************************
  2 //*程序作者:兔至
  3 //*完成日期:2018年3月2日
  4 //*章    节:第一章
  5 //*题    号:习题4
  6 //*题    目:学生成绩统计
  7 //            从键盘输入一个班(全班最多不超过30人)学生某门课
  8 //            的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
  9 //            (1)统计不及格人数并打印不及格学生名单;
 10 //            (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
 11 //            (3)统计各分数段的学生人数及所占的百分比。
 12 //            注:将成绩分为六个分数段,
 13 //                60分以下为第0段,
 14 //                60~69为第1段,
 15 //                70~79为第2段,
 16 //                80~89为第3段,
 17 //                90~99为第4段,
 18 //                100分为第5段。
 19 //            编程要求:
 20 //            (1).较好的用户输入输出提示信息
 21 //            (2).使用子函数来实现上述各个功能
 22 //            (3).最好不要使用全局变量
 23 //********************************************************
 24 
 25 #include<iostream>
 26 #include<string>
 27 using namespace std;
 28 struct score
 29 {
 30     string name;
 31     float point;
 32 };
 33 void fail(score Score[]);              //结构数组在函数间的传递和普通数组相同
 34 void exce(score Score[]);
 35 void per(score Score[]);
 36 int main()
 37 {
 38     score Score[30];
 39     int i;
 40     char code;
 41     for(i=0;Score[i].point >0;i++)          //string类型下不可以用来判定,比如”!=“同时,此类型下也不会出现”\0“。
 42     {
 43         cout << "请输入学生姓名:";
 44         cin >> Score[i].name;
 45         cout << endl;
 46         cout << "请输入学生成绩:";
 47         cin >> Score[i].point;
 48         cout << endl;
 49     }
 50     cout << endl;
 51     cout << "A、统计不及格人数并打印不及格学生名单\nB、统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单\nC、统计各分数段的学生人数及所占的百分比\n请输入您想进行的操作代号:";
 52     cin >> code;
 53     switch(code)
 54     {
 55         case('A'):fail(Score);break;
 56         case('B'):exce(Score);break;
 57         case('C'):per(Score);break;
 58     }
 59     cout << endl;
 60     while(1)
 61     {
 62         cout << endl;
 63         cout << "请问您还需要进行什么操作吗?(需要请输入“y”,不需要请输入“n”)"<<endl;
 64         char ch;
 65         cin >> ch;
 66         if(ch == 'y')
 67         {
 68             cout << "请输入:";
 69             cin >> code;
 70             switch(code)
 71             {
 72                 case('A'):fail(Score);break;
 73                 case('B'):exce(Score);break;
 74                 case('C'):per(Score);break;
 75             }
 76         }
 77         else
 78         break;
 79     }
 80     return 0;
 81 }
 82 
 83 void fail(score Score[])
 84 {
 85     int i,count=0;
 86     cout << "不及格的学生为:";
 87     for(i=0;Score[i].point >0;i++)
 88     {
 89         if(Score[i].point<60)
 90         {
 91             count++;
 92             cout << Score[i].name<<" ";
 93         }
 94     }
 95     cout << endl;
 96     cout << "不及格的人数为:"<<count;
 97 }
 98 
 99 void exce(score Score[])
100 {
101     float ave; 
102     int sum=0,count=0,i,Count=0;
103     for(i=0;Score[i].point>0;i++)
104     {
105         count++;
106         sum+=Score[i].point;
107     }
108     ave=sum/count;
109     cout << "成绩在平均分及其上的学生为:";
110     for(i=0;Score[i].point>=0;i++)
111     {
112         if(Score[i].point>=ave)
113         {
114             cout << Score[i].name<<" ";
115             Count++;
116         }
117     }
118     cout << endl;
119     cout << "成绩在平均分及其上的学生人数为:"<<Count<<endl;
120 }
121 
122 void per(score Score[])
123 {
124     float count=0,count_0=0,count_1=0,count_2=0,count_3=0,count_4=0,count_5=0;
125     int i;
126     float per0,per1,per2,per3,per4,per5;
127     for(i=0;Score[i].point>0;i++)
128     {
129         count++;
130         if(Score[i].point<60)
131             count_0++;
132         else if(Score[i].point>=60&&Score[i].point<=69)
133             count_1++;
134         else if(Score[i].point>=70&&Score[i].point<=79)
135             count_2++;
136         else if(Score[i].point>=80&&Score[i].point<=89)
137             count_3++;
138         else if(Score[i].point>=90&&Score[i].point<=99)
139             count_4++;
140         else if(Score[i].point==100)
141             count_5++;
142     }
143     per0=100*count_0/count;        //除法要尤其注意整型和浮点型,整型下求百分比为0.
144     per1=100*count_1/count;
145     per2=100*count_2/count;
146     per3=100*count_3/count;
147     per4=100*count_4/count;
148     per5=100*count_5/count;
149     cout << "各分数段的学生人数及所占的百分比:\n";
150     cout << "第0段:" <<per0<<"%"<<endl;
151     cout << "第1段:" <<per1<<"%"<<endl;
152     cout << "第2段:" <<per2<<"%"<<endl;
153     cout << "第3段:" <<per3<<"%"<<endl;
154     cout << "第4段:" <<per4<<"%"<<endl;
155     cout << "第5段:" <<per5<<"%"<<endl;
156 }

挣扎了好几天,可算没bug了……

posted @ 2018-03-04 17:05  兔至  阅读(93)  评论(0编辑  收藏  举报