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

2016年苏州大学复试机试

第一题

题目

公鸡5元一只,母鸡3元一只,幼鸡1元3只。若100元钱买了100只鸡,问其中公鸡、母鸡、幼鸡各多少只?


博主注:此题经典百元买百鸡问题,出自:公元5世纪末,我国古代数学家张丘建在他所撰写的《算经》中,提出了这样一个问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?

代码

#include <iostream>
using namespace std;int main() {//最多20个公鸡for (int i = 0; i < 20; ++i) {//最多33个母鸡for (int j = 0; j < 33; ++j) {//最多100个幼鸡for (int k = 0; k < 100; ++k) {//满足三个条件if (i + j + k == 100 && (i * 5 + j * 3 + k / 3) == 100 && k % 3 == 0){cout << "公鸡:" << i << "只,母鸡:" << j << "只,幼鸡:" << k << "只" <<endl;}}}}return 0;
}

结果

第二题

题目

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

  1. 矩阵A的最小值最大值及它们所在的行号和列号;
  2. 矩阵A的两条对角线元素之和
  3. 从键盘输入一个4*4的矩阵B,计算矩阵A和B的成绩。

博主注:此题(1)(3)题同14年第二题(1)(2),题(2)同09年第一题(1)。

代码

版本一

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

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

#include <iostream>
#include <climits>
using namespace std;void Input_Function();
void Sum_diagonals();
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 MainDiag_Sum = 0;
int SecondaryDiag_Sum = 0;
int MandS_Sum = 0;
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的两条对角线元素之和Sum_diagonals();//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 Sum_diagonals(){//计算两对角线元素之和for (int i = 0; i < 4; ++i) {MainDiag_Sum += Arr_A[i][i];SecondaryDiag_Sum += Arr_A[i][4 - 1 -i];}MandS_Sum = MainDiag_Sum + SecondaryDiag_Sum;//输出两对角线元素之和cout << "主对角线元素之和:" <<  MainDiag_Sum << endl;cout << "副对角线元素之和:" <<  SecondaryDiag_Sum << endl;cout << "两对角线元素之和:" <<  MandS_Sum << 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 Sum_diagonals();
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 MainDiag_Sum = 0;
int SecondaryDiag_Sum = 0;
int MandS_Sum = 0;
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的两条对角线元素之和Sum_diagonals();//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 Sum_diagonals(){//计算两对角线元素之和for (int i = 0; i < 4; ++i) {MainDiag_Sum += Arr_A[i][i];SecondaryDiag_Sum += Arr_A[i][4 - 1 -i];}MandS_Sum = MainDiag_Sum + SecondaryDiag_Sum;//输出两对角线元素之和cout << "主对角线元素之和:" <<  MainDiag_Sum << endl;cout << "副对角线元素之和:" <<  SecondaryDiag_Sum << endl;cout << "两对角线元素之和:" <<  MandS_Sum << 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/662314.shtml

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

相关文章

模拟钉钉官网动画

实现思路&#xff1a;利用粘性定位sticky&#xff0c;以及滚动事件实现。首先我们应该设置滚动动画开始位置和结束位置 &#xff0c;然后根据位置计算透明度或者transform&#xff0c;scale的值。 首先根据上述图线计算属性值&#xff0c;代码如下&#xff1a; function creat…

PHP漏洞查询

CVE - Search CVE List (mitre.org) 美国国家漏洞数据库&#xff08;需要梯子&#xff09; NATIONAL VULNERABILITY DATABASE NVD - Search and Statistics (nist.gov) 基本都能查询到&#xff0c;传结果详情页里面会有一些解决方案的连接 PHP的官方网站 PHP :: Bugs :: Se…

C语言探索:水仙花数的奥秘与计算

摘要&#xff1a; 水仙花数&#xff0c;一种特殊的三位数&#xff0c;其各位数字的立方和等于该数本身。本文将详细介绍水仙花数的定义、性质&#xff0c;以及如何使用C语言来寻找100至999范围内的水仙花数。 目录 一、水仙花数的定义与性质 二、用C语言寻找100至999范围内的…

Camunda 流程引擎API介绍

&#x1f496;专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据&#xff0c;完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧&#x1f618; &#x1f496;Services …

病历管理系统

技术架构&#xff1a; StrutsSpringHibernate 有需要该项目的小伙伴可以私信我你的Q。 功能描述&#xff1a; 企业财务管理系统主要用于电子病历来提高医院各项工作的效率和质量&#xff0c;促进医学科研、教学&#xff1b;减轻各类事务性工作的劳动强度&#xff0c;使他们…

LCR 193. 二叉搜索树的最近公共祖先

解题思路&#xff1a; 小的在左子树&#xff0c;大的在右子树。 class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root.val<p.val&&root.val<q.val)return lowestCommonAncestor(root.right,p,q);if(root.va…

深度揭秘:代理IP的工作原理及其在网络安全中的关键角色

