[iHooya]2023年1月30日作业解析

news2024/11/15 21:48:09

温度统计
现有一段时间的温度数据,请统计指定温度出现的次数。

输入
第一行一个整数n,表示温度数据的个数。(0 < n ≤ 200) 第二行n个整数,以空格分隔,每个整数表示一个温度,温度的范围大于等于0,小于等于40。 第三行一个整数,表示需要查询的温度t。(0 ≤ t ≤ 40)

输出
输出一个整数,表示温度t出现的次数。

样例输入
10
18 19 21 17 20 18 21 21 22 21
21

样例输出
4

考点:对一维数组操作
核心:判断+计数

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n;
	cin >> n;
	int arr[n];//存一段时间的温度
	for (int a = 0; a < n; a++)
		cin >> arr[a];
	int t, count = 0; //指定的温度,计数器
	cin >> t; //指定的温度
	for (int b = 0; b < n; b++)
	{
		if (arr[b] == t)
			count++;
	}
	cout << count;

	return 0;
}

序列排序
对于给定的正整数序列,按照每个数的各位数和从大到小排序,各位数和相同的按照本身大小排序,大的在前,小的在后。

输入
第一行1个整数n,表示序列的大小。( 0 < n ≤ 1000) 第二行n个正整数,表示序列的每个数,每个数不大于100000000。

输出
输出按照题目要求排序后的序列

样例输入
6
17 26 9 13 88 10

样例输出
88 9 26 17 13 10

考点:有条件的排序
核心:对数求位数和,判断排序条件

#include <bits/stdc++.h>
using namespace std;
//方法1
bool cmp(int a, int b)//改写sort函数排序规则
{
	int sum1 = 0, sum2 = 0;
	while (a != 0) //前一个数字位数求和
	{
		sum1 += a % 10;
		a /= 10;
	}
	while (b != 0) //后一个数字位数求和
	{
		sum2 += b % 10;
		b /= 10;
	}
	if (sum1 > sum2) //按照每个数的各位数和从大到小排序
		return true;
	else if (sum1 == sum2) //各位数和相同的按照本身大小排序,大的在前,小的在后。
	{
		if (a >= b)
			return true;
		else
			return false;
	}
	else if (sum1 < sum2)
		return false;
}

int main()
{
	int n;
	cin >> n;
	int arr[n];
	for (int a = 0; a < n; a++)
		cin >> arr[a];

	sort(arr, arr + n, cmp);

	for (int b = 0; b < n; b++)
		cout << arr[b] << " ";
	return 0;
}

#include <bits/stdc++.h>
using namespace std;

int  jia(int a)//把位数求和封装成一个函数,方便调用
{
	int sum = 0;
	while (a != 0)
	{
		sum += a % 10;
		a /= 10;
	}
	return sum;
}

int main()
{
	int n;
	cin >> n;
	int arr[n], sum[n]; //存原本的数,存位数求和后的数
	for (int a = 0; a < n; a++)
	{
		cin >> arr[a];
		sum[a] = jia(arr[a]); //将原本的数经过求和后赋值给求和的数组
	}

	for (int a = 0; a < n; a++)
	{
		for (int b = 0; b < n - a - 1; b++)
		{
			//按照每个数的各位数和从大到小排序,各位数和相同的按照本身大小排序,大的在前,小的在后。
			if (sum[b] < sum[b + 1] || (sum[b] == sum[b + 1] && arr[b] < arr[b + 1]))
			{
				swap(sum[b], sum[b + 1]);
				swap(arr[b], arr[b + 1]);
			}
		}
	}

	for (int b = 0; b < n; b++)
		cout << arr[b] << " ";
	return 0;
}

单词的长度
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。

输入
一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。

输出
依次输出对应单词的长度,之间以逗号间隔。

样例输入
She was born in 1990-01-02 and from Beijing city.

样例输出
3,3,4,2,10,3,4,7,5

考点:字符串处理
核心:对计数条件判断

#include <bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	getline(cin, s);
	int count = 0;
	for (int a = 0; a < s.length(); a++)
	{
		if (s[a] != ' ') //没有遇到空格
			count++;
		else if (s[a] == ' ' && s[a + 1] != ' ')
		{
			cout << count << ',';
			count = 0; //重新计数
		}
	}
	cout << count; //补上最后一个计数结果,后面没有逗号
	return 0;
}

扫雷游戏地雷数计算
扫雷游戏是一款十分经典的单机小游戏。它的精髓在于,通过已翻开格子所提示的周围格地雷数,来判断未翻开格子里是否是地雷。
现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格的周围格地雷数。
注:每个格子周围格有八个:上、下、左、右、左上、右上、左下、右下。

