程序设计与算法(三)第二周测验(2018春季) 001 编程填空:学生信息处理程序

网址:http://cxsjsxmooc.openjudge.cn/2018t3springw2/001/

题目描述

总时间限制: 1000ms      内存限制: 1024k
描述

实现一个学生信息处理程序,计算一个学生的四年平均成绩。

要求实现一个代表学生的类,并且类中所有成员变量都是【私有的】。

补充下列程序中的 Student 类以实现上述功能。

 1 #include <iostream>
 2 #include <string>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <sstream>
 6 #include <cstdlib>
 7 using namespace std;
 8 
 9 class Student {
10 // 在此处补充你的代码
11 };
12 
13 int main() {
14     Student student;        // 定义类的对象
15     student.input();        // 输入数据
16     student.calculate();    // 计算平均成绩
17     student.output();       // 输出数据
18 }
输入
  输入数据为一行,包括:
  姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。
  其中姓名为由字母和空格组成的字符串(输入保证姓名不超过20个字符,并且空格不会出现在字符串两端),年龄、学号和学年平均成绩均为非负整数。信息之间用逗号隔开。
输出
  输出一行数据,包括:
  姓名,年龄,学号,四年平均成绩。
  信息之间用逗号隔开。
样例输入
  Tom Hanks,18,7817,80,80,90,70
样例输出
  Tom Hanks,18,7817,80
问题分析
  关键在于读取输入中的名字字符串,可用%[^,]
代码
 1 #include <iostream>
 2 #include <string>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <sstream>
 6 #include <cstdlib>
 7 using namespace std;
 8 
 9 class Student {
10 private:
11     char name[23];
12     int age;
13     int xuehao;
14     int score1,score2,score3,score4;
15     double ave;
16 public:
17     void input(){
18         scanf("%[^,],%d,%d,%d,%d,%d,%d",name,&age,&xuehao,&score1,&score2,&score3,&score4);
19     }
20     void calculate(){
21         ave=(score1+score2+score3+score4)/4.0;
22     }
23     void output(){
24          printf("%s,%d,%d,%g",name,age,xuehao,ave);
25     }
26 };
27 
28 int main() {
29     Student student;        // 定义类的对象
30     student.input();        // 输入数据
31     student.calculate();    // 计算平均成绩
32     student.output();       // 输出数据
33 }

 

scanf/fscanf 的%[]和%n使用方法

posted @ 2018-04-13 11:29  咖啡君056  阅读(714)  评论(0编辑  收藏  举报