C++实验5

《C++程序设计实践》实验5
一、程序设计题(共10小题,100分)
题型得分	80
【描述】
编写程序,创建一个m×n(2≤m、n≤10)的矩阵,输入矩阵的值,找出该矩阵的鞍点,鞍点是指本行最大、本列最小的元素,可能没有鞍点,也可能有多个鞍点。简单起见,只考虑一个鞍点和没有鞍点的情况。测试数据保证矩阵中任意两个数互不相等。
【输入】
第一行输入矩阵的行列数m和n,以空格间隔。
接着按矩阵的行列数输入矩阵的值。
【输出】
按“行 列 鞍点值”的格式输出鞍点,若不存在鞍点,则输出“No saddle point”。
【输入示例】
3 4
41 89 31 39
96 94 15 20
40 96 86 11 
【输出示例】
0 1 89
【来源】
《程序设计基础——以C++为例》第4章实验6。

(10分)
我的答案:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int i, j, k;
    int array[3][11];
    int m, n;
    cin >> m >> n;
    for (i = 0; i < m; ++i) {
        for (j = 0; j < n; ++j) {
            cin >> array[i][j];
        }
    }
    int row = -1, column = -1, point = -1;
    bool flag = false;
    for (i = 0; i < m; ++i) {
        for (j = 0; j < n; ++j) {
            if (point <= array[i][j]) {
                row = i;
                column = j;
                point = array[i][j];
                flag = true;
            }
        }
        for (k = 0; k < m; ++k) {
            if (point > array[k][column])flag = false;
        }
        if (flag)break;
    }
    if (flag)cout << row << " " << column << " " << point;
    else cout << "No saddle point";
    return 0;
}

题目得分	10


【描述】
中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数或最中间两个数据的平均值(如果这组数的个数为奇数,则中位数为位于中间位置的那个数;如果这组数的个数为偶数,则中位数是位于中间位置的两个数的平均值)。
给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)。
【输入】
包含多组测试数据,每一组测试数据的第一行为n,代表该组测试数据包含的数据个数,1≤n≤10000。
接着n行为n个数据。n为0时结束输入。
【输出】
输出中位数,每一组测试数据输出一行。
【输入示例】
4
10
30
20
40
3
40
30
50
4
1
2
3
4
0
【输出示例】
25
40
210分)
我的答案:
#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	while(n!=0){
		int array[n];
		for(int i=0;i<n;i++){
			cin>>array[i];
		}
		
		for(int i=0;i<n;i++){
		    int temp=-1;
		    for(int j=i+1;j<n;j++){
			    if(array[j]<array[i]){
				    temp=array[j];
				    array[j]=array[i];
				    array[i]=temp;
			    }
		    }
	    }
	    
	    int average=0;
	    if(n%2!=0){
	    	average=array[(n-1)/2];
		}
		else{
			average=(array[n/2]+array[(n/2)-1])/2;
		}
		cout<<average<<endl;
		cin>>n;
	}
	return 0;
} 
题目得分	10


【描述】
编写程序,输入10个数,计算这10个数的均值和标准偏差。用下面的公式计算均值mean和标准偏差deviation:

【输入】
在第一行中给出10个数,数间以空格间隔。
【输出】
第一行为均值。
第二行为标准偏差。
【输入示例】
583 566 58 632 244 485 600 432 88 562
【输出示例】
425
216.476
【来源】
《程序设计基础——以C++为例》第4章实验4。

(10分)
我的答案:
double mean(const double x[],int arraySize){
	double sum=0;
	for(int i=0;i<arraySize;i++){
		sum+=x[i];
	}
	return sum/arraySize;
}

double deviation(const double x[],int arraySize){
	double total=0;
	for(int i=0;i<arraySize;i++){
		total=total+pow((mean(x,arraySize)-x[i]),2);
	}
	return sqrt(total/(arraySize-1));
}
题目得分	10


【描述】
编写程序,以左下三角的形式输出前n行杨辉三角形。
【输入】
输入在一行中给出n(1≤n≤10)。
【输出】
以左下三角的格式输出前n行杨辉三角形。每个数字占固定4位。
【输入示例】
5
【输出示例】
   1
   1   1
   1   2   1
   1   3   3   1
   1   4   6   4   1