输入
第一行包含两个整数n和m,分别表示雷区的行数和列数。1 <= n <= 100, 1 <= m <= 100。 接下来n行,每行m个字符,‘*’表示相应格子中是地雷,‘?’表示相应格子中无地雷。字符之间无任何分隔符。

输出
n行,每行m个字符,描述整个雷区。若相应格中是地雷,则用‘*’表示,否则用相应的周围格地雷数表示。字符之间无任何分隔符。

样例输入
3 3
??
???
?
?

样例输出
10
221
1
1

考点:对二维数组的操作
核心:对周围方向的判断

在这里插入图片描述
方法1
在这里插入图片描述

方法2
在这里插入图片描述

古代密码
古罗马帝国有一个拥有各种部门的强大政府组织。其中一个部门就是保密服务部门。为了保险起见,在省与省之间传递的重要文件中的大写字母是加密的。当时最流行的加密方法是替换和重新排列。
替换方法是将所有出现的字符替换成其它的字符。有些字符会替换成它自己。例如:替换规则可以是将’A’ 到 'Y’替换成它的下一个字符,将’Z’替换成 ‘A’,如果原词是 “VICTORIOUS” 则它变成 “WJDUPSJPVT”。
排列方法改变原来单词中字母的顺序。例如:将顺序例如将顺序 < 2 1 5 4 3 7 6 10 9 8 > 应用到 “VICTORIOUS” 上,则得到"IVOTCIRSUO"。
人们很快意识到单独应用替换方法或排列方法加密,都是很不保险的。但是如果结合这两种方法,在当时就可以得到非常可靠的加密方法。所以,很多重要信息先使用替换方法加密,再将加密的结果用排列的方法加密。用两种方法结合就可以将"VICTORIOUS" 加密成"JWPUDJSTVP"。
考古学家最近在一个石台上发现了一些信息。初看起来它们毫无意义,所以有人设想它们可能是用替换和排列的方法被加密了。人们试着解读了石台上的密码,现在他们想检查解读的是否正确。他们需要一个计算机程序来验证,你的任务就是写这个验证程序。

输入
输入有两行。第一行是石台上的文字。文字中没有空格,并且只有大写英文字母。第二行是被解读出来的加密前的文字。第二行也是由大写英文字母构成的。 两行字符数目的长度都不超过100。

输出
如果第二行经过某种加密方法后可以产生第一行的信息,输出 “YES”,否则输出"NO"。

样例输入
JWPUDJSTVP
VICTORIOUS

样例输出
YES

考点:字符串,排序

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s1,s2;
	bool flag=true;
	cin>>s1>>s2;
	for(int a=0;a<s2.length();a++)
	{
		if(s2[a]>='A'&&s1[a]<='Y')
			s2[a]=s2[a]+1;
		else if(s2[a]=='Z')
			s2[a]='A';
	}
	sort(s1.begin(),s1.end());//对字符串进行排序(字典序)
	sort(s2.begin(),s2.end());
	for(int a=0;a<s1.length();a++)
	{
		if(s1[a]!=s2[a])
		{
			cout<<"NO";
			flag=false;
		}
	}	
	if(flag==true)
		cout<<"YES";
	return 0;
}

单词倒排
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。

输入:输入为一个字符串(字符串长度至多为100)。
输出:输出为按要求排序后的字符串。

样例输入I am a student
样例输出student a am I

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;//用于输入的字符串
	getline(cin,s);
	vector<string> word;//定义字符串类型的动态数组存单词
	s=s+' ';//字符串后连接一个空格用来确保单词全部存入动态数组里
	int x=0;//目标遍历到的字符的位置
	for(int a=0;a<s.length();a++)
	{
		if(s[a]==' ')
		{
			//遇到了空格说明已经遍历完一个单词了
			word.push_back(s.substr(x,a-x));//提取子串存入动态数组
			x=a+1;
		}
	}
	for(int a=word.size()-1;a>=0;a--)
		cout<<word[a]<<" ";
	return 0;
}

单词排序
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次。(区分大小写)

输入:一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。数据不含除字母、空格外的其他字符。

输出:按字典序输出这些单词,重复的单词只输出一次。

样例输入She wants to go to Peking University to study Chinese

样例输出
Chinese
Peking
She
University
go
study
to
wants

#include <bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	getline(cin, s);
	vector<string> word;//创建string类型动态数组用来存单词
	int x = 0;
	s = s + ' '; //字符串后加一个空格用做最后一个单词的判断
	for (int a = 0; a < s.length(); a++)
	{
		if (s[a] == ' ') //当遇到空格就说遍历完一个单词了
		{
			word.push_back(s.substr(x, a - x)); //提取单词放进动态数组中
			x = a + 1;
		}
	}
	sort(word.begin(), word.end());
	for (int a = 0; a < word.size(); a++)
		if ((word[a] != word[a - 1]) && (word[a].empty() != true))
			cout << word[a] << endl;

	return 0;
}

