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

2014年苏州大学复试机试

要求

  1. 要求用C/C++编程;
  2. 对程序中必要的地方进行注释。
  3. 上机规则
    1. 请在电脑桌面上新建一个文件夹文件夹名为考试姓名(中文);
    2. 考试完毕后,将所编写的文件放在上述文件中。

第一题(20分)

题目

从键盘上输入随机变量X 10个样本点值:X0,X1···· X9:

  1. 计算样本算术平均数;
  2. 计算样本方差S。

代码

#include <iostream>
#include <sstream> //字符串流
#include <cmath> //数学运算
using namespace std;
void Input_Function();
void Mean_Function();
void Standard_deviation();const int MAX_SIZE = 10;
int Arr[MAX_SIZE];
int Arr_Sum = 0;
double Average = 0;
int Arr_size = 0;int main() {//输入处理Input_Function();//求平均值Mean_Function();//求方差Standard_deviation();return 0;
}void Input_Function(){int Temp = 0;Arr_size = 0;cout << "请输入数字(以空格分隔):"<< endl;//读取整行输入string input;getline(cin,input);//使用字符串串流解析整行输入stringstream ss(input);//输入数组操作while (ss >> Temp){if (Arr_size < MAX_SIZE){Arr[Arr_size] = Temp;Arr_size++;} else{cout << "数组已满,无法添加更多元素。" << endl;break;}}//打印数组并求和cout << "输入数为:";for (int i = 0; i < Arr_size; ++i) {Arr_Sum += Arr[i];cout << Arr[i] << " ";}cout << endl;}void Mean_Function(){if (Arr_size > 0) {Average = static_cast<double>(Arr_Sum) / Arr_size;cout << "平均值为:" << Average << endl;} else{cout << "数组为空,无法计算平均值。" << endl;}
}void Standard_deviation(){if (Arr_size > 1){double variance = 0;for (int i = 0; i < Arr_size; ++i) {variance += pow(Arr[i] - Average,2);}variance /= (Arr_size - 1);cout << "方差为:" << variance << endl;} else{cout << "数组元素不足以计算方差。" << endl;}
}

结果

第二题(30分)

题目

以下三个问题要求用函数编写,从键盘输入一个4*4的矩阵A编程求:

  1. 矩阵A的最小值最大值及它们所在的行号和列号;
  2. 矩阵A的转置,即矩阵A的行列互换;
  3. 从键盘输入一个4*4的矩阵B,计算矩阵A和B的成绩。

代码

版本一

该版本是用C++写的C语言代码,但存在一个问题,笔者不知道如何能很好使用C语言(这里应该用数组)来处理出现两个或者两个以上相同的最大值或者最小值。版本二采用C++的容器操作来解决此问题。

个人感觉版本一符合出题人本意,因为苏大机试大部分都是以C语言为主,这个题可能有点不严谨

