华南师大计算机学院软件工程专硕机试(2017考研)

Karima ·
更新时间:2024-09-21
· 625 次阅读

前言

前两天考研公布成绩,看成绩结合群里人的分数大概率是进复试了,于是就翻出之前的机试题来看下难度,查缺补漏再去找一些类似的题目。

所有题目代码用C++编写

题目均为回忆版

1.输入一个数字,为其高,一个符号*,输出该符号组成的平行四边形形状

源码

#include using namespace std; int main(){ int n; cout<>n; for(int i=0;i=0;j--){ cout<<" "; } for(int k=0;k<n;k++){ cout<<"*"; } cout<<endl; } return 0; }

结果:

please input a number:5 ***** ***** ***** ***** ***** 二、是猴子吃桃问题,每天都吃剩下的一半,再多吃一个,直到第十天剩下一个桃子,问第一天猴子有多少个桃。

源码:

(递归)

#include using namespace std; int function(int i){ if(i==1) return 1; return 2*(function(i-1)+1); } int main() { cout<<function(10)<<endl; }

(for循环)

#include using namespace std; int main(){ int number = 1; //第十天的数量 for(int i=0;i<9;i++){ number = (number + 1) * 2; } cout<<number<<endl; return 0; }

结果:

1534 三、输入一系列的数字,输出他们正负数个数,输入0截止,要用函数实现 

源码

#include using namespace std; int LargerThanZero = 0; //大于零的个数 int SmallerThanZero = 0; //小于零的个数 void Function(int n){ if(n>0) LargerThanZero++; else if(n<0) SmallerThanZero++; } int main(){ cout<>n; while(n!=0){ Function(n); cin>>n; } cout<<"Stop"<<endl; cout<<"Larger Than Zero:"<<LargerThanZero<<endl; cout<<"Smaller Than Zero:"<<SmallerThanZero<<endl; }

结果:

please input numbers:1 9 2 3 -7 6 -6 -1 0 Stop Larger Than Zero:5 Smaller Than Zero:3 四、是用一个类来记录学生成绩和他班级,里面有几个函数,静态成员和动态成员都有

因为题目是回忆版的,题目概述不清,根据之前看过的教材大概自己设置几个函数与静态成员

#include #include using namespace std; class Student{ public: Student(string n,int c,double sco){ name=n; Class=c; score=sco; num++; total+=sco; average=total/(double)num; } static double Got_Total(){ return total; } static int Got_num(){ return num; } static double Got_Ave(){ return average; } void display(); //显示个人信息 void Change_Score(double n); //更改分数 void Change_Class(int c); //更改班级 private: string name; int Class; double score; static double total; static int num; static double average; }; void Student::display(){ cout<<"Name:"<<name<<endl; cout<<"Class:"<<Class<<endl; cout<<"Score:"<<score<<endl; } void Student::Change_Class(int c){ Class=c; cout<<"After Change:"<<endl; display(); } void Student::Change_Score(double s){ total-=score; score=s; total+=score; average=total/(double)num; cout<<"After Change:"<<endl; display(); } double Student::total = 0; int Student::num = 0; double Student::average = 0; int main(){ Student Stu[5]={ Student("Obama",1,99.0), Student("Mike",1,77.5), Student("Jackson",2,87.0), Student("Cherry",3,93.5), Student("Oscar",4,89.0) }; for(int i=0;i<5;i++) { cout<<endl; Stu[i].display(); } cout<<endl<<"Total:"<<Student::Got_Total()<<endl; cout<<"Numbers of Student:"<<Student::Got_num()<<endl; cout<<"Average:"<<Student::Got_Ave()<<endl; cout<<endl; Stu[0].Change_Score(100); cout<<endl<<"Total:"<<Student::Got_Total()<<endl; cout<<"Numbers of Student:"<<Student::Got_num()<<endl; cout<<"Average:"<<Student::Got_Ave()<<endl; }

结果:

Name:Obama Class:1 Score:99 Name:Mike Class:1 Score:77.5 Name:Jackson Class:2 Score:87 Name:Cherry Class:3 Score:93.5 Name:Oscar Class:4 Score:89 Total:446 Numbers of Student:5 Average:89.2 After Change: Name:Obama Class:1 Score:100 Total:447 Numbers of Student:5 Average:89.4 五、重载+,++,=等简单运算符

这题跟上面一样也是不太清楚,所以我以时间为例写一个重载运算符

#include using namespace std; class Time{ private: int sec; int min; public: Time(int m=0,int s=0){ min=m; sec=s; } void operator = (Time a){ min=a.min; sec=a.sec; } void display(){ cout<<min<<":"<<sec<=60) { t.sec-=60; t.min++; } return t; } Time Time::operator++(){ this->sec++; if(this->sec>=60) { this->sec-=60; this->min++; } return *this; } Time Time::operator++(int){ Time t=*this; this->sec++; if(this->sec>=60) { this->sec-=60; this->min++; } return t; } int main(){ Time a; cout<<"a:"; a.display(); cout<<"++a:"; ++a; a.display(); cout<<endl; cout<<"a++ (b) :"; Time b=a++; b.display(); cout<<"a:"; a.display(); cout<<"a+b:"; Time c; c=a+b; c.display(); }

结果:

a:0:0 ++a:0:1 a++ (b) :0:1 a:0:2 a+b:0:3
作者:SampsonTse



考研 工程 学院 软件工程 软件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号