【来源】
《程序设计基础——以C++为例》第4章实验7。

(10分)
我的答案:
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
	int n;
	cin>>n;
	int array[n][n];
	for(int i=0;i<n;i++){
		array[i][0]=1;
		array[i][i]=1;
	}
	for(int i=2;i<n;i++){
		for(int j=1;j<i;j++){
			array[i][j]=array[i-1][j-1]+array[i-1][j];
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<i+1;j++){
			cout<<setw(4)<<array[i][j];
		}
		cout<<endl;
	}
	return 0;
}
题目得分	10


【描述】
编写程序,定义和调用函数:void mulMatrix(int **a, int **b, int **c, int cRow, int cCol, intaCol),实现矩阵a和矩阵b相乘,结果存放在矩阵c中。
【输入】
第一行输入矩阵a的行数和列数,以空格间隔。
第二行输入矩阵b的列数(矩阵b的函数等于矩阵a的列数)。
接着按矩阵a的行列数输入矩阵a的值。
然后按矩阵b的行列数输入矩阵b的值。
【输出】
按矩阵c的行列数输出矩阵a和矩阵b相乘的结果矩阵c。元素间以空格分隔,但行末不得有多余空格。
【输入示例】
3 2
3
5 7
8 3
7 4
12 3 6
4 2 7
【输出示例】
88 29 79
108 30 69
100 29 70
【来源】
《程序设计基础——以C++为例》第4章实验13。

(10分)
我的答案:

题目得分	10


【描述】
给定一组整数,要求利用数组把这组数保存起来,实现对数组中的数循环移动。假定共有n个整数,则要使前面各数顺序向后移m个位置,并使最后m个数变为最前面的m个数。
要求只用一个数组的方式实现,一定要保证在输出结果时,输出的顺序和数组中数的顺序是一致的。
【输入】
第一行包含一个正整数n和一个正整数m,n和m以空格间隔。
第二行包含n个正整数,整数以空格间隔。
【输出】
依次输出经过循环移动后数组中元素值,元素值以空格间隔。
【输入示例】
11 4
15 3 76 67 84 87 13 67 45 34 45
【输出示例】
67 45 34 45 15 3 76 67 84 87 1310分)
我的答案:
#include<iostream>
using namespace std;
int main(){
	int n,m;
	cin>>n>>m;
	int array[n];
	for(int i=0;i<n;i++){
		cin>>array[i];
	}
	for(int i=n-m;i<n;i++){
		cout<<array[i]<<" ";
	}
	for(int i=0;i<n-m;i++){
		cout<<array[i]<<" ";
	} 
	return 0;
}

题目得分	10


【描述】
输入一个正整数n(2≤n≤10)和n×n矩阵a中的元素,如果a是上三角矩阵,输出“Yes”,否则输出“No”。
【输入】
第一行为正整数n,表示矩阵大小。
接着n行,每一行n个整数,整数以空格间隔。
【输出】
输出“Yes”或“No”。
【输入示例】
3
3 4 5
1 2 3
1 3 4
【输出示例】
No
【提示】
用二维数组表示n×n矩阵时(i表示行下标,j表示列下标),则:
主对角线i==j,副对角线i + j == n – 1。
上三角矩阵i<=j。
下三角矩阵i>=j。
【来源】
《程序设计基础——以C++为例》第4章实验5。

(10分)
我的答案:
#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int row=n;
	int column=n;
	int a[n][n];
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>a[i][j];
		}
	}
	
	int flag=1;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(i>j&&a[i][j]!=0){
				flag=0;
				break;
			}
		}
	}
	
	if(flag==0){
		cout<<"No"<<endl;
	}
	else{
		cout<<"Yes"<<endl;
	}
	return 0;
}
题目得分	10


【描述】
输入10个整数,存放在一维数组中,找出值最大和最小的元素,输出最大值、最小值及它们所在的元素下标。
【输入】
在一行中输入10个整数,整数以空格间隔。
【输出】
第一行输出最大值及其所在的元素下标,最大值和下标以空格间隔。
第二行输出最小值及其所在的元素下标,最小值和下标以空格间隔。
【输入示例】
1 3 57 9 6 0 8 2 4
【输出示例】
9 4
0 6
【来源】
《程序设计基础——以C++为例》第4章实验1。

