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

前言:

所有题目都是学长整理的回忆版,可能出现题目描述不清楚或者是少题的情况

 

一、输出A-Z的ascii码

源码

#include<iostream>
using namespace std;
int main()
{
    char ch='A';
    while(ch>='A' && ch<='Z'){
        cout<<ch<<'\t'<<(int)ch<<endl;
        ch++;
    }
    return 0;
}

结果:

A       65
B       66
C       67
D       68
E       69
F       70
G       71
H       72
I       73
J       74
K       75
L       76
M       77
N       78
O       79
P       80
Q       81
R       82
S       83
T       84
U       85
V       86
W       87
X       88
Y       89
Z       90

 

 

二、计算一元二次方程的两个根

源码:

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    double A,B,C;
    double x_1,x_2;
    double delta;
    cout<<"please input A,B,C:";
    cin>>A>>B>>C;
    delta=B*B-A*C*4;        //判别式
    while(delta<0){        //判别式是否合法
        cout<<"error!please input again:";
        cin>>A>>B>>C;
        delta=B*B-A*C*4;
    }

    cout<<A<<"x^2+"<<B<<"x+"<<C<<"=0"<<endl;
    x_1=(-B+sqrt(delta))/(2*A);
    x_2=(-B-sqrt(delta))/(2*A);
    cout<<"x_1="<<x_1<<endl;
    cout<<"x_2="<<x_2<<endl;
}

 

结果:

该结果一元二次方程的显示有一些问题,可以进行优化,比如系数小于零的情况下就不输出“+”,以及系数为1的时候则不输出系数等等

please input A,B,C:4 4 5
error!please input again:1 -5 6
1x^2+-5x+6=0
x_1=3
x_2=2

 

三、输出9*9乘法表

源码:

#include<iostream>
using namespace std;
int main()
{
    int i,j;
    for(i=1;i<=9;i++){
        for(j=1;j<=i;j++)
            cout<<j<<"*"<<i<<"="<<i*j<<"  ";
        cout<<endl;
    }
}

 

结果:

1*1=1
1*2=2  2*2=4
1*3=3  2*3=6  3*3=9
1*4=4  2*4=8  3*4=12  4*4=16
1*5=5  2*5=10  3*5=15  4*5=20  5*5=25
1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

 

 

四、写个递归函数,求斐波那契

 

源码:

#include<iostream>
using namespace std;

int function(int n){        //递归函数
    if( n==1 || n==2 )  
        return 1;
    else{
        return function(n-1)+function(n-2);
    } 
}

int main()
{
    cout<<"please input number:";     //输入层数
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cout<<function(i)<<"\t";
        if(i%5==0)
            cout<<endl;
    }
}

 

 

结果:

please input number:10
1       1       2       3       5
8       13      21      34      55

 

 

五、写一个函数,数组排序

由于是回忆版,没有要求排序是小到大还是大到小,同时也没有说明排序是排序方法,因此在此会使用三种排序方式来回答该问题

源码

#include<iostream>
#include<stdlib.h>
#include<time.h>

#define LEN 10

using namespace std;

int main(){
    void quickSort(int Arr[],int left,int right);
    void bubbleSort(int Arr[]);
    void SelectSort(int Arr[]);

    int Arr[LEN];
    srand(time(NULL));

    
    cout<<"Quick Sort"<<endl;
    cout<<"*****************************"<<endl;
    cout<<"before"<<endl;
    for(int i=0;i<LEN;i++){
        Arr[i] = rand()%98+1;
        cout<<Arr[i]<<" ";
    }
    cout<<endl<<"after:"<<endl;
    quickSort(Arr,0,LEN-1);
    for(int i=0;i<LEN;i++){
        cout<<Arr[i]<<" ";
    }



    cout<<endl<<endl<<"Bubble Sort"<<endl;
    cout<<"*****************************"<<endl;
    cout<<"before"<<endl;
    for(int i=0;i<LEN;i++){
        Arr[i] = rand()%98+1;
        cout<<Arr[i]<<" ";
    }
    cout<<endl<<"after:"<<endl;
    bubbleSort(Arr);
    for(int i=0;i<LEN;i++){
        cout<<Arr[i]<<" ";
    }




    cout<<endl<<endl<<"Select Sort"<<endl;
    cout<<"*****************************"<<endl;
    cout<<"before"<<endl;
    for(int i=0;i<LEN;i++){
        Arr[i] = rand()%98+1;
        cout<<Arr[i]<<" ";
    }
    cout<<endl<<"after:"<<endl;
    SelectSort(Arr);
    for(int i=0;i<LEN;i++){
        cout<<Arr[i]<<" ";
    }

    return 0;
}


