华南师大计算机学院软件工程专硕(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<cstring>
using namespace std;

void bubble(int Array[],int length){
    bool flag=false;
    for(int i=0;i<length-1;i++){
        for(int j=i;j<length-1;j++){
            if(Array[i]>Array[j]){
                int t=Array[i];
                Array[i]=Array[j];
                Array[j]=t;
                flag=true;
            }
        }
        if(flag==false)
            break;
    }
}

//选择排序
void SelectSort(int Array[],int length){
    for(int i=0;i<length;i++){
        int min=i;
        for(int j=i;j<length;j++){
            if(Array[j]<Array[min])
                min=j;
        }
        int t=Array[min];
        Array[min]=Array[i];
        Array[i]=t;
    }
}

int main(){

    //冒泡排序测试
    int Array_1[5]={36,72,43,21,57};
    cout<<"Array_1:"<<endl;
    cout<<"Before Sort:"<<endl;
    for(int i=0;i<5;i++)
        cout<<Array_1[i]<<" ";
    cout<<endl;
    cout<<"After Sort:"<<endl;
    bubble(Array_1,5);
    for(int i=0;i<5;i++)
        cout<<Array_1[i]<<" ";
    cout<<endl;

    //选择排序测试
    int Array_2[5]={75,82,99,56,102};
    cout<<"Array_2:"<<endl;
    cout<<"Before Sort:"<<endl;
    for(int i=0;i<5;i++)
        cout<<Array_2[i]<<" ";
    cout<<endl;
    cout<<"After Sort:"<<endl;
    SelectSort(Array_2,5);
    for(int i=0;i<5;i++)
        cout<<Array_2[i]<<" ";
    cout<<endl;
}

结果:

Array_1:
Before Sort:
36 72 43 21 57
After Sort:
21 36 43 72 57
Array_2:
Before Sort:
75 82 99 56 102
After Sort:

六、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

没时间写明天补~

发布了24 篇原创文章 · 获赞 1 · 访问量 972

猜你喜欢

转载自blog.csdn.net/SampsonTse/article/details/104463971