【2018.3.3】实验二

  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++)
 42     {
 43         cout << "请输入学生姓名:";
 44         cin >> Score[i].name;
 45         cout << endl;
 46         cout << "请输入该学生成绩:";
 47         cin >> Score[i].point;
 48         cout << endl;
 49     }
 50     cout << "A、统计不及格人数并打印不及格学生名单\nB、统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单\nC、统计各分数段的学生人数及所占的百分比\n请输入您想进行的操作代号:";
 51     cin >> code;
 52     switch(code)
 53     {
 54         case('A'):fail(*Score);break;
 55         case('B'):exce(*Score);break;
 56         case('C'):per(*Score);break;
 57     }
 58     return 0;
 59 }
 60 
 61 void fail(score Score)
 62 {
 63     int i,count=0;
 64     cout << "不及格的学生为:";
 65     for(i=0;Score[i].name !='\0';i++)
 66     {
 67         if(Score[i].point<60)
 68         {
 69             count++;
 70             cout << Score[i].name<<" ";
 71         }
 72     }
 73     cout << endl;
 74     cout << "不及格的人数为:"<<count;
 75 }
 76 
 77 void exce(score Score)
 78 {
 79     float ave; 
 80     int sum=0,count=0,i,Count=0;
 81     for(i=0;Score[i].name!='\0';i++)
 82     {
 83         count++;
 84         sum+=Score[i].point;
 85     }
 86     ave=sum/count;
 87     cout << "成绩在平均分及其上的学生为:";
 88     for(i=0;Score[i].name!='\0';i++)
 89     {
 90         if(Score[i].point>=ave)
 91         {
 92             cout << Score[i].name<<" ";
 93             Count++;
 94         }
 95     }
 96     cout << endl;
 97     cout << "成绩在平均分及其上的学生人数为:"<<Count<<endl;
 98 }
 99 
100 void per(score Score)
101 {
102     int count=0,count_0=0,count_1=0,count_2=0,count_3=0,count_4=0,count_5=0,i;
103     float per0,per1,per2,per3,per4,per5;
104     for(i=0;Score[i].name!='\0';i++)
105     {
106         count++;
107         if(Score[i].point<60)
108             count_0++;
109         else if(Score[i].point>=60&&Score[i].point<=69)
110             count_1++;
111         else if(Score[i].point>=70&&Score[i].point<=79)
112             count_2++;
113         else if(Score[i].point>=80&&Score[i].point<=89)
114             count_3++;
115         else if(Score[i].point>=90&&Score[i].point<=99)
116             count_4++;
117         else if(Score[i].point==100)
118             count_5++;
119     }
120     per0=count_0/(100*count);
121     per1=count_1/(100*count);
122     per2=count_2/(100*count);
123     per3=count_3/(100*count);
124     per4=count_4/(100*count);
125     per5=count_5/(100*count);
126     cout << "各分数段的学生人数及所占的百分比:\n";
127     cout << "第0段:" <<per0<<"%"<<endl;
128     cout << "第1段:" <<per1<<"%"<<endl;
129     cout << "第2段:" <<per2<<"%"<<endl;
130     cout << "第3段:" <<per3<<"%"<<endl;
131     cout << "第4段:" <<per4<<"%"<<endl;
132     cout << "第5段:" <<per5<<"%"<<endl;
133 }

想要传递结构数组到子函数里,但是子函数里用“Score[i].point”就会提示格式不相称……

 1 //********************************************************
 2 //*程序作者:兔至
 3 //*完成日期:2018年3月1日
 4 //*章    节:第一章
 5 //*题    号:习题3
 6 //*题    目: 身高预测:每个做父母的都关心自己孩子成人后的身高,
 7 //            据有关生理卫生知识与数理统计分析表明,影响小孩成人后
 8 //            的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人
 9 //            后的身高与其父母的身高和自身的性别密切相关。
10 //            设faHeight为其父身高,moHeight为其母身高,身高预测公式为
11 //            男性成人时身高=(faHeight + moHeight)×0.54cm
12 //            女性成人时身高=(faHeight×0.923 + moHeight)/2cm
13 //            此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫
14 //            生饮食习惯,那么可增加身高1.5%。编程从键盘输入用户的性别
15 //            (用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)
16 //            父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、
17 //            是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,
18 //            输入字符N表示不喜爱)、是否有良好的饮食习惯等条件
19 //            (用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好)
20 //            ,利用给定公式和身高预测方法对身高进行预测。
21 //            编程要求:有用户输入输出提示信息。
22 //********************************************************
23 
24 #include<iostream>
25 using namespace std;
26 int main()
27 {
28     float kheight,faheight,moheight;
29     char sex,diet,sports;
30     cout << "【儿童身高神预测】"<<endl;
31     cout << endl;
32     cout << "请输入父亲身高:";
33     cin >> faheight;
34     cout << endl;
35     cout << "请输入母亲身高:";
36     cin >> moheight;
37     cout << endl;
38     cout << "请输入孩子性别:";
39     cin >> sex;
40     cout << endl;
41     if(sex == 'F')
42         kheight=(faheight*0.923+moheight)/2;
43     else
44         kheight=(faheight + moheight)*0.54; 
45     cout << "请问您的孩子喜爱运动吗?";
46     cin >> sports;
47     if(sports=='Y')
48         kheight*=1.02;
49     cout << endl;
50     cout << "请问您的孩子是否有良好的饮食习惯?";
51     cin >> diet;
52     cout << endl;
53     if(diet=='Y')
54         kheight*=1.015;
55     cout << "您的孩子的预测身高为:"<<kheight<<"cm\n[注:此预测仅供娱乐。]"; 
56     return 0; 
57 }

这个倒是挺好玩😂

第五题不太明白要求的意思,什么叫测试好……为什么还要访问……

 1 //********************************************************
 2 //*程序作者:兔至
 3 //*完成日期:2018年3月3日
 4 //*章    节:第一章
 5 //*题    号:习题5
 6 //*题    目:学生成绩统计
 7 //            字符串合并:
 8 //            输入两个已经按从小到大顺序排列好的字符串,编写一
 9 //            个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
10 //            如:输入1223aabcc 和233abbdkm
11 //            输出:1222333aaabbbccdkm
12 //            编程要求:
13 //            较好的用户输入输出提示
14 //            先用普通数组编程方式编写,测试好后改用指针方式逐个访问字符数组元素
15 //********************************************************
16 
17 #include<iostream>
18 #include<string>
19 using namespace std;
20 int main()
21 {
22     string str1,str2,str3;
23     cout << "请输入第一个从小到大排列的字符串:";
24     cin >> str1;
25     cout << endl;
26     cout << "请输入第二个从小到大排列的字符串:";
27     cin >> str2;
28     cout << endl;
29     str3=str1+str2;
30     int i,j;
31     for(i=0;str3[i]!='\0';i++)
32     {
33         for(j=i+1;str3[j]!='\0';j++)
34         {
35             char tem;
36             if(str3[i]>str3[j])
37             {
38                 tem=str3[i];
39                 str3[i]=str3[j];
40                 str3[j]=tem;
41             }
42         }
43     }
44     cout << "合并后字符串为:" <<str3;
45     return 0;
46 }

posted @ 2018-03-03 19:01  兔至  阅读(429)  评论(0编辑  收藏  举报