这个表格根据学号匹配姓名,姓名应该怎么输入代码?第二个窗口是各课考试成绩?该怎么设计求大神帮忙?

503 Service Temporarily Unavailable
503 Service Temporarily Unavailable当前位置: >>
北京大学2011程序设计实习-习题课
程序设计实习作业解答2011-3 类和对象的基本概念 ― 作业一实现一个学生信息处理程序? 输入数据为一行: 姓名,年龄,学号(整数),第一学年平均成绩,第二学年 平均成绩,第三学年平均成绩,第四学年平均成绩 ? 输出: 姓名,年龄,学号,四年平均成绩 ? 例如: 输入:Tom Hanks,18,,90,70 输出:Tom Hanks,18,7817,80 ? 要求实现一个代表学生的类,并且所有成员变量 都应该是私有的。 类和对象的基本概念 ― 作业一Solution by Students//============================================================== // Name : HomeWork.cpp // Author : Liang ShiYu
// Version : 1.0 // Copyright : copyright reserved // Description : class // Date :
// Platform : Eclipse //============================================================== #include &iostream& #define MAX_NAME_LENGTH 255 //i suppose that your name is not longer than that #define SCHOOL_YEARS 4 int i=0, j=0; //i am afraid you are not using Eclipse(especially if you are using VC++) class CStudent{//dim a class char m_cName[MAX_NAME_LENGTH]; int m_nA int m_nStudentN int m_nStudentScore[SCHOOL_YEARS]; double m_xAverageScore //all the members are private (as default) public: CStudent(){//construct function for(i=0;i&MAX_NAME_LENGTH;i++) m_cName[i]=0; for(i=0;i&SCHOOL_YEARS;i++) m_nStudentScore[i]=0; m_nAges=0; m_nStudentNumber=0; } 类和对象的基本概念 ― 作业一void init(){//function of getting the input and also initializing the data char cDustB for(i=0;m_cName[i]=getchar(),m_cName[i]!=',';i++); m_cName[i]='\0'; cin&&m_nA cin&&cDustB cin&&m_nStudentN for(i=0;i&SCHOOL_YEARS;i++) { cin&&cDustB cin&&m_nStudentScore[i]; } int nTempSum=0; for(i=0;i&SCHOOL_YEARS;i++) nTempSum+=m_nStudentScore[i]; m_xAverageScore=(double(nTempSum))/SCHOOL_YEARS; } void output(){//function of outputting the data cout&&m_cName&&','&&m_nAges&&','&&m_nStudentNumber&&','&&m_xAverageScore&& } ~CStudent(){}; }; int main() { CStudent stu1; stu1.init(); stu1.output(); return 0; } 类和对象的基本概念 ― 作业一Solution by TA#include &iostream& #include&string& class Student{ private: int age,num,g1,g2,g3,g4; char name[20],a; public: void input(){//用于输入 cin.getline(name,20,',');//变量名,长度,读入停止符 cin&&age&&a&&num&&a&&g1&&a&&g2&&a&&g3&&a&&g4; //a用于读入逗号 } void ave(){//用于处理平均成绩 average=double((g1+g2+g3+g4)/4.0);//平均值不一定是整数 } void output(){//用于输出 cout&&name&&a&&age&&a&&num&&a&& } }; int main(){ S//定义类的对象 o.input();//调用函数 o.ave(); o.output(); } 类和对象的基本概念 ― 作业三1 写出下面程序的运行结果class Apple { private : static int nTotalN public: Apple() { nTotalNumber ++; } ~Apple( ) { nTotalNumber --; } static void PrintTotal() { cout && nTotalNumber && } }; int Apple::nTotalNumber = 0; Apple Fun( const Apple & a ) 解析: 返回时, 解析: return返回时,产生临时变 返回时 { a.PrintTotal(); } 量,Total Number析构时会减小 析构时会减小 int main () { 4 Apple * p = new Apple[4]; 1 Fun( p[2]); Apple p1, p2; delete [] p1.PrintTotal(); } 类和对象的基本概念 ― 作业三2 写出下面程序的运行结果class Sample{ public: Sample() { }; Sample(int n):v(n) { }; Sample( Sample & x) { v = 2 + x. } }; Sample PrintAndDouble( Sample o){ cout && o.v && o.v = 2 * o.v; } int main(){ Sample a(5); Sample b = Sample c = PrintAndDouble( b ); cout && c.v && S d = cout && d. }解析: 解析:构造函数和复制构造 函数的调用 9 实际运行结果为20) 实际运行结果为 22 (vc2008实际运行结果为 5 注意区分: 注意区分: Sample b=a; d=a; 类和对象的基本概念 ― 作业三3 程序输出结果如下 请填空 程序输出结果如下,0 5class A { public: A(____________ ){ val = }; ___________ GetObj() { return ________; } }; main() { A cout &&a.val && a.GetObj() = 5; cout && a.val && }A(int n=0) A& GetObj(){ return * } 或者 int& GetObj(){ } 类和对象的基本概念 ― 作业三4 程序输出结果如下 请填空 程序输出结果如下,3+4i 5+6i 补足Complex类的成员函数,不能增加成员变量 类的成员函数, 补足 类的成员函数 class Complex { private: double r,i; public: void Print() {cout && r && &+& && i && &i& &&} }; int main() { C a = &3+4i&; a.Print(); a = &5+6i&; a.Print(); } 类和对象的基本概念 ― 作业三? 构造函数Complex() {}; Complex (const char t[]) { if(!t) { r=0.0; i=0.0; } else { r = t[0] - '0'; i = t[2] - '0'; } }? 另一种思路重载赋值操作符Complex &operator=(const char t[]) { if(!t) { r=0.0; i=0.0; } else { r = t[0] - '0'; i = t[2] - '0'; } return * } 类和对象的基本概念 ― 作业三5 程序输出结果如下 请填空 程序输出结果如下,10 补足Sample类的成员函数,不能增加成员变量 类的成员函数, 补足 类的成员函数 class Sample{ public: Sample(int n):v(n) { }; }; main() { Sample a(5); Sample b = cout && b. } Sample( Sample & x) { v = 2 * x. } 类和对象的基本概念 ― 作业三6 程序输出结果如下 请填空 程序输出结果如下,This Hello 补足MyString类的成员函数,不能增加成员变量 类的成员函数, 补足 类的成员函数 main(){ class MyString{ MyString s1(&This&), s2 =s1; char * s2.Copy ( &Hello&); public: cout && s1.c_str () MyString( char * s ) { && endl && s2.c_str () ; p = new char[strlen(s)+1]; } strcpy(p,s); } ~MyString() { delete []} const char * c_str() {} }; 类和对象的基本概念 ― 作业三? 补足成员函数void Copy( char * s) { delete [] p = new char[strlen(s)+1]; strcpy(p,s); } MyString( MyString & o ) { p = new char[strlen(o.p ) + 1 ]; strcpy( p, o.p); } 类和对象的基本概念 ― 作业三7 程序输出结果如下 请填空 程序输出结果如下,5,5 5,5 class Base { public: Base (int n) : k(n) { } }; class Big{ public: B Big _____________ { } Big _____________ { } }; Big(int n):v(n),b(n){ } Big(Big & x):v(x.v),b(x.b.k){ }main(){ Big a1(5); Big a2 = a1; cout && a1.v && &,& && a1.b.k && cout && a2.v && &,& && a2.b.k && } 运算符重载― 作业三 运算符重载―1 程序输出结果如下 请填空 程序输出结果如下,4,1 请写出被隐藏的部分, 请写出被隐藏的部分,MyInt的成员函数里不允许使用静态变量 的成员函数里不允许使用静态变量 class MyInt main () { { MyInt objInt(10); objInt-2-1-3; int nV cout && objInt.ReturnVal(); public: cout &&&,&; MyInt( int n) { nVal =} objInt-2-1; int ReturnVal() { return nV} cout && objInt.ReturnVal(); …………………. } }; MyInt & operator -( int x) { nVal -= return * } 运算符重载― 作业三 运算符重载―2 程序输出结果如下 请填空 程序输出结果如下,(4,5) (7,8) main(){ class Point { cout && Point(4,5) private: && Point(7,8); } public: Point(int x_,int y_ ):x(x_),y(y_) { }; _____; }; _____ operator && (_____, const Point & p) { _____; return ______; } 运算符重载― 作业三 运算符重载―class Point { private: public: Point(int x_,int y_ ):x(x_),y(y_) { }; _____; friend ostream & operator && ( ostream & o, const Point & p); }; _____ operator && (_____, const Point Point ostream & operator && ( ostream & o, const& p) & p) { o && &(& _____; && p.x && &,& && p.y && &)& && o return ______; } 运算符重载― 作业三 运算符重载―3 写一个二维数组类 Array2, 使得下面程序的 输出结果是: 输出结果是:0,1,2,3, 4,5,6,7, 8,9,10,11 next 0,1,2,3, 4,5,6,7, 8,9,10,11 运算符重载― 作业三 运算符重载―using std:: using std:: int main(){ Array2 a(3,4); int i,j; for( i = 0;i & 3; i ++ ) for( j = 0; j & 4; j ++ ) a[i][j] = i * 4 + for( i = 0;i & 3; i ++ ) { for( j = 0; j & 4; j ++ ) { cout && a(i,j) && &,&; } cout && }cout && &next& && Array2 b = for( i = 0;i & 3; i ++ ) { for( j = 0; j & 4; j ++ ) { cout && b[i][j] && &,&; } cout && } return 0; } 运算符重载― 作业三 运算符重载―class Array2 { private: int * int r,c; public: Array2() { p = NULL ; } Array2( int r_, int c_ ):r(r_),c(c_) { p = new int [ r * c]; } Array2( Array2 & a ):r(a.r),c(a.c) { p = new int [r * c]; memcpy( p, a.p, sizeof(int )*r*c); } Array2 & operator=(const Array2 & a) { if( p ) delete [] r = a.r; c = a.c;p = new int [r * c]; memcpy( p, a.p, sizeof(int ) * r * c); return * } ~Array2() { if( p) delete [] } int * operator [] ( int i ) { return p + i * } int & operator() ( int i,int j ) { return p[ i * c + j]; }注:重载的实际上是第二维的[],第一维的 []直接调用int型一维数组的定义 运算符重载― 作业三 运算符重载―第二种解法: 第二种解法:class CWordArr{ private: int *m_ long m_ public: CWordArr(long size) { m_pdat= new int[size]; m_size = }; ~CWordArr() { delete[] m_ }; int& operator[](long idx) { return m_pdat[idx]; } }; 运算符重载― 作业三 运算符重载―第二种解法: 第二种解法:class Array2{ private: CWordArr **m_p; long m_col,m_ public: Array2(long col,long row) { m_p=new CWordArr*[col]; for (long i=0;i&i++) m_p[i]= new CWordArr(row); m_col= m_row= } ~ Array2() { for (long i=0;i&m_i++) { delete m_p[i]; m_p[i]=NULL; } delete[] m_p; } CWordArr& operator[](long idx) { return *m_p[idx]; } int & operator() ( int i,int j ) { return (*m_p[i])[j]; }通过两次[]重载的叠加, 就可以用a[x][y]的方式来访问数组元素?C++不可能在一个类里面实现[][]的重载(若这种相当于三元算符),因此有两个类: 一个是一维数组类,实现[]的重载;另一个类是二维数组类,必须持有一组一维数 组类的实例,存放二维数组的各个行的数组,二维数组类也要重载[]运算符 运算符重载― 作业三 运算符重载―4 程序输出结果如下 写一个 程序输出结果如下, 写一个HugeInt类 类1)000 2)000 3)00 5)06 7)006 运算符重载― 作业三 运算符重载―void main(){ CHugeInt a(&4235&); CHugeInt d(9999); CHugeInt temp = CHugeInt(&888&) + 111112; CHugeInt temp2 = 111112+CHugeInt(&888&); cout && &1)& && temp && cout && &2)& && temp2 && cout && &3)& && ++d && cout && &4)& && d++ && cout && &5)& && d && d += 5; cout && &6)& && d && cout && &7)& && d + } 运算符重载― 作业三 运算符重载―//重载运算符+ CHugeInt operator +(const CHugeInt & n) const { CHugeInt tmp( * this); for( int i = 0; i & MAX ; i ++ ) { tmp.Number[i] += n.Number[i]; //逐位相加 if( tmp.Number[i] &= 10 ) { //看是否要进位 tmp.Number[i] -= 10; tmp.Number[i+1] ++; //进位 } } } const CHugeInt & operator++() { * this = ( * this ) + 1; return * }// ++n const CHugeInt operator++(int n) { CHugeInt tmp = * * this = ( * this ) + 1; }//n++ const CHugeInt operator +=( const CHugeInt & n){ * this = ( * this ) + return * }Note: 代码过多,只截取部分 运算符重载― 作业三 运算符重载―friend ostream & operator && (ostream & o, const CHugeInt & n); friend CHugeInt operator+ ( int n1 , const CHugeInt & n2); CHugeInt operator + ( int n1 ,const CHugeInt & n2) { return n2 + n1; } ostream & operator && ( ostream & o, const CHugeInt & n){ bool bStart = for( int i = MAX -1; i &= 0 ; i -- ) { if( n.Number[i] ) { bStart = } if( bStart ) cout && n.Number[i]; } if( !bStart )//没有数字时,输出0 cout && 0; } 继承和多态― 作业四 继承和多态―1 写一个 写一个Mystring类, 使得程序输出结果如下: 类 使得程序输出结果如下:1. abcd-efgh-abcd2. abcd3. 4. abcd-efgh5. efgh6. c 7. abcd8. ijAl9. ijAl-mnop 10. qrst-abcd11. abcd-qrst-abcd- uvw xyzabout big me take abcd qrst-abcd- 继承和多态― 作业四 继承和多态―Mystring类(1) 类#include&iostream& #include&cstring& class MyString { public: char *p; MyString() // 构造函数 { p = NULL; } MyString(char *t) // 构造函数 { p = new char[strlen(t) + 1]; strcpy(p,t); } MyString(const MyString &s) // 复制构造函数 { p = new char[strlen(s.p) + 1]; strcpy(p, s.p); } 继承和多态― 作业四 继承和多态―Mystring类(2) 类~MyString() // 析构函数 { if(p) delete[]p; } MyString operator+(const MyString &s) // +号重载,这里表示 //两个MyString类型相加的情况 { char *q; q = new char[strlen(p) + strlen(s.p)+1]; strcpy(q, p); strcat(q, s.p); MyString temp(q); delete []q; } 继承和多态― 作业四 继承和多态―Mystring类(3) 类MyString operator+(const char *s) // +号重载,这里表示 //MyString类型+字符串的情形 { char *q; q = new char[strlen(p) + strlen(s) + 1]; strcpy(q, p); strcat(q, s); MyString temp(q); delete []q; } MyString& operator=(const MyString &s) // 赋值号重载 { if(p!=NULL) { delete[]p; } p = new char[strlen(s.p)+1]; strcpy(p, s.p); return * }0 继承和多态― 作业四 继承和多态―Mystring类(4) 类char &operator[](int n) // []号重载 { return p[n]; } MyString& operator+=(char *s) // +=号重载 { char *q; q = new char[strlen(p)+1]; strcpy(q, p); if(p != NULL) { delete []p; } p = new char[strlen(p) + strlen(s) + 1]; strcpy(p,q); strcat(p,s); delete []q; return * } 继承和多态― 作业四 继承和多态―Mystring类(5) 类MyString operator()(int i, int n) { // ()重载 char *q; q = new char[n+1]; strncpy(q, p+i, n); q[n] = '\0'; MyString temp(q); delete []q; } }; ostream &operator&& (ostream &o, const MyString &s) // &&号重载 { o && s.p; } MyString operator+(char *s, const MyString &t) // +号重载,这里是字符串+MyString的情形 { char q[100]; strcpy(q, s); strcat(q, t.p); return MyString(q); } 继承和多态― 作业四 继承和多态―Mystring类(6) 类// &,==,& 号的重载 int operator&(const MyString &s1, const MyString &s2) { if(strcmp(s1.p,s2.p) & 0) { return 1; } else { return 0; } } int operator==(const MyString &s1, const MyString &s2) { if(!strcmp(s1.p, s2.p)) { return 1; } else { return 0; } } int operator&(const MyString &s1, const MyString &s2) { if(strcmp(s1.p, s2.p) & 0) { return 1; } else { return 0; } } 继承和多态― 作业四 继承和多态―Mystring类(7) 类int CompareString(const void * e1, const void * e2) // 字符串比较函数 { MyString * s1 = (MyString * ) e1; MyString * s2 = (MyString * ) e2; if(*s1 & *s2 ) return 0; else return 1; } 继承和多态― 作业四 继承和多态―Mystring类(8) 类 2 从string类派生的写法 类派生的写法class MyString : public string{ public: MyString():string() {}; MyString( const char * s):string(s){}; MyString( const string & s ): string(s){}; MyString operator() ( int s, int l) { return this-&substr(s,l); }; }; 继承和多态― 作业六 继承和多态―1 写出下面程序的运行结果class B { private: int nBV public: void Print() { cout && &nBVal=&&& nBVal && } void Fun() {cout && &B::Fun& && } B ( int n ) { nBVal =} }; class D:public B { private : int nDV public: void Print() { B::Print(); cout && &nDVal=&&&nDVal && } D( int n) : B(3*n) {nDVal =} void Fun() { cout && &D::Fun& && }}; 继承和多态― 作业六 继承和多态―main() { B * D * D d(4); d.Fun(); pb = new B(2); pd = new D(8); pb -& Fun(); pd-&Fun(); pb-&Print (); pd-&Print (); pb = & pb-&Fun(); pb-&Print(); }D::Fun B::Fun D::Fun nBVal=2 nBVal=24 nDVal=8 B::Fun nBVal=12 继承和多态― 作业六 继承和多态―2 写出下面程序的运行结果class A { public: A( ) { } virtual void func() { cout && &A::func& && } ~A( ) { } virtual void fund( ) { cout && &A::fund& && } }; class B:public A { public: B ( ) { func( ) ; } void fun( ) { func( ) ; } ~B ( ) { fund( ); } }; class C : public B { public : C( ) { } void func( ) {cout && &C::func& && } ~C() { fund( ); } void fund() { cout && &C::fund& &&} }; main() { C }A::func C::fund A::fund 继承和多态― 作业六 继承和多态―3 程序输出结果如下 请填空 程序输出结果如下,A::Fun C::Do 请补足横线上丢失的部分 #include &iostream.h& class A { private: int nV public: void Fun() { cout && &A::Fun& && }; void Do() { cout && &A::Do& && } }; class B:public A { public: virtual void Do() { cout && &B::Do& &&} }; class C:public B { public: void Do( ) { cout &&”C::Do”&& } void Fun() { cout && &C::Fun& && } }; void Call( ___________ ) { p.Fun(); p.Do(); } main() { C Call( c); }B&p 继承和多态― 作业六 继承和多态―4 程序输出结果如下 请填空 程序输出结果如下,destructor B destructor A 请完整写出 class A. 限制条件:不得为 class A 编写构造函数 #include &iostream.h& class A { ……… }; class B:public A { public: ~B() { cout && &destructor B& && } }; class A { main() public: { virtual ~A() A * { cout && &destructor A& pa = new B; && } }; } 继承和多态― 作业六 继承和多态―5 程序输出结果如下 请填空 程序输出结果如下,A::Fun A::Do A::Fun C::Do class A { private: int nV public: void Fun() { cout && &A::Fun& && }; virtual void Do() { cout && &A::Do& && } }; class B:public A { public: virtual void Do() { cout && &B::Do& &&} }; class C:public B { public: void Do( ) { cout &&&C::Do&&& } void Fun() { cout && &C::Fun& && } }; 继承和多态― 作业六 继承和多态―A* p void Call(____________) { p-&Fun(); p-&Do(); } main() { Call( new A()); Call( new C()); } A& p void Call(____________) { p.Fun(); p.Do(); } main() { Call(A()); Call(C()); }
文检课综合实习报告(2011文... 4页 1财富值喜欢...《数据库程序设计》课堂实验报告(20 -20 第一学期...①检索在北京的供应商的名称 ②检索向供应商 S3 发...《Visual FoxPro 程序设计实习教程与习题集》 (第 2 版) 《实习教程》第 1 单元 Visual FoxPro 基本操作 (参考答案) 1.利用对其赋值的方法,判定下列字符串是否...《Visual FoxPro 程序设计实习教程与习题集》 (第 2 版) 《实习教程》第 1 单元 Visual FoxPro 基本操作 (参考答案) 1.利用对其赋值的方法,判定下列字符串是否...数据结构实习报告 18页 1下载券程​序​设​计​实​习​课​程...C 语言程序设计教程. 2 版. 北京:北京邮电大学出版社,2005. [1] 耿国华. ...北京大学2010-2011学年第二学期选课手册_哲学_高等教育...3 学科大类平台课简介及课程目录 理工类大类平台...程序设计实习 数据结构与算法实习 微机原理 B 微机...北京大学2010-2011学年第二学期选课手册_其它_党团工作_应用文书。北京大学教务...程序设计实习 数据结构与算法实习 微机原理 B 微机原理实验 微电子与电路基础 ...顺序结构程序设计-习题课 顺序结构程序设计 习题课 1、编程实现如下左图所示计算器的功能,输入一个数,可以计算该数的平方数、绝对值等。 用文本框输入输出, ...Visual FoxPro程序设计实习教程与习题集_IT/计算机_专业...大学教师个人工作总结 小学英语教学教研工作总结104...文档贡献者 fjd1963 贡献于2011-06-25 专题推荐 ...《程序设计实习报告》 学姓班学日组 年: 名:高飞 实习课题:...2.C++面向对象程序设计教程/陈维兴,林小茶编著.―3 版.---北京:清华大学 ...RAPTOR 程序设计一、顺序结构编程 1.输入任意一个华氏温度值,然后将其转换成摄氏温度输出。算法:c = 5 / 9 (f - 32) 2.输入任意三角形的三边之长存入变量...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。当前位置: >
有10个学生,每个学生的数据包括学号、姓名及3门课的成绩.、总成绩和平均成绩,从键盘输入10个学生的数据(包括学号、姓名及3门课的成绩),要求打印出每位学生的学号、姓名、三门课的成绩、总成绩和平均成绩,最后打印出3门课的总平均成绩以及最高分的学生的数据(包括姓名和总成绩)。要求:
(1)根据学生信息定义一个结构体类型,再说明一个该结构体类型的数组。
(2)用input函数从键盘上输入10介学生的数据。
(3)用average函数求出每个学生总成绩、平均成绩和所有学生的总成绩及平均成绩。
(4)用maxlmum函数找出最高分的学生的数据。
(5)在主函数中输出每位学生的学号、姓名、三门课成绩、总成绩和平均成绩以及总平均分和最高分学生的数据。
所属学科:
试题类型:主观题
所属知识点:
试题分数:10.0 分
暂未组卷。
暂无学习笔记。
&&&&&&&&&&&&&&&希赛网 版权所有 & &&求大神答案???
设有一批学生的程序设计课程的考试成绩(学生人数最多为N=100人,数据如下:学号姓名程序设计成绩余学成83张思德72┇┇┇(提示:可以建立三个一维数组来存放学生的数据,其中:学号为一个long类型的数组studentID,姓名为一个string类型的数组name,成绩为一个int类型的数组grade)(1)由键盘获取学生人数n,要求学生人数n的取值范围11到N-2;(2)由键盘获取学生的相关数据;(3)用选择排序法将学生的数据按学号进行升序排列并输出排序后的学生数据; 2. 在任务1的基础上,在学生数据中,完成以下任务:(1)键盘输入一个学生的学号,用折半查找法查找是否有该学生,若有该学生则输出该学生的所有信息,按如下格式输出:学号姓名程序设计成绩张思德72若没有该学生,则输出“查无此人”的信息。(2)插入一个新学生的数据,要求插入后学生的数据任按学号升序排列。⒊ 在任务1的基础上,在学生数据中,完成以下任务:⑴ 用选择排序法将学生数据按学生程序设计课程成绩降序排列。⑵ 键盘输入一个学生的学号和程序设计课程的新成绩,在学生数据中查找是否有该学生,若有该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“查无此人”的信息。
这个为什么一定要用数组呢,可以用List啊 ,或者是其他实现的列表,其实这可以看做是学生对象(有学号,姓名,成绩三个属性),然后只要是学生对象的数组即可或者列表,甚至是Map
你还没有登录,请先登录或注册慕课网帐号
77134人关注
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11

我要回帖

更多关于 嘉兴学院学号代码 的文章

 

随机推荐