1.设计一个程序,求一个圆的面积,要求分别用科学记数法和小数点固定法输出。
#include <iostream> #include <iomanip> using namespace std; int main(){ double r,S; cout<<"请输入圆的半径"<<endl; cin>>r; S = 3.1415926*r*r; cout<<"科学计数法:"<<setiosflags(ios::scientific)<<S<<resetiosflags(ios::scientific)<<endl; //在使用setiosflags后要re cout<<"小数点固定法:"<<setiosflags(ios::fixed)<<S<<resetiosflags(ios::fixed)<<endl; //固定六位小数点 return 0; }
2.设计一个日期类,通过提取和插入运算符重载,实现日期类对象的直接输入和输出。
#include <iostream> using namespace std; class data{ public: int year,month,day; data(int y=0,int m = 0,int d=0){ year =y; month = m; day = d; } friend istream& operator>>(istream& is,data &newData){ //&newData记得有& ,没有则不改变值 return is>>newData.year>>newData.month>>newData.day; } friend ostream& operator<<(ostream& os,data outData); //注意operator所属于的累中也有& }; ostream &operator<<(ostream& os,data outData){ return os<<outData.year<<outData.month<<outData.day<<endl; } int main(){ data dd(2000,12,31); cin>>dd; cout<<dd; return 0; }
输入
2012
12
31
输出
20121231
3.设计一个程序,把保存在磁盘中的任一个C++源程序(类型为.cpp)复制到一个同文件名,类型名为.txt的文本文件中。
#include <iostream> #include <fstream> using namespace std; int main(){ char str[500]; cout<<"请输入磁盘上C++程序的位置"<<endl; cin>>str; char str1[500]; for(int i=0;i<strlen(str);i++){ str1[i] = str[i]; } str1[strlen(str)-1-3] ='.' ; str1[strlen(str)-1-2] ='t' ; str1[strlen(str)-1-1] ='x' ; str1[strlen(str)-1-0] ='t' ; ifstream infile (str,ios::in); ofstream outfile (str1,ios::out); if(!infile){ cout<<"不能打开文件"<<endl; exit(1); } infile.unsetf(ios::skipws); char ch; while(infile.get(ch)){ outfile.put(ch); } infile.close(); outfile.close(); return 0; }
4.把一个5*5的矩阵数据写入到二进制文件test.dat中,然后从该数据文件中读出数据并输出到屏幕
(mac不能处理dat文件,讲题目改成.txt文件;若.dat格式,则fstream那行加iOS::binary)
#include <iostream> #include <fstream> using namespace std; int main(){ int a[5][5],k=0; int b[5][5]; for (int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ k++; a[i][j] = k; } } fstream iofile ("/Users/riverspace/myCpp/test.txt",ios::in|ios::out); if(!iofile){ cout<<"文件不能打开"<<endl; exit(1); } for (int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ iofile<<a[i][j]<<'\t'; } iofile<<endl; } for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ iofile>>a[i][j]; b[i][j] = a[i][j]; cout<<b[i][j]<<'\t'; } cout<<endl; } return 0; }
5.把一个5*5的矩阵数据写入到二进制文件(test.dat),通过文件的随机访问方式,把矩阵中的对角线数据读出并屏幕
#include <iostream> #include <fstream> using namespace std; int main(){ int a[5][5],k=0; int b[5][5]; for (int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ k++; a[i][j] = k; } } fstream iofile ("/Users/riverspace/myCpp/test.dat",ios::in|ios::out|ios::binary); if(!iofile){ cout<<"文件不能打开"<<endl; exit(1); } for (int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ iofile<<a[i][j]<<'\t'; } iofile<<endl; } int pp=0,aa; for(int i=0;i<5;i++){ iofile.seekg(pp*5+i,ios::beg); pp++; iofile.read( (char *) &aa,sizeof(int)); cout<<aa<<'\t'; } return 0; }