(10分)
我的答案:
#include<iostream>
using namespace std;
int main(){
	int array[10];
	for(int i=0;i<10;i++){
		cin>>array[i];
	}
	int max=array[0];
	int maxindex=0;
	int min=array[0];
	int minindex=0;
	for(int i=0;i<10;i++){
		if(array[i]>max){
			max=array[i];
			maxindex=i;
		}
		if(array[i]<min){
			min=array[i];
			minindex=i;
		}
	}
	cout<<max<<" "<<maxindex<<endl;
	cout<<min<<" "<<minindex<<endl;
	
	return 0;
}
题目得分	10


【描述】
输入一指定金额(以元为单位),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的。
【输入】
输入一个小于1000的正整数。
【输出】
分行输出,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数。
【输入示例】
735
【输出示例】
7
0
1
1
1
0
【来源】
《程序设计基础——以C++为例》第4章实验2。

(10分)
我的答案:
#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int a=n/100;
	n=n-a*100;
	int b=n/50;
	n=n-b*50;
	int c=n/20;
	n=n-c*20;
	int d=n/10;
	n=n-d*10;
	int e=n/5;
	n=n-5*e;
	int f=n;
	cout<<a<<endl<<b<<endl<<c<<endl<<d<<endl<<e<<endl<<f<<endl;
	return 0;
}
题目得分	10


【描述】
输入n(1≤n≤100)个正整数(无序的),找出第k(k≤n)大的数。注意,第k大的数意味着从大到小排在第k位置的数。
【输入】
n
k
a1 a2 a3 a4...an
【输出】
b
【输入示例】
5
2
32 3 12 5 89
【输出示例】
3210分)
我的答案:
#include<iostream>
using namespace std;
int main(){
	int n,k,temp;
	cin>>n;
	cin>>k;
	int array[n];
	for(int i=0;i<n;i++){
		cin>>array[i];
	}
	for(int i=0;i<n;i++){
		temp=0;
		for(int j=i+1;j<n;j++){
			if(array[j]>array[i]){
				temp=array[j];
				array[j]=array[i];
				array[i]=temp;
			}
		}
	}
	cout<<array[k-1]<<endl;
	return 0;
}
题目得分	10

热门文章

暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法&#xff0c;在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较&#xff0c;从而确定目标数是在中间数的左边还是右边&#xff0c;将查…
暂无图片
编程学习 ·

GMX 命令分类列表

建模和计算操作命令&#xff1a; 1.1 . 创建拓扑与坐标文件 gmx editconf - 编辑模拟盒子以及写入子组(subgroups) gmx protonate - 结构质子化 gmx x2top - 根据坐标生成原始拓扑文件 gmx solvate - 体系溶剂化 gmx insert-molecules - 将分子插入已有空位 gmx genconf - 增加…
暂无图片
编程学习 ·

一文高效回顾研究生课程《数值分析》重点

数值分析这门课的本质就是用离散的已知点去估计整体&#xff0c;就是由黑盒子产生的结果去估计这个黑盒子。在数学里这个黑盒子就是一个函数嘛&#xff0c;这门课会介绍许多方法去利用离散点最大化地逼近这个函数&#xff0c;甚至它的导数、积分&#xff0c;甚至微分方程的解。…
暂无图片
编程学习 ·

在职阿里5年,一个28岁女软测工程师的心声

简单的先说一下&#xff0c;坐标杭州&#xff0c;14届本科毕业&#xff0c;算上年前在阿里巴巴的面试&#xff0c;一共有面试了有6家公司&#xff08;因为不想请假&#xff0c;因此只是每个晚上去其他公司面试&#xff0c;所以面试的公司比较少&#xff09; ​ 编辑切换为居中…
暂无图片
编程学习 ·

字符串左旋c语言

目录 题目&#xff1a; 解题思路&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 总代码&#xff1a; 题目&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符…
暂无图片
编程学习 ·

设计模式--观察者模式笔记

模式的定义与特点 观察者&#xff08;Observer&#xff09;模式的定义&#xff1a;指多个对象间存在一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xf…
暂无图片
编程学习 ·

睡觉突然身体动不了,什么是睡眠痽痪症

