【C/PTA】数组练习(编程)
本文结合PTA专项练习带领读者掌握数组,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。
文章目录
- 7-1 计算最大值出现的次数
- 7-2 求一批整数中出现最多的个位数字
- 7-3 装箱问题
- 7-4 数组-值钱的微信号
- 7-5 数组-吹泡泡
- 7-6 数组-数学鬼才
7-1 计算最大值出现的次数
计算一维数组中最大值出现的次数。
输入格式:
输入在一行n( n<=1000,代表数组的大小),在下一行中输入 n个整数,为一维数组的元素。
输出格式:
输出最大值和出现的次数。
输入样例:
在这里给出一组输入。例如:
4
4 2 2 4
输出样例:
在这里给出相应的输出。例如:
4 2
#include <stdio.h>
int main()
{int n;scanf("%d",&n);int a[n];for(int i=0;i<n;i++){scanf("%d",&a[i]);}int max=a[0];int count=0;for(int i=0;i<n;i++){if(a[i]>max)max=a[i];}for(int i=0;i<n;i++){if(max==a[i])count++;}printf("%d %d",max,count);
}
7-2 求一批整数中出现最多的个位数字
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。
输入格式:
输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。
输出格式:
在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。
输入样例:
3
1234 2345 3456
输出样例:
3: 3 4
#include<stdio.h>
int main()
{int i, n;int a[1000];//储存输入的整数int b[10]={0};//记录每个个位数字出现的次数,一开始均为0int t=-1;//暂时存储每个整数的个位数字int max=-1;//记录出现次数最多的个位数字的次数scanf("%d", &n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++)//遍历每个整数{do//用do while将每一位都取出{t=a[i]%10;b[t]++; //如果是3,则b[3]的值加一a[i]=a[i]/10;}while(a[i]!=0);}//上一个循环结束后 b数组中储存的是每个数字对应的个数//现在找出出现次数最多的整数for(i=0;i<10;i++){if(b[i]>max){max=b[i];}}printf("%d:",max);for(i=0;i<10;i++){if(max==b[i])//打印次数{printf(" %d",i);}}return 0;
}
7-3 装箱问题
假设有N项物品,大小分别为s1、s2、…、si、…、sN,其中si为满足1≤si≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。
输入格式:
输入第一行给出物品个数N(≤1000);第二行给出N个正整数si(1≤si≤100,表示第i项物品的大小)。
输出格式:
按照输入顺序输出每个物品的大小及其所在的箱子序号,每个物品占1行,最后一行输出所需的箱子数目。
输入样例:
8
60 70 80 90 30 40 10 20
输出样例:
60 1
70 2
80 3
90 4
30 1
40 5
10 1
20 2
5
#include<stdio.h>
int main()
{int n;scanf("%d",&n);int a[1000]={0};int k=1;//表示目前已使用的箱子数目for(int i=0;i<n;i++){int t;scanf("%d",&t);//依次读入每个物品的大小for(int j=0;j<k;j++){if(a[j]+t<=100){a[j] += t;printf("%d %d\n",t,j+1);break;//从第一个箱子开始遍历,若当前箱子能够容纳该物品,则输出物品大小和箱子序号,并跳出当前循环;}if(j==k-1){//如果遍历到最后一个箱子仍然无法容纳该物品,则开一个新的箱子 输出物品大小和新的箱子序号a[k] = t;k++;printf("%d %d\n",t,k);break;}}}printf("%d",k);
}
7-4 数组-值钱的微信号
总算到站了。尽管阿翔还是没有解锁出钥匙。但是who cares!听说会有学姐在火车站口迎接学弟,这才是当下最重要的事情啊!阿翔屁颠屁颠地跑向站口……
“胡大的同学请到这里来。”然而并没有学姐。阿翔看着这一个个英俊潇洒的帅比学长,失望极了。这时他注意到了旁边的那支队伍,怎么那么多学姐!她们右肩扛着学弟的行李,左肩扛着大旗,旗上还绣着fjnu。阿翔暗想,他要加入那支队伍,不然至少也得要几个微信号。忽然,他觉得身后传来阵阵杀气,扭头一看,学长们的眼里道道寒光裹挟着邪魅。阿翔咽了咽口水,他知道,为了革命吃点苦,是在所难免的了——
阿翔的钱包里共有K枚金币。这里有N个学长,每贿赂一个学长i,阿翔就能获得一个学姐的微信号,但是要消耗Bi枚金币。阿翔想在钱包还没被掏空的情况下得到尽可能多的微信号(注:钱包里的钱是一定不能花光的,至少也得给自己留一枚金币嘛!人生最大的悲剧莫过于积了一页的微信号,却没钱买流量!),问:阿翔最多能要到多少个微信号?
输入格式:
第一行为两个正整数 K(0 < K <= 100) 和 N(0 < N <= 50),表示阿翔共有K枚金币,这里共有N个学长。
第二行有N个整数Bi(0 <= Bi <= 100),表示贿赂第i个学长所需要消耗的金币数。
相邻两个整数间用空格隔开。
输出格式:
输出仅一行,即阿翔所能得到的最多的微信号数目。
输入样例:
20 10
10 9 8 7 6 5 4 3 2 1
输出样例:
5
#include <stdio.h>int main()
{int k,n;scanf("%d%d",&k,&n);long long int a[n];for(int i=0;i<n;i++){scanf("%lli",&a[i]);}for(int i=0;i<n-1;i++){for(int j=0;j<n-1-i;j++){if(a[j]>a[j+1]){int t=a[j];a[j]=a[j+1];a[j+1]=t;}}}int sum=0;for (int i=0;i<n;i++){sum+=a[i];if(sum>=k){printf("%d",i);break;}if(i==n-1&&sum<k)//最后一位学长{printf("%d",n);}}return 0;
}
7-5 数组-吹泡泡
Shc特别喜欢吹泡泡,他现在已经吹出了N个泡泡,根据他多年吹泡泡的经验,他很快就目测出了每个泡泡的半径(能精确到小数点后一位)。但是他的数学特别的差。 现在他想知道每个泡泡的体积大小。因为shc吹泡泡的技术高超,所以每个泡泡都是绝对的球体。你能帮助他求出每个泡泡的体积大小,并且从大到小输出吗?并且在输出体积的同时也请输出这个泡泡是shc吹的第几个泡泡。
输入格式:
第一行为一个正整数N(0 < N <= 1000),表示有N个泡泡。
接下来N行按吹泡泡的顺序每行输入一个半径r (r 为1到100的任意实数)
注意: Pai = 3.14
4/3 = 1.33
输出格式:
输出共N行,每行两个数字,第一个数字为泡泡的体积(保留两位小数),第二个数字表示泡泡的编号。两个数字之间用一个空格分隔。
注:如果两个泡泡的体积相同,应保证编号小的泡泡在前。
输入样例:
3
1.2
2.4
3.1
输出样例:
124.41 3
57.73 2
7.22 1
#include <stdio.h>
int main()
{int n;scanf("%d",&n);double a[n];//储存体积int b[n];//储存编号for(int i=0;i<n;i++){scanf("%lf",&a[i]);}for(int i=0;i<n;i++){a[i]=1.33*3.14*a[i]*a[i]*a[i];//编号为1、2、3...的泡泡体积b[i]=i+1;}//使用冒泡排序按照体积降序排序,同时保持编号顺序不变for(int i=0;i<n-1;i++){for(int j=0;j<n-i-1;j++){if(a[j]<a[j+1]){double t=a[j];a[j]=a[j+1];a[j+1]=t;int s=b[j];b[j]=b[j+1];b[j+1]=s;}}}for(int i=0;i<n;i++){printf("%.2f %d\n",a[i],b[i]);}return 0;}
7-6 数组-数学鬼才
As we know,HHD is a 数学鬼才。
这一天他为了给学弟学妹们展示他的计算能力,他决定口算阶乘。对于给出的每个N,他都会立刻算出N!的值。但是由于N!一般比较大,所以他只说出对2018取模的结果,即N!%2018。但是他发现看他表演的只有学弟,没有迷妹,所以他决定把这个任务交给你。
输入格式:
第一行输入一个正整数Q(0<Q<=100),表示Q次询问。
接下来Q行,每行一个N(0 < N <= 10^17)。
输出格式:
输出共Q行,每行对应一次询问,输出一个整数,即N!对2018取模的结果。
输入样例1:
2
4
6
输出样例1:
24
720
输入样例2:
1
19
输出样例2:
2000
#include <stdio.h>
#include <math.h>
int main()
{int q,sum=1;scanf("%d",&q);for(int i=1;i<=2018;i++){sum=(sum*i)%2018;}//先计算2018的阶乘并对其取余 为后面做铺垫for(int i=1;i<=q;i++){long long int n;scanf("%lli",&n);int t=1;if(n>2018)//如果输入的数大于2018,则将大数拆分为2018的倍数和余数{int s=n/2018;n%=2018;t=(t*(int)pow(sum,s))%2018;}for(int i=1;i<=n;i++){t=(t*i)%2018;}printf("%d\n",t);}
}
相关文章:
【C/PTA】数组练习(编程)
本文结合PTA专项练习带领读者掌握数组,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 文章目录 7-1 计算最大值出现的次数7-2 求一批整数中出现最多的个位数字7-3 装箱问题7-4 数组-值钱的微信号7-5 数组-吹泡泡7-6 数组-数学鬼才 7…...
力扣:155. 最小栈(Python3)
题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部…...

uniapp实现在线PDF文件预览
下载pdf文件放在static文件夹下 bug:hbuildX创建的项目pdf文件夹可以放在根目录下面,但是cli创建的项目无法预览,只能放在static下面 按钮跳转预览页面 <button click"toPdf">pdf</button>methods: {toPdf() {uni.…...

Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(一)
下一篇:Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(二)-CSDN博客 介绍: Windows操作系统中自带了一款记事本应用程序,通常用于记录文字信息,具有简单文本编辑功能。Windows的记事本可以新…...
【系统架构设计】架构核心知识: 3.3 DSSA和ABSD
目录 一 特定领域软件架构DSSA 1 DSSA 2 DSSA的基本活动和产物 3 参与DSSA的人员 4 建立过程...

Git的安装和常用命令Git与SVN的区别Gitee远程仓库团队开发代码共享演示
目录 一、Git入门 1.1 Git简介 1.2 Git与SVN的区别 1.2.1 详解 1.2.2 图解 1.3 Git相较于SVN的优势与劣势 1.3.1 Git的优势与劣势 1.3.2 SVN的优势与劣势 1.4 Git的工作流程 1.4.1 图解 1.4.2 详解 二、Git的安装以及常用命令 2.1 Git官网链接 2.2 安装步骤 2.…...

五、计算机网络
(一)OSI/RM 七层模型 七层模型是计算机网络的基石,整个计算机网络是构建与七层模型之上的。 在数据链路层,数据开始以帧为单位,网卡的 MAC 地址就是数据帧的地址,数据的传输开始有地址了。 局域网是工作…...
使用Grafana与MySQL监控监控网络延迟
文章目录 前言python程序使用Grafana步骤1:安装和配置 Grafana步骤2:配置 Grafana 数据源步骤3:创建 Grafana 仪表盘步骤4:将 Grafana 仪表盘嵌入到博客中 前言 在网络应用中,网络延迟是一个重要的指标,它…...

互联网常见职称
1、管理层 CEO – Chief Executive Officer 首席执行官 VP – Vice President 副总裁 HRD – Humen Resource Director 人力资源总监 OD – Operations Director 运营总监 MD – Marketing Director 市场总监 GM – General Manager 总经理 PM – Production Manager 产品…...

UI设计软件有哪些好用和免费的吗?
在我们分享五个有用的原型工具之前,完成原型,将优化界面,这次是UI设计师的任务,UI设计软件对设计师非常重要,UI设计工具是否使用直接影响最终结果,然后有人会问:UI界面设计使用什么软件…...

Linux开发工具之编译器gcc/g++
文章目录 1.查看版本2.程序的翻译3.gcc指令3.1gcc hello.c -o hello3.2gcc -E hello.c -o hello.i3.3gcc -S hello.c -o hello.s3.4gcc -c hello.c -o hello.o3.5gcc hello.o -o hello 4.动静态库[详讲链接阶段]4.1初步认识4.2动态链接4.3静态链接 1.查看版本 gcc -v. 2.程序…...

【Kurbernetes资源管理】陈述式资源管理方式
陈述式 一、 理论部分1.1 管理K8s资源的基本方法1.1.1 陈述式资源管理方式1.1.2声明式资源管理方式1.1.3 GUI式资源管理方法 1.2 陈述式资源管理方式1.2.1 Kubelet工具简介1.2.2 kubectl 的基本语法1.2.3 Kubectl工具的自动补全功能 1.3 Kubernetes Service1.4 Service 的类型(…...
flink测试map转换函数和process函数
背景 在flink中,我们需要对我们写的map转换函数,process处理函数进行单元测试,测试的内容包括查看函数的输出结果是否符合以及函数内的状态是否正确更新,本文就记录几个测试过程中的要点 flink中测试函数 首先我们根据我们要测…...

【跟小嘉学习JavaWeb开发】第一章 开发环境搭建
系列文章目录 【跟小嘉学习JavaWeb开发】第一章 开发环境搭建 文章目录 系列文章目录[TOC](文章目录) 前言一、JDK的下载与安装1.1、关于JDK的版本问题 二、环境变量配置2.1、配置 JAVA_HOME、CLASSPATH2.2、配置path2.3、启动 cmd 三、编写代码、编译并执行3.1、编写代码&…...
CSS语法、选择器、属性
1.css语法 * 格式:选择器 {属性名1:属性值1;属性名2:属性值2;...}* 选择器:筛选具有相似特征的元素* 注意:* 每一对属性需要使用;隔开,最后一对属性可以不加 2.选择器:筛选具有相似特征的元素 * 分类:1. 基…...

深度学习读取txt训练数据绘制参数曲线图的方法
有一些深度学习模型是并不像yolo系列那样最终输出相应的参数图,有很多训练形成了一个训练log文件,于是需要读取log文件中的内容并绘制成曲线图。 如下实例,有一个log文件的部分截图,需要将其读取出来并绘制曲线图 废话不多说&…...

VB.NET—DataGridView控件教程详解
目录 前言: 过程: 第一步: 第二步: 第三步: 第四步: 第五步: 番外篇: 总结: 前言: DataGridView是.NET FormK中的一个Windows窗体控件,它提供了一个可视化的表格控件,允许用户以表格形式显示和编辑数据。它通常用于显示和编辑数据库…...

MCU测试科普|如何进行MCU芯片测试,具体流程是什么?
MCU芯片测试系统是一种专门用于检测MCU芯片性能和质量的综合性设备。它通常由硬件和软件两部分组成,硬件包括测试仪器、适配器、测试夹具等,用于连接被测MCU芯片和测试机,实现高效高精度的测试。软件部分通常包括测试程序、测试管理软件等&am…...
单向循环代码实现cpp
// 单向循环链表 class CircleLink { public:CircleLink(){head_ new Node();tail_ head_;head_->next_ head_;}~CircleLink(){Node* p head_->next_;while (p ! head_){head_->next_ p->next_;delete p;p head_->next_;}delete head_;}public:// 尾插法 …...

【原创】java+jsp+servlet简单图书管理系统设计与实现
摘要: 图书管理系统是一个专门针对图书馆管理而设计的系统,它可以帮助图书管理员有效的对图书进行管理,在图书管理系统的设计中,首先要考虑的是系统的需求分析,该系统的设计与实现涉及多个方面,包括数据库…...
链结构与工作量证明7️⃣:用 Go 实现比特币的核心机制
链结构与工作量证明:用 Go 实现比特币的核心机制 如果你用 Go 写过区块、算过哈希,也大致理解了非对称加密、数据序列化这些“硬核知识”,那么恭喜你,现在我们终于可以把这些拼成一条完整的“区块链”。 不过别急,这一节我们重点搞懂两件事: 区块之间是怎么连接成“链”…...
python打卡第48天
知识点回顾: 随机张量的生成:torch.randn函数卷积和池化的计算公式(可以不掌握,会自动计算的)pytorch的广播机制:加法和乘法的广播机制 ps:numpy运算也有类似的广播机制,基本一致 **…...

【立体匹配】:双目立体匹配SGBM:(1)运行
注:这是一个专题,我会一步步介绍SGBM的实现,按照我的使用和优化过程逐步改善算法,附带实现方法 系列文章【立体匹配】:双目立体匹配SGBM:(1)运行 【立体匹配】:双目立体匹…...

CodeBuddy一腾讯内部已有超过 85% 的程序员正在使用de编程工具
大家好,我是程序员500佰,目前正在前往独立开发路线,我会在这里分享关于编程技术、独立开发、技术资讯以及编程感悟等内容。 如果本文能给你提供启发和帮助,还请留下你的一健三连,给我一些鼓励,谢谢。 本文直…...

Selenium4+Python的web自动化测试框架
一、什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE:Firefo…...
【AI教我写网站-ECG datacenter】
阶段性总结:后端用户管理基础 在项目管理和协作中,清晰地阐述“为什么做”比“怎么做”更能凝聚共识和提供方向。我们不仅要理解技术实现,更要明白其背后的动机和意义。 让我们重新回顾并总结我们到目前为止的工作,这次会更侧重…...

【Zephyr 系列 8】构建完整 BLE 产品架构:状态机 + AT 命令 + 双通道通信实战
🧠关键词:Zephyr、BLE、状态机、双向透传、AT 命令、Buffer、主从共存、系统架构 📌适合人群:希望开发 BLE 产品(模块/标签/终端)具备可控、可测、可维护架构的开发者 🧭 引言:从“点功能”到“系统架构” 前面几篇我们已经逐步构建了 BLE 广播、连接、数据透传系统…...
Nginx+Tomcat负载均衡与动静分离架构
目录 简介 一、Tomcat基础部署与配置 1.1 Tomcat应用场景与特性 1.2 环境准备与安装 1.3 Tomcat主配置文件详解 1.4 部署Java Web站点 二、NginxTomcat负载均衡群集搭建 2.1 架构设计与原理 2.2 环境准备 2.3 Tomcat2配置(与Tomcat1对称) 2.4…...
【HarmonyOS 5】拍摄美化开发实践介绍以及详细案例
以下是 HarmonyOS 5 拍摄美化功能的简洁介绍,整合核心能力与技术亮点: 一、AI 影像创新 AI 魔法移图 系统级图像分层技术实现人物/物体自由拖拽、缩放与复制,突破传统构图限制。自动分离主体与背景,一键生成错位创意照&…...
【hadoop】Flink安装部署
一、单机模式 步骤: 1、使用XFTP将Flink安装包flink-1.13.5-bin-scala_2.11.tgz发送到master机器的主目录。 2、解压安装包: tar -zxvf ~/flink-1.13.5-bin-scala_2.11.tgz 3、修改文件夹的名字,将其改为flume,或者创建软连接…...