代理IP的工作原理及其在网络安全中的关键角色是一个相对复杂但非常重要的主题。以下是对这一内容的深度揭秘&#xff1a; 代理IP的工作原理 1. 请求转发 当一个客户端&#xff08;如浏览器或爬虫程序&#xff09;使用代理IP时&#xff0c;它不是直接与目标网站通信&#xff0c…

2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码

2024美国大学生数学建模E题财产保险的可持续模型详解思路具体代码 前言 很快啊&#xff01;啪的一下拿到题目就开始做题&#xff01;简单介绍一下我自己&#xff1a;博主专注建模五年&#xff0c;参与过大大小小数十来次数学建模&#xff0c;理解各类模型原理以及每种模型的建…

Linux网络编程 基础

OSI七层模型 物理层&#xff1a;主要定义物理设备标准&#xff0c;如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流&#xff08;就是由1、0转化为电流强弱来进行传输&#xff0c;到达目的地后再转化为1、0&#xff0c;也就是我们常说的…

微信公众号公函公证书怎么弄?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;公众号迁移的作用可不止是变更主体哦&#xff01;有时候我们可能需要更换账号主体&#xff0c;但公众号是不支持直接变更的。这时候&#xff0c;我们就可以通过账号迁移功能&#xff0c;把 A 公众号的粉丝、违规记录…

C++中的字符串翻转算法解析

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;今天我们来学一下C里的一个知识&#xff1a;字符串翻转。 目录 1.题目 描述 输入描述 输出描述 输入数据 1 输出数据 1 提示 2.解决题目 1.所需知识点 2.算法分析 1. 拼接…

演讲回顾:如何为大规模研发团队加速CI构建,实现高效流水线

近日&#xff0c;龙智联合Atlassian举办的DevSecOps研讨会年终专场”趋势展望与实战探讨&#xff1a;如何打好DevOps基础、赋能创新”在上海圆满落幕。龙智Atlassian技术与顾问咨询团队&#xff0c;以及清晖、JamaSoftware、CloudBees等生态伙伴的嘉宾发表了主题演讲&#xff0…

LLM App SDK:LangChain vs. LlamaIndex

在Why RAG is big中&#xff0c;我表示支持检索增强生成&#xff08;RAG&#xff09;作为私有、离线、去中心化 LLM 应用程序的关键技术。 当你建造一些东西供自己使用时&#xff0c;你就是在孤军奋战。 你可以从头开始构建&#xff0c;但在现有框架上构建会更有效。 NSDT工具推…

Java多线程--避免同步机制带来的死锁问题及用Lock锁解决线程安全问题

文章目录 一、死锁&#xff08;1&#xff09;说明&#xff08;2&#xff09;案例1、案例12、案例23、案例3 &#xff08;3&#xff09;诱发死锁的原因及解决方案1、诱发死锁的原因2、避免死锁 二、JDK5.0新特性&#xff1a;Lock(锁)&#xff08;1&#xff09;介绍&#xff08;2…

小白水平理解面试经典题目_数组类LeetCode 118 Pascal‘s Triangle【回归解法】

LeetCode 118 生成杨辉三角&#xff08;Pascal’s Triangle&#xff09; 小白渣翻译 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 例子 这里是小白理解 那么这种题目一上来看&#xf…

4-树-合并两个有序链表

这是树的第4篇算法&#xff0c;力扣链接。 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xf…

Linux下gcc的使用与程序的翻译

gcc和程序的翻译过程 gcc介绍程序的翻译过程预编译编译汇编链接 命令行式宏定义 gcc介绍 gcc是一款编译C语言编译器&#xff0c;可以把我们用vim写的代码编译成可执行程序。编译C用g进行编译&#xff0c;C的文件后缀是test.cc或test.cpp或test.cxx 如果要安装g就执行以下命令 …

C# winform 多语言(json)方式实现

前后对比 使用nuget json工具包1.总体思路 创建对应的json字典对照表 { "测试":"Test", "语言":"Language", "设置":"Set", "中文(默认)":"Chinese (default)", "英文":"E…

【HarmonyOS应用开发】ArkTS 属性动画的使用(十二)

一、概述 属性动画&#xff0c;是最为基础的动画&#xff0c;其功能强大、使用场景多&#xff0c;应用范围较广。常用于如下场景中&#xff1a; 一、页面布局发生变化。例如添加、删除部分组件元素。二、页面元素的可见性和位置发生变化。例如显示或者隐藏部分元素&#xff0…

CANoe学习笔记——窗口类型

CANoe中的窗口类型&#xff0c;共分为三种 1&#xff1a;MDI windows 2&#xff1a;Standard Windows 3&#xff1a;Docking Windows 窗口有多种类型&#xff0c;每种类型都定义了特定的窗口行为。通过点击窗口顶部的区域&#xff0c;可以更改窗口类型。 如下图&#xff0…