首页 > 代码库 > 程序实践:C++流和文件流
程序实践:C++流和文件流
理论练习题
试题一
编写一个程序,输入一个整数,分别以十进制、八进制和十六进制数值输出,输出十六进制值时限用大写字母。
解:对应的程序如下:
#include <iostream.h> #include <iomanip.h> void main(){ int n; cout << "输入一个整数:"; cin >> n; cout << "十 进 制:" << n << endl; cout << "八 进 制:" << oct << n << endl; cout << "十六进制:" << hex << setiosflags(ios::uppercase) << n << endl; }
试题二
设计一个类Student,其说明如下:
class Student
class Student{ int no; char *name char sex[2];public: Student(); friend istream & operator >> (istream & stream,Student & s) friend ostream & operator << (ostream & stream,Student & s) };实现该类,并编写main()函数对该类进行操作。
解:对应的程序如下:
#include <iostream.h> class Student { int no; char *name; char sex[2]; public: Student() { name=new char[10]; } friend istream & operator >> (istream & stream,Student & s){ cout << "输入一个学生数据" << endl; cout << " 学号:"; stream >> s.no; cout << " 姓名:"; stream >> s.name; cout << " 性别:"; stream >> s.sex; return stream; } friend ostream & operator << (ostream & stream,Student & s){ cout << "输出一个学生数据" << endl; cout << " 学号:" << s.no << endl; cout << " 姓名:" << s.name << endl; cout << " 性别:" << s.sex << endl; return stream; } } void main(){ Student A; cin >> A; cout << A; }
上机实习题
试题一
编写一个程序,实现以下功能:
(1)输入一系列的数据(学号、姓名、成绩)存放在文件stud.dat中。
(2)从该文件中读出这些数据并显示出来。
解:先设计一个类Stud,其中包括一个学生数据的操作,然后建立两个普通函数inputfunc()、outputfunc(),分别实现功能(1)和(2)。
参考程序
#include <fstream> #include <iostream> #include <iomanip> using namespace std; class Stud { int no; //学号 char name[10]; //姓名 int score; //成绩 public: void getdata() { cout << "(学号 姓名 成绩):"; cin >> no >> name >> score; } void disp() { cout << setw(6) << no << setw(10) << name << setw(6) << score << endl; } }; void outputfunc() { ofstream output("stud.dat"); Stud s; int n; cout << "输入数据" << endl; cout << " 学生人数:"; cin >> n; for (int i=0;i<n;i++) { cout << " 第" << i+1 << "个学生"; s.getdata(); output.write((char *)&s,sizeof(s)); }; output.close(); } void inputfunc() { ifstream input("stud.dat"); Stud s; cout << "输出数据" << endl; cout << " 学号 姓名 成绩" << endl; input.read((char *)&s,sizeof(s)); while (input) { s.disp(); input.read((char *)&s,sizeof(s)); }; input.close(); } int main() { int sel; do { cout << "选择(1:输入数据 2:输出数据 其他退出):"; cin >> sel; switch(sel) { case 1: outputfunc(); break; case 2: inputfunc(); break; } } while (sel==1 || sel==2); return 0; }
输出结果
试题二
编写一个程序,输入一系列的数据(学号、姓名、成绩)存放在文件stud.dat中。输出这些学生数据和相应的成绩等级(≥90为优,80~89为良,70~79为中,60~69为及格,≤59为不及格)。要求在上题的基础上实现。
解:在上题的Stud类中添加一个数据成员level,getdata()成员函数根据输入的score计算出该等级值。参考程序
#include <string> #include <fstream> #include <iostream> #include <iomanip> using namespace std; class Stud { int no; char name[10]; int score; char level[7]; public: void getdata() { cout << "(学号 姓名 成绩):"; cin >> no >> name >> score; if (score>=90) strcpy(level,"优"); else if (score>=80) strcpy(level,"良"); else if (score>=70) strcpy(level,"中"); else if (score>=60) strcpy(level,"及格"); else strcpy(level,"不及格"); } void disp() { cout << setw(6) << no << setw(10) << name << setw(6) << score << setw(8) << level << endl; } }; void outputfunc() { ofstream output("stud.dat"); Stud s; int n; cout << "输入数据" << endl; cout << " 学生人数:"; cin >> n; for (int i=0;i<n;i++) { cout << " 第" << i+1 << "个学生"; s.getdata(); output.write((char *)&s,sizeof(s)); }; output.close(); } void inputfunc() { ifstream input("stud.dat"); Stud s; cout << "输出数据" << endl; cout << " 学生 姓名 成绩 等级" << endl; input.read((char *)&s,sizeof(s)); while (input) { s.disp(); input.read((char *)&s,sizeof(s)); }; input.close(); } int main() { int sel; do { cout << "选择(1:输入数据 2:输出等级 其他退出):"; cin >> sel; switch(sel) { case 1:outputfunc();break; case 2:inputfunc();break; } } while (sel==1 || sel==2); return 0; }
输出结果
关于Program Language更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.
程序实践:C++流和文件流
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。