2008年苏州大学837复试机试C/C++

2008年苏州大学复试机试

题目

编写程序充成以下功能:
一、从键盘上输入随机变量x的 10个取样点。X0,X1—X9 的值;
1、计算样本平均值
2、判定x是否为等差数列
3、用以下公式计算z的值(t=0.63)

2008年苏州大学837复试机试C/C++_第1张图片

注。请对程序中必要地方进行注释


补充:个人觉得这个题目回忆不完整,应该再输入一组数据Y,以便完成第三项任务。

题目来自互联网,代码为原创

代码

#include 
//#include 
using namespace std;
bool Arithmetic_sequence(int x[]);
double Cal_z(const int x[], const int y[], double t);

int main() {

    //定义数组x
    int x[10];
    int y[10];

    //输入数字
    cout << "请输入10个取样点:" << endl;
    for (int i = 0; i < 10; ++i){
        cout << "请输入第 " << (i + 1) << " 个数:";
        cin >> x[i];
    }

    //打印数字
    cout << "输入的取样点为:" << endl;
    for (int i = 0; i < 10; ++i) {
        cout << x[i] << " ";
    }
    cout << endl;


    //计算数据和
    double sum = 0;
    for (int i = 0; i < 10; ++i) {
        sum += x[i];
    }
    // 计算平均值
    double average =  sum / 10;
    cout << "样本的平均值为: " << average << endl;

    /************
     * 这里可以直接使用accumulate函数来计算sum
     * 但需要注意要引入#include 
     ***********/

    //判断数组是否为等差数列
    if (Arithmetic_sequence(x)){
        cout << "x是等差数列。" << endl;
    } else {
        cout << "x不是等差数列。" << endl;
    }

 /*****************公式计算*************************/

    //输入数字
    cout << "请输入另一组10个取样点:" << endl;
    for (int i = 0; i < 10; ++i){
        cout << "请输入第 " << (i + 1) << " 个数:";
        cin >> y[i];
    }

    //打印数字
    cout << "输入的第二组取样点为:" << endl;
    for (int i = 0; i < 10; ++i) {
        cout << y[i] << " ";
    }
    cout << endl;

    // 指定 t 值为 0.63
    double t = 0.63;

    // 计算 z
    double z = Cal_z(x, y, t);

    // 打印计算结果
    cout << "计算得到的 z 值为: " << z << endl;

    system("pause");
    return 0;
}

//等差数列判断函数
bool Arithmetic_sequence(int x[]){
    int Dif = x[1] - x[0];
    for (int i = 2; i < 10; ++i) {
        if (x[i] - x[i - 1] != Dif){
            return false;
        }
    }
    return true;
}

double Cal_z(const int x[], const int y[], double t){
    double z = 0.0;

    // 计算 ΣYi (其中i=5 到 8)
    for (int i = 4; i <= 7; ++i) {
        double Term = 1.0;

        // 计算 Π[(t-Xj)/(Xi-Xj)] (其中j=5,j≠i,j到9)
        for (int j = 4; j <= 8; ++j) {
            if (j != i) {
                Term *= (t - x[j]) / (x[i] - x[j]);
            }
        }

        z += y[i] * Term;
    }

    return z;
}

测试

2008年苏州大学837复试机试C/C++_第2张图片

最后

此代码为个人编写,使用平台为Clion。

由于博主才疏学浅,如有错误请多多指正,如有更好解法请多多交流!

你可能感兴趣的:(C++,c语言,算法,开发语言,c++,考研,苏州大学)