单词的长度
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。注意,如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。

输入
一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。

输出
依次输出对应单词的长度,之间以逗号间隔。

样例输入
She was born in 1990-01-02 and from Beijing city.

样例输出
3,3,4,2,10,3,4,7,5

#include <bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	getline(cin, s);
	vector<string> word;//创建string类型动态数组用来存单词
	int x = 0;
	s = s + ' '; //字符串后加一个空格用做最后一个单词的判断
	for (int a = 0; a < s.length(); a++)
	{
		if (s[a] == ' ') //当遇到空格就说遍历完一个单词了
		{
			word.push_back(s.substr(x, a - x)); //提取单词放进动态数组中
			x = a + 1;
		}
	}
	for (int a = 0; a < word.size(); a++)
		if (word[a].length() != 0)
			cout << word[a].length() << ",";
	return 0;
}

最长最短单词
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。

输入:一行句子。
输出:两行输出: 第1行,第一个最长的单词。 第2行,第一个最短的单词。

样例输入
I am studying Programming language C in Peking University

样例输出
Programming
I

提示
如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	vector<string> word;//定义动态string类型数组存单词
	int max = 0, min = 101;
	getline(cin, s);
	s = s + ' '; //确保存入到最后一个单词
	int x = 0, count = 0; //当前单词位置,单词长度
	for (int a = 0; a < s.length(); a++)
	{
		if (s[a] == ' ')
		{
			word.push_back(s.substr(x, a - x));
			count++;//记录单词长度
			x = a + 1;
		}
	}


	for (int a = 0; a < word.size(); a++)
	{
		if (word[a].length() >= max)
			max = word[a].length();
		if (word[a].length() <= min)
			min = word[a].length();
	}
	for (int a = 0; a < word.size(); a++)
		if (word[a].length() == max)
		{
			cout << word[a];
			break;
		}
	cout << endl;
	for (int a = 0; a < word.size(); a++)
		if (word[a].length() == min)
		{
			cout << word[a];
			break;
		}
	return 0;
}

在这里插入图片描述
方法1:
在这里插入图片描述

方法2
在这里插入图片描述

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

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

相关文章

OpenCV实战(9)——基于反向投影直方图检测图像内容

OpenCV实战&#xff08;9&#xff09;——基于反向投影直方图检测图像内容0. 前言1 反向投影直方图2. 反向投影颜色直方图3. 完整代码小结系列链接0. 前言 直方图是图像内容的一个重要特征。如果查看显示特定纹理或特定对象的图像区域&#xff0c;则该区域的直方图可以看作是一…

计算机网络之TCP全连接队列与半连接队列

什么是全、半连接队列 服务端接收syn请求后&#xff0c;内核会把该连接放入到半连接队列&#xff0c;服务端对synack返回ack后&#xff0c;会把连接从半连接队列移除&#xff0c;创建新的全连接&#xff0c;并把新的连接放入全连接队列 查看全连接队列的命令 全连接队列满了…

Deep Learning Tuning Playbook(深度学习调参手册中译版)

前言 由五名研究人员和工程师组成的团队发布了《Deep Learning Tuning Playbook》&#xff0c;来自他们自己训练神经网络的实验结果以及工程师的一些实践建议&#xff0c;目前在Github上已有1.5k星。原项目地址本文为《Deep Learning Tuning Playbook》中文翻译版本&#xff0…

聊一聊微信小程序生命周期你最想知道的一些事

目录 前言 解析 运行机制 总结 前言 &#xff08;1&#xff09;为什么是微信小程序 最近有人问我一些关于微信小程序的问题&#xff0c;今天有时间也就整理了一些微信小程序的相关资料&#xff0c;给大家简单系统总结一些微信小程序的相关知识及生命周期。 &#xff08;2…

使用光泵磁力仪(OPMs)非接触测量视网膜活动

使用光泵磁力仪&#xff08;OPMs&#xff09;非接触测量视网膜活动摘要绪论方法2.1参与者和测量设置2.2刺激2.3数据分析结果讨论原文见&#xff1a; https://www.sciencedirect.com/science/article/pii/S1053811921008016 摘要 光泵磁力仪&#xff08;OPM&#xff09;已被用…

关于提升销量和排名,亚马逊、wish、ebay卖家该怎么做?

新年好&#xff0c;我是龙哥测评&#xff0c;在这里祝愿所有跨境朋友在新的一年里财源滚滚&#xff0c;一切顺利。 接下来龙哥就来说说&#xff0c;为什么店铺销量提升不上去&#xff0c;产品曝光低转化率低&#xff0c;产品有排名但是没销量&#xff0c;等等这些问题&#xf…