void quickSort(int Arr[],int left,int right){
    if(left>=right)
        return;

    int i,j,base;
    i = left;
    j = right;

    base = Arr[left];

    while(i<j){
        while(Arr[j]>=base && i<j)
            j--;
        while(Arr[i]<=base && i<j)
            i++;

        if( i < j ){
            int t = Arr[i];
            Arr[i] = Arr[j];
            Arr[j] = t;
        }
    }

    Arr[left] = Arr[i];
    Arr[i] = base;
    quickSort(Arr,left,i-1);
    quickSort(Arr,i+1,right);
    
}

void bubbleSort(int Arr[]){
    for(int i=0;i<LEN-1;i++)
        for(int j=0;j<LEN-1-i;j++){
            if(Arr[j]>Arr[j+1]){
                int t = Arr[j];
                Arr[j] = Arr[j+1];
                Arr[j+1] = t;
            }
        }

}

void SelectSort(int Arr[]){
    for(int i=0;i<LEN;i++){
        int min=i;
        for(int j=i;j<LEN;j++){
            if(Arr[j]<Arr[min])
                min=j;
        }
        int t=Arr[min];
        Arr[min]=Arr[i];
        Arr[i]=t;
    }
}

 

结果:

Quick Sort
*****************************
before
24 8 45 47 23 70 37 96 9 16
after:
8 9 16 23 24 37 45 47 70 96 

Bubble Sort
*****************************
before
98 64 35 29 8 3 54 22 48 96
after:
3 8 22 29 35 48 54 64 96 98 

Select Sort
*****************************
before
56 67 61 4 53 14 14 96 79 74
after:
4 14 14 53 56 61 67 74 79 96

 

六、c=a/b 捕获异常

源码:

#include<iostream>
using namespace std;

double division(double a,double b){
    if(b==0)
        throw "error";
    return a/b;
}

int main(){
    double a,b;
    while(1){
        cout<<"a/b, please input a b:";
        cin>>a>>b;
        try{
            double result=division(a,b);
            cout<<a<<"/"<<b<<"="<<result<<endl;
            break;
        }catch(const char *msg){
            cout<<"error!!"<<endl;
        }
    }
}

 

结果:

a/b, please input a b:3 0
error!!
a/b, please input a b:3 1.5
3/1.5=2

 

 

七、写一个类或结构体,包括学号姓名语数外成绩,输入n,新建n个,然后分别输入

源码:

#include<iostream>
#include<string>
using namespace std;

struct Student{
    string name;
    string id;
    double Chinses;
    double Math;
    double English;
};

int main(){
    int n;
    cout<<"please input n:";
    cin>>n;

    Student *stu = new Student[n];

    for(int i=0;i<n;i++){
        cout<<endl;
        cout<<"please input name:";
        cin>>stu[i].name;
        cout<<"please input ID:";
        cin>>stu[i].id;
        cout<<"please input Chinese Score:";
        cin>>stu[i].Chinses;
        cout<<"please input Math score:";
        cin>>stu[i].Math;
        cout<<"please input English Score:";
        cin>>stu[i].English;
    }

    cout<<endl<<"display:"<<endl;
    for(int i=0;i<n;i++){
        cout<<"*******************************"<<endl;
        cout<<"name:"<<stu[i].name<<endl;
        cout<<"ID:"<<stu[i].id<<endl;
        cout<<"Chinese Score:"<<stu[i].Chinses<<endl;
        cout<<"Math score:"<<stu[i].Math<<endl;
        cout<<"English Score:"<<stu[i].English<<endl;
        cout<<"*******************************"<<endl;
    }
}

 

结果:

please input n:5

please input name:jack
please input ID:01
please input Chinese Score:99
please input Math score:98
please input English Score:97

please input name:mike 
please input ID:02
please input Chinese Score:80
please input Math score:90
please input English Score:100

please input name:oscar
please input ID:03
please input Chinese Score:77
please input Math score:99
please input English Score:87

please input name:rookie
please input ID:04
please input Chinese Score:88
please input Math score:66
please input English Score:77

please input name:jackeylove
please input ID:05
please input Chinese Score:59
please input Math score:59
please input English Score:59

display:
*******************************
name:jack
ID:01
Chinese Score:99
Math score:98
English Score:97
*******************************
*******************************
name:mike
ID:02
Chinese Score:80
Math score:90
English Score:100
*******************************
*******************************
name:oscar
ID:03
Chinese Score:77
Math score:99
English Score:87
*******************************
*******************************
name:rookie
ID:04
Chinese Score:88
Math score:66
English Score:77
*******************************
*******************************
name:jackeylove
ID:05
Chinese Score:59
Math score:59
English Score:59
*******************************

 

 

八、用7的类,写三个函数,一个是将类用二进制追加到文件,一个是读取,还有一个是备份,把student.dat备份到student.bak

没时间写明天补~

 

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值