很多朋友可能有这样的体验&#xff0c;睡觉过程中突然意识清醒&#xff0c;身体却动弹不了。这时候感觉非常恐怖&#xff0c;希望旁边有一个人推自己一下。阳光以前也经常会碰到这样的情况&#xff0c;一年有一百多次&#xff0c;那时候很害怕晚上到来&#xff0c;睡觉了就会出…
暂无图片
编程学习 ·

深入理解C++智能指针——浅析MSVC源码

文章目录unique_ptrshared_ptr 与 weak_ptrstd::bad_weak_ptr 异常std::enable_shared_from_thisunique_ptr unique_ptr 是一个只移型别&#xff08;move-only type&#xff0c;只移型别还有std::mutex等&#xff09;。 结合一下工厂模式&#xff0c;看看其基本用法&#xff…
暂无图片
编程学习 ·

@TableField(exist = false)

TableField(exist false) //申明此字段不在数据库存在&#xff0c;但代码中需要用到它&#xff0c;通知Mybatis-plus在做写库操作是忽略它。,.
暂无图片
编程学习 ·

Java Web day15

第十二章文件上传和下载 一、如何实现文件上传 要实现Web开发中的文件上传功能&#xff0c;通常需要完成两步操作&#xff1a;一.是在Web页面中添加上传输入项&#xff1b;二是在Servlet中读取上传文件的数据&#xff0c;并保存到本地硬盘中。 需要使用一个Apache组织提供一个…
暂无图片
编程学习 ·

【51nod 2478】【单调栈】【前缀和】小b接水

小b接水题目解题思路Code51nod 2478 小b接水 题目 输入样例 12 0 1 0 2 1 0 1 3 2 1 2 1输出样例 6解题思路 可以发现最后能拦住水的都是向两边递减高度&#xff08;&#xff1f;&#xff09; 不管两个高积木之间的的积木是怎样乱七八糟的高度&#xff0c;最后能用来装水的…
暂无图片
编程学习 ·

花了大半天写了一个UVC扩展单元调试工具

基于DIRECTSHOW 实现的&#xff0c;用的是MFC VS2019. 详见&#xff1a;http://www.usbzh.com/article/detail-761.html 获取方法 加QQ群:952873936&#xff0c;然后在群文件\USB调试工具&测试软件\UVCXU-V1.0(UVC扩展单元调试工具-USB中文网官方版).exe USB中文网 USB中文…
暂无图片
编程学习 ·

贪心(一):区间问题、Huffman树

区间问题 例题一&#xff1a;区间选点 给定 N 个闭区间 [ai,bi]请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N&#xff0c;表示区间数。 接下来 …
暂无图片
编程学习 ·

C语言练习实例——费氏数列

目录 题目 解法 输出结果 题目 Fibonacci为1200年代的欧洲数学家&#xff0c;在他的着作中曾经提到&#xff1a;「若有一只免子每个月生一只小免子&#xff0c;一个月后小免子也开始生产。起初只有一只免子&#xff0c;一个月后就有两只免子&#xff0c;二个月后有三只免子…
暂无图片
编程学习 ·

Android开发(2): Android 资源

个人笔记整理 Android 资源 Android中的资源&#xff0c;一般分为两类&#xff1a; 系统内置资源&#xff1a;Android SDK中所提供的已经定义好的资源&#xff0c;用户可以直接拿来使用。 用户自定义资源&#xff1a;用户自己定义或引入的&#xff0c;只适用于当前应用的资源…
暂无图片
编程学习 ·

零基础如何在短时间内拿到算法offer

​算法工程师是利用算法处理事物的职业 算法&#xff08;Algorithm&#xff09;是一系列解决问题的清晰指令&#xff0c;也就是说&#xff0c;能够对一定规范的输入&#xff0c;在有限时间内获得所要求的输出。 如果一个算法有缺陷&#xff0c;或不适合于某个问题&#xff0c;执…
暂无图片
编程学习 ·

人工智能:知识图谱实战总结

人工智能python&#xff0c;NLP&#xff0c;知识图谱&#xff0c;机器学习&#xff0c;深度学习人工智能&#xff1a;知识图谱实战前言一、实体建模工具Protegepython&#xff0c;NLP&#xff0c;知识图谱&#xff0c;机器学习&#xff0c;深度学习 人工智能&#xff1a;知识图…
暂无图片
编程学习 ·

【无标题】

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…