#include <iostream>
#include <climits>
using namespace std;void Input_Function();
void Tran_Arr();
void New_Arr();int Arr_A[4][4];
int Tran_Arr_A[4][4];
int Arr_B[4][4];
int Arr_AB[4][4];
int Max_element = INT_MIN; //整数类型最小值
int Min_element = INT_MAX; //整数类型最大值
int Max_row = 0;
int Max_column = 0;
int Min_row = 0;
int Min_column = 0;int main() {//矩阵A的最小值最大值及它们所在的行号和列号Input_Function();//矩阵A的转置Tran_Arr();//A*BNew_Arr();system("pause");return 0;
}void Input_Function(){int Temp = 0;cout << "请输入4*4矩阵A的元素:" << endl;//输入矩阵元素:for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout << "请输入第 " << (i + 1) << " 行,第 " << (j + 1) << " 列的元素:";cin >> Arr_A[i][j];//找最大值和最小值Temp = Arr_A[i][j];if (Temp > Max_element){Max_element = Temp;Max_row = i;Max_column = j;}if (Temp <= Min_element) {Min_element = Temp;Min_row = i;Min_column = j;}}}//输出矩阵cout << "输入的矩阵为:" << endl;for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout << Arr_A[i][j] << " ";}cout << endl;}// 输出最大值和最小值及其位置cout << "矩阵A的最大值为 " << Max_element << ",位于第 " << (Max_row + 1) << " 行,第 " << (Max_column + 1) << " 列。" << endl;cout << "矩阵A的最小值为 " << Min_element << ",位于第 " << (Min_row + 1) << " 行,第 " << (Min_column + 1) << " 列。" << endl;
}void Tran_Arr(){//矩阵A的转置for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {Tran_Arr_A[j][i] = Arr_A[i][j];}}//输出矩阵A的转置cout << "矩阵A的转置为:" << endl;for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout <<  Tran_Arr_A[i][j] << " ";}cout << endl;}}void New_Arr(){//输入矩阵Bcout << "请输入4*4矩阵B的元素:" << endl;for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout << "请输入第 " << (i + 1) << " 行,第 " << (j + 1) << " 列的元素:";cin >> Arr_B[i][j];}}//计算矩阵A和B的乘积for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {Arr_AB[i][j] = 0;for (int k = 0; k < 4; ++k) {Arr_AB[i][j] += Arr_A[i][k] * Arr_B[k][j];}}}// 输出矩阵乘积cout << "矩阵 A 和 B 的乘积为:" << endl;for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout << Arr_AB[i][j] << " ";}cout << endl;}}
版本二
#include <iostream>
#include <climits>
#include <vector>
using namespace std;void Input_Function();
void Tran_Arr();
void New_Arr();int Arr_A[4][4];
int Tran_Arr_A[4][4];
int Arr_B[4][4];
int Arr_AB[4][4];
int Max_element = INT_MIN; //整数类型最小值
int Min_element = INT_MAX; //整数类型最大值
vector<pair<int, int>> Max_positions;  // 存储最大值位置的向量
vector<pair<int, int>> Min_positions;  // 存储最小值位置的向量int main() {//矩阵A的最小值最大值及它们所在的行号和列号Input_Function();//矩阵A的转置Tran_Arr();//A*BNew_Arr();system("pause");return 0;
}void Input_Function(){int Temp = 0;cout << "请输入4*4矩阵A的元素:" << endl;//输入矩阵元素:for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout << "请输入第 " << (i + 1) << " 行,第 " << (j + 1) << " 列的元素:";cin >> Arr_A[i][j];//找最大值和最小值Temp = Arr_A[i][j];if (Temp > Max_element) {Max_element = Temp;Max_positions.clear();  // 清空之前记录的最大值位置Max_positions.push_back({i, j});} else if (Temp == Max_element) {Max_positions.push_back({i, j});  // 记录相同最大值的位置}if (Temp < Min_element) {Min_element = Temp;Min_positions.clear();  // 清空之前记录的最小值位置Min_positions.push_back({i, j});} else if (Temp == Min_element) {Min_positions.push_back({i, j});  // 记录相同最小值的位置}}}//输出矩阵cout << "输入的矩阵为:" << endl;for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout << Arr_A[i][j] << " ";}cout << endl;}// 输出最大值和最小值及其位置cout << "矩阵A的最大值为 " << Max_element << ",位于以下位置:" << endl;for (const auto& pos : Max_positions) {cout << "第 " << (pos.first + 1) << " 行,第 " << (pos.second + 1) << " 列" << endl;}cout << "矩阵A的最小值为 " << Min_element << ",位于以下位置:" << endl;for (const auto& pos : Min_positions) {cout << "第 " << (pos.first + 1) << " 行,第 " << (pos.second + 1) << " 列" << endl;}
}void Tran_Arr(){//矩阵A的转置for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {Tran_Arr_A[j][i] = Arr_A[i][j];}}//输出矩阵A的转置cout << "矩阵A的转置为:" << endl;for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout <<  Tran_Arr_A[i][j] << " ";}cout << endl;}}void New_Arr(){//输入矩阵Bcout << "请输入4*4矩阵B的元素:" << endl;for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout << "请输入第 " << (i + 1) << " 行,第 " << (j + 1) << " 列的元素:";cin >> Arr_B[i][j];}}//计算矩阵A和B的乘积for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {Arr_AB[i][j] = 0;for (int k = 0; k < 4; ++k) {Arr_AB[i][j] += Arr_A[i][k] * Arr_B[k][j];}}}// 输出矩阵乘积cout << "矩阵 A 和 B 的乘积为:" << endl;for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {cout << Arr_AB[i][j] << " ";}cout << endl;}}

结果

结果为版本二的

最后

此代码为个人编写,题目来自互联网,使用平台为Clion,C++17标准。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/654427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 运行vue项目

1&#xff1a;在本地电脑 项目跟目录 执行 npm run build 在根目录生成文件夹 dist 2&#xff1a;复制dist 到linux 上 /usr/vuespace/ledger-web/dist 3: 配置nginx server {listen 443 ssl;server_name tz.i569.cn; #填写绑定证书的域名ssl_certificate /etc/nginx/myconf…

如何搭建开源笔记Joplin服务并实现远程访问本地数据

文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具&#xff0c;拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能&#xff0c;…

【STM32】快速搭建工程

1. 快速生成工程 2.下载DFP包或者根据已有DFP包安装 3.拷贝现有工程的操作系统&#xff0c;应用层代码 debug 就完成最新工程的快速搭建 4.编译发现如下图 5.修改完这个报错&#xff0c;新工程建立基本完成&#xff0c;如果有其他错误&#xff0c;缝缝补补就可 比如 Main.c文…

广联达-EmailAccountOrgUserService-sql注入漏洞复现

产品简介 广联达OA是一款为企业提供综合办公解决方案的软件。它集成了多种功能&#xff0c;包括文档管理、流程审批、任务分配等&#xff0c;旨在提高企业内部的工作效率和协作能力。同时&#xff0c;广联达OA还注重安全性&#xff0c;通过多种措施保护企业数据和信息的安全。…

微博怎么把客户引流到私域?(引流技巧)

微博 1&#xff09;背景banner图 在微博主页顶部的背景图里&#xff0c;可以引导添加个人微信、公众号等信息&#xff0c;通常配合福利引导用户添加。 2&#xff09;个人简介 微博中比较常见的引流方式&#xff0c;可以直接在简介区内留下微信号、公众号名称、邮箱等信息&#…

[algorithm] 自动驾驶 规划 非线性优化学习系列之1 :车辆横向运动动力学详细解释

写在前面 最近时空联合规划很火&#xff0c;想学习。由于在学校主打学习新能源电力电子方向&#xff0c;转行后也想好好零散的知识体系。计划从车辆运动动力学习&#xff0c;模型预测控制&#xff08;经典控制目前看主打应用&#xff0c;不会再去深入&#xff09;&#xff0c;…

【方法论】费曼学习方法

费曼学习方法是由诺贝尔物理学奖得主理查德费曼提出的一种学习方法。这种方法强调通过将所学的知识以自己的方式解释给别人来提高学习效果。 费曼学习方法的步骤如下&#xff1a; 选择一个概念&#xff1a;选择一个要学习的概念或主题。 理解和学习&#xff1a;用自己的方式学…

Ubuntu本地部署Nextcloud并结合内网穿透实现远程访问搭建个人云盘

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访…

【服务器APP】利用HBuilder X把网页打包成APP

目录 &#x1f33a;1. 概述 &#x1f33c;1.1 新建项目 &#x1f33c;1.2 基础配置 &#x1f33c;1.3 图标配置 &#x1f33c;1.4 启动界面配置 &#x1f33c;1.5 模块配置 &#x1f33c;1.6 打包成APP &#x1f33a;1. 概述 探讨如何将网页转化为APP&#xff0c;这似乎…

[嵌入式系统-4]:龙芯1B 开发学习套件-1-开发版硬件介绍

目录 前言&#xff1a; 一、龙芯 1B 开发学习套件简介 1.1 概述 二、龙芯1B 200开发板硬件组成与接口介绍 2.1 概述 2.2 核心板 2.2.1 CPU 2.2.2 什么是核心板 2.2.3 龙芯1B 200核心板 2.2.4 龙芯1B核心板的接口定义 2.3 开发板 2.3.1 龙芯1B0200开发板 2.3.2 龙芯…

如何使用Everything随时随地远程访问本地电脑搜索文件

文章目录 前言1.软件安装完成后&#xff0c;打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库&#xff0c;我们需要两个软件的支持&#xff0c;分别是cpolar&#xff08;用于搭建内网穿透数据隧道…

【前沿技术杂谈:解释性人工智能】透视未来:解释性人工智能(XAI)在构建透明、可信AI世界中的角色

【前沿技术杂谈&#xff1a;解释性人工智能】透视未来&#xff1a;解释性人工智能&#xff08;XAI&#xff09;在构建透明、可信AI世界中的角色 引言揭开可解释性人工智能的面纱&#xff1a;定义、重要性与应用什么是可解释性AI&#xff1f;定义XAIXAI的目标 为什么需要可解释性…

智能水龙头行业研究:预计2028年将达到4.8亿美元

智能水龙头(智能水龙头)一般指智能感应水龙头。智能感应水龙头&#xff0c;智能节水&#xff1a;自动感应控制开、关&#xff0c;将手或盛水容器、洗涤物品伸入感应范围内&#xff0c;龙头即自动出水&#xff0c;离开后即停止出水。这种智能水龙头&#xff0c;伸手就来水&#…

Kotlin快速入门5

Kotlin的继承与重写 kotlin的继承 Kotlin中所有类都继承自Any类&#xff0c;Any类是所有类的超类&#xff0c;对于没有超类型声明的类是默认超类&#xff08;Any 不是 java.lang.Object&#xff09;&#xff1a; class LearnKotlin // 默认继承自Any Any类默认提供三个函数…

PyInstaller 将 Python 程序生成可直接运行的程序

图标转换地址&#xff1a;https://convert.app/#google_vignette 官方文档&#xff1a;https://readthedocs.org/projects/pyinstaller/downloads/pdf/stable/#page20 安装pyinstaller pip install pyinstaller执行打包 pyinstaller -i ./resource/w.icns -w -F whv.py --a…

开始学习第二十五天(番外)

今天分享一下写的小游戏啦 头文件game.h #include<stdio.h> #include<time.h> #include<stdlib.h> #define H 3 #define L 3 void InitBoard(char Board[H][L], int h, int l); void DisplayBoard(char Board[H][L], int h, int l); void playermove(cha…

幻兽帕鲁越玩越卡,内存溢出问题如何解决?

近期幻兽帕鲁游戏大火&#xff0c;在联机组队快乐游玩的同时&#xff0c;玩家们也发现了一些小问题。由于游戏有随机掉落材料的设定&#xff0c;服务器在加载掉落物的过程中很容易会出现掉帧、卡顿的情况。某些玩家甚至在游戏1&#xff5e;2时后就出现服务器崩溃的情况&#xf…

代码随想录算法刷题训练营day18

代码随想录算法刷题训练营day18&#xff1a;LeetCode(257)二叉树的所有路径、LeetCode(404)左叶子之和 LeetCode(257)二叉树的所有路径 题目 代码 import java.util.ArrayList; import java.util.List;/*** Definition for a binary tree node.* public class TreeNode {* …

代码小技巧

1、秒换算小时&分钟 int Time; int Hour,Minutes; HourTime/3600;//小时 Minutes(Time/60)%60;//分钟 Minutes(Time%3600)/60;//分钟 2、C当中比较大小 法一&#xff1a;利用库函数 int main() {int array[] { 5, 2, 9, 1, 7 }; cout << "最大值: "…

STP生成树协议实验

实验大纲 一、什么是生成树协议 二、生成树原理 1.STP工作原理 2.STP主要参数 3.STP根网桥 4.STP协议版本 三、实验 1.构建网络拓扑结构图 2.配置IP地址&#xff08;8台PC机&#xff09;&#xff1a;192.168.7.1~192.168.7.8 3.配置SW1 4.配置SW2 5.配置SW3 6.配置…