5 个我们仍可 Solana 在熊市危机报有希望的原因

Daniel, 2022 年 1 月前面&#xff0c;我们发表了 《9 大指标分析 Solana 的熊市危机》。当查看数据时&#xff0c;有一个很好的论据&#xff0c;即 Solana 在 2021/2022 年期间严重超卖&#xff0c;该网络没有项目、TVL 或用户来维持自己度过长期的熊市。它的崩溃只是更严重&a…

QT/C++——主窗口和事件处理

一、主窗口 上面就是一个主窗口&#xff0c;主窗口中的每一个都是Action 这次新建工程要选择mainwindow #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QAction> #include <QTextEdit> #include <QLabel> #include &l…

LeetCode 剑指 Offer 09. 用两个栈实现队列

题目 解题 这道题是用两个栈实现一个队列&#xff0c;具有一个队尾添加元素和队头删除元素的功能 这里思路是一个进&#xff0c;一个出&#xff0c;里面的元素顺序很关键&#xff0c;要保持一个进栈最先进的元素在另一个出栈的栈顶 第一种方法是&#xff0c;每次进元素&#x…

冰冰学习笔记:信号

欢迎各位大佬光临本文章&#xff01;&#xff01;&#xff01; 还请各位大佬提出宝贵的意见&#xff0c;如发现文章错误请联系冰冰&#xff0c;冰冰一定会虚心接受&#xff0c;及时改正。 本系列文章为冰冰学习编程的学习笔记&#xff0c;如果对您也有帮助&#xff0c;还请各位…

使用Postman快速访问MemFire Cloud应用

“超能力”数据库&#xff5e;拿来即用&#xff0c;应用开发人员再也不用为撰写API而发愁。MemFire Cloud 为开发者提供了简单易用的云数据库&#xff08;表编辑器、自动生成API、SQL编辑器、备份恢复、托管运维&#xff09;&#xff0c;很大地降低开发者的使用门槛。 使用Post…

关于保研(免试攻读硕士学位研究生)的相关政策

文章目录1、保研政策是什么&#xff1f;2、哪些学校可以保研&#xff1f;3、保研的流程/名额是怎样的&#xff1f;1、保研政策是什么&#xff1f; 什么是保研&#xff1f; 官方定义&#xff1a; 保研&#xff08;全称&#xff1a;推荐优秀应届本科毕业生免试攻读硕士学位研究…

Linux基础开发环境,yum 与 vim。

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 &#x1f4ac;<4>前言&#xff1a;Linux必不可少的基础开发环境使用。 目录 一.Linux软件包管理器 yum &#x…

微电网经济优化运行(光伏、储能、柴油机)(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

液晶LCD1602驱动代码

液晶LCD1602简介LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏&#xff08;LCD&#xff09;、控制驱动主电路HD44780及其扩展驱动电路HD44100&#xff0c;以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能…

《数据结构》二叉树(性质and遍历)

目录 ​编辑 树的定义 概念 树的定义 二叉树的概念 满二叉树 概念 完全二叉树 概念 二叉树的性质 二叉树的遍历 先序遍历 中序遍历 后序遍历 层序遍历 树的定义 概念 树是一种非线性的数据结构 树的定义 子树是不相交的除了根节点外&#xff0c;每个节点有且仅有一个…

360度客户视频的内容和四种数据类型

提到CRM客户管理系统&#xff0c;您是不是经常听到“360度客户视图”这个词&#xff1f;所谓360度客户视图&#xff0c;让企业做到全方位地建立客户认知&#xff0c;消除客户生命周期所有的信息脱节。下面来详细讲讲&#xff0c;Zoho CRM系统的360度客户视图是什么&#xff1f;…

统计分析工具

百度统计 百度统计访问地址 https://tongji.baidu.com/web/10000370440/homepage/index 创建项目及获取项目标识 1、创建分析网站 在管理页面中点击新增网站&#xff0c;填写完信息 2、获取代码 得到如下代码&#xff1a; <script> var _hmt _hmt || []; (function…

测试开发必知必会:Pytest框架实战

应用场景&#xff1a; pytest 框架可以解决我们多个测试脚本一起执行的问题。 它提供了测试用例的详细失败信息&#xff0c;使得开发者可以快速准确地改正问题。它兼容最新版本的 Python。它还兼容 unittest、doctest 和 nose&#xff0c;开箱即用。接下来我们详细了解下pyte…

数据究竟是什么?

我们搞大数据的&#xff0c;每天都在说“数据”这个词。但是数据究竟是什么&#xff1f;其准确的定义是什么&#xff1f;可能大多数人都没有思考过这个问题。首先&#xff0c;我们来考察下数据这个词的起源。数据这个词在古汉语中是不存在的&#xff0c;而是近代以来&#xff0…