期末数组函数加强练习
前言:由于时间问题,部分题解取自网友,但都是做过的好题。
对于有些用c++实现的题目,可以转化成c实现,cin看成c的读入,可以用scanf,输出cout看作printf,endl即换行符
开胃菜:
第一题:求简单交错序列前N项和

思路
要求和,我先定义一个sum来装每一项(注意有精度要求),然后每一项定义为item。然后观察可以知道,分母通项=4n-3,并且奇数项为正,偶数为负,所以等下来个if判断给他乘-1;

第二题:最小回文数:

分析:
核心的的思路就是要输出比n大的最小的回文数,我们可以这样,把n自增的数传入判断为回文数的函数里去,如果是就跳出循环记录此时的值,然后输出。

数组:
第一题:矩阵的对角线求和

分析:
先是主对角线,就是从左上到右下的那条线,我们可以直观的发现它的行列坐标是相等,所以在C语言中的表现形式就是i==j;
然后是副对角线,从右上到左下,通过观察我们可以发现在3*3矩阵中,副对角线上的元素行列坐标相加是等于4,但是这里要注意的是:在C语言中数组的下标是从0开始的。所以表现形式为:i+j==2。
#include<stdio.h>
int main()
{int a[3][3];int i,j,sum1 = 0,sum2 = 0;for(i=0; i<3; i++){for(j=0; j<3; j++){scanf("%d",&a[i][j]);}}for(i=0; i<3; i++){for(j=0; j<3; j++){if(i == j)sum1 += a[i][j];if(i + j == 2)sum2 += a[i][j];}}printf("%d %d\n",sum1,sum2);return 0;
}
第二题:数组插入处理

分析:
首先是输入只含有9个元素的数组a[10],用for循环依次输入。接着输入插入的数字m,将m与数组元素比较。
1、当m<=a[0]时,记录t=0;
2、当m>=a[8]时,记录9;
3、当a[i]<=x<=a[i+1]时,记录x应该插入的位置t=i+1。
但是插入m之前要把元素往后移位,从后往前直到位置t,最后把m赋值给a[t],用for循环输出排好的a[10]。
注意事项:1、找插入位置时注意break退出遍历循环,不然就会出错误;
2、移位从后往前,不然从前往后会使数据丢失。
#include<stdio.h>
int main()
{int a[10], i, m, t;for (i = 0; i < 9; i++){scanf("%d", &a[i]);}a[9] = 0;scanf("%d", &m);if (m <= a[0])t = 0;if (m >= a[8])t = 9;for (i = 0; i < 9; i++){if (m >= a[i] && m <= a[i + 1]){t = i + 1;break;}}for (i = 9; i > t; i--){a[i] = a[i - 1];}a[t] = m;for (i = 0; i < 10; i++){printf("%d", a[i]);printf("\n");}return 0;
}
第三题:数字逆序输出

分析:
1.题目要求是输入十个整数。
2.所以我们定义数组长度为10就可以了。
3.利用for循环输入与输出。
#include<stdio.h>
int main()
{int a[10],i,j;for(i=0;i<10;i++) //注意这边是从i=0开始,到i<10scanf("%d",&a[i]);for(j=9;j>=0;j--) //数组逆序输出,我们可以从j=9开始,一直做到j<0,就结束循环printf("%d ",a[j]); //注意这边输出要空格隔开return 0;
}
第四题:数组替换
分析:
过于简单,看代码即可,适合小白中的小白
using namespace std;
#include<bits/stdc++.h>
int main()
{int X[10];for (int i = 0; i < 10; i++){cin >> X[i];if (X[i] <= 0)X[i] = 1;}for (int i = 0; i < 10; i++){printf("X[%d] = %d\n", i, X[i]);}}
第五题:最小数和它的位置

上码:
#include<bits/stdc++.h>
using namespace std;
int main()
{int min = 1001, n, arr[1001], flag;cin >> n;for (int i = 0; i < n; i++){cin >> arr[i];if (arr[i] < min){flag = i;min = arr[i];}}cout << "Minimum value: " << min << endl;cout << "Position: " << flag;return 0;
}
第六题:数组的右上半部分
思路:
首先 创建二维数组,然后观察规律,行数是从0-10,列数是1-11,所以我从第一行开始遍历,然后关键是列数的区间,列数第一行是11个,并且逐层减1,那么你可以在纸上模拟一下,当i=0,j=11,j是我要求的个数,然后i=1,j=10,得出规律,即可
第七题:数组的下方区域
思路:
寻找规律,遍历列数,i为行数,j为列数,行数和列数的和为11,得出规律即可实现
#include<bits/stdc++.h>
using namespace std;
int main()
{char a;cin >> a;double M[12][12], sum = 0, cnt = 0;for (int i = 0; i < 12; i++){for (int j = 0; j < 12; j++){cin >> M[i][j];}}for (int i = 7; i <= 11; i++){for (int j = 12 - i; j <= i - 1; j++){sum += M[i][j];cnt++;}}if (a == 'S'){printf("%.1lf", sum);}else if (a == 'M'){printf("%.1lf", sum/cnt);}return 0;
}
第八题:有趣的跳跃
分析:
1.标记flag为1
2.输入数字 ,存放在一个数组中
3.进行相邻数相减,并取绝对值,存放在另一个数组中
4.对另一个数组进行从小到大排序
5.判断,如果出现了第i个差的值不等于i的情况,这flag标为0
6.判断,输出
#include<stdio.h>
#include<math.h>
int main()
{long long int n,i,j,t;int flag=1;//标记flag为1 scanf("%lld",&n);int a[n],b[n-1];for(i=0;i<n;i++)scanf("%lld",&a[i]);//输入数字,存放在一个数组中for(i=0;i<n-1;i++)b[i]=abs(a[i+1]-a[i]);//进行相邻数相减,并取绝对值,存放在另一个数组中 for(i=0;i<n-1;i++){for(j=i+1;j<n-1;j++){if(b[j]<b[i]){t=b[i];b[i]=b[j];b[j]=t;//对另一个数组进行从小到大排序 }}}for(i=0;i<n-1;i++)//判断 {if(b[i]!=i+1){flag=0;break;//如果出现了第i个差的值不等于i的情况,这flag标为0 }}if(flag)//判断,输出 printf("Jolly");elseprintf("Not jolly");return 0;
}
第九题:校门外的树
思路:
定义一个数组;数组下标代表数轴上的每个整数点即0,1,2,……,n(长度为500的公路有501颗树);
把这个数组初始化全为1(为1代表有树,0代表被移除);
输入移除区域(x,y),把这个区域上的树全置0;(有多个,用循环控制);
输出为1的树的数目;
//C++
#include <iostream>
using namespace std;
int main()
{int L,M,x,y,a[10001];cin>>L>>M;for(int i=0;i<=L; i++) //先将数组全赋值为1 a[i]=1;for(int i=0; i<M; i++) {cin>>x>>y; //[x,y]为区域区间for(int j=x; j<=y; j++) //将区域区间内的值赋为0a[j]=0; }int sum=0;for(int i=0; i<=L; i++){if(a[i]==1) //如果数组元素值是1 则计数加1 sum++; }cout<<sum;return 0;}
如果用c和c++其实是可以互换的,
//C
#include <stdio.h>//初始化数组值为1
void InitArray(int *a,int num)
{for(int i=0; i<=num; i++){a[i]=1;}
}
//将要移除的区域(x,y)置为0
void InitZero(int *a,int x,int y)
{for(int i=x; i<=y; i++){a[i]=0; }
}
//输出值为1的即为结果
void Result(int *a,int L)
{ int sum=0;for(int i=0; i<=L; i++){if(a[i]==1)sum++;}printf("%d",sum);
}
int main()
{int a[10001]; //题意L<=10000 int L,M,x,y;while(scanf("%d%d",&L,&M)){InitArray(a,L);for(int i=0; i<M; i++){scanf("%d%d",&x,&y);InitZero(a,x,y);}Result(a,L);} return 0;
}
第十题:陶陶摘苹果

思路:
#include<iostream>
using namespace std;
int main()
{int a[10],n,i,sum=0;for(i=0;i<10;i++){cin>>a[i];}cin>>n;for(i=0;i<10;i++){if(a[i]<=n+30)sum++;}cout<<sum;return 0;
}
函数
第一题:自定义函数求一元二次方程

分析:
先知道求解公式
如果无实数根

第二题:自定义函数之字符串反转

分析:
首先说一下会用到的标准库函数,gets(),puts(),strlen(),前两个是在头文件stdio.h中,后一个是在string.h里,用法如下:
1、gets():与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
2、puts(): puts 和 printf的用法一样,puts()函数的作用与语句“printf("%s\n",s);的作用相同。注意:puts在输出字 符串后会自动输出一个回车符。
3、strlen():使用格式strlen(s)。返回s的长度,不包括结束符NULL。
其次我们的思路是申明一个exchange()函数用来做逆序,方法是:
b数组的第一个元素存储a数组的最后一个元素。l是数组a的长度,具体看代码,一目了然。
注:在将数组a的值赋给b数组之后,需要加一个b[j] = '\0'语句,不然会很烫的!这是因为我在将a的值赋给b的过程中并非是所有元素都有赋值,并且末尾没有结束符,而puts()输出字符串时要遇到'\0’也就是字符结束符才停止,所以要加上一句b[j] = '\0';
#include<stdio.h>
#include<string.h>int exchange(char a[],char b[])
{int i,l,j = 0;l = strlen(a);for(i=l-1; i>=0; i--){b[j] = a[i];j++;}b[j] = '\0'; //给末尾加上结束符。return 0;
}int main()
{char a[1000],b[1000];gets(a);exchange(a,b);puts(b);return 0;
}
第三题:自定义函数之字符串连接
分析:
此题可用指针来实现,即定义两个指针,用一个指针指向第二个字符的末尾\0,然后通过将
第用第一个指针指向第一个字符串的首元素,不断赋值到第二个字符串,直到第一个指针指向\0
然后记得添上\0。
//连接两个字符串,思路就是s接受的是str1的地址,t接受的是str2的地址,那么要把t赋值到s的末端,只需
//指向str1的指针s自增到/0的位置,然后把str2赋给str1,同时两种指针向后移动
//char* str_cat(char* s, char* t)
//{
// char* p = s;
// while (*s != '\0')
// {
// s++;
// }
// //出循环的时候s指向的是/0位置
// //开始把str2赋给str1;
// int i = 0;
// while (*(t+i) != '\0')
// {
// *(s+i) = *(t+i);
// i++;
// }
// *(s + i) = '\0';
// return p;
//}
相关文章:
期末数组函数加强练习
前言:由于时间问题,部分题解取自网友,但都是做过的好题。 对于有些用c实现的题目,可以转化成c实现,cin看成c的读入,可以用scanf,输出cout看作printf,endl即换行符 开胃菜ÿ…...
如何下载B站视频?我来教你B站视频下载方法
如何下载B站视频?B站作为一个巨大的宝藏库,日常可以拿它作为娱乐工具,刷一些有趣新奇的短视频。也可以把它作为一款成长学习工具,具有丰富的公开课、纪录片内容。 对于较短的视频来说,花费几分钟时间看一下就结束了&am…...
AcWing 3709:单链表节点交换 ← 四川大学考研机试题
【题目来源】 https://www.acwing.com/problem/content/3712/【题目描述】 输入一个单链表,依次交换前2个数,第3、4个数,第5、6个数,…,以此类推,直到操作完整个链表。 如果链表长度是奇数,则最…...
RocketMQ源码 Broker-ConsumerFilterManager 消费者数据过滤管理组件源码分析
前言 ConsumerFilterManager 继承了ConfigManager配置管理组件,拥有将内存数据持久化到磁盘文件consumerFilter.json的能力。它主要负责,对在消费者拉取消息时,进行消息数据过滤,且只针对使用表达式过滤的消费者有效。 源码版本&…...
数据挖掘-07-航空公司客户价值分析(包括数据和代码)
文章目录 0. 数据代码下载1. 背景与挖掘目标2. 导入相关库,加载数据2.1客户基本信息分布a. 绘制会员性别比例饼图b. 绘制会员各级别人数条形图c. 绘制年龄分布图 2.2 客户乘机信息分布分析a. 绘制客户飞行次数箱线图b. 绘制客户总飞行公里数箱线图 2.3 客户积分信息…...
浏览器 css 默认的字体图表
以下是一些常见的浏览器(PC端)中网站 CSS 默认字体及其对应的字体系列(font family): 浏览器默认字体字体系列(font family)ChromeArial, sans-serif“Arial”, “Helvetica Neue”, Helvetica…...
JAVA:注册表窗口的实现
目录 题目要求: 思路大意: 窗体的实现: 窗口A: 窗口B: 窗体之间的构思: 关键代码的实现: 窗口A: 封装列表: 窗口B: 题目要求: 使用…...
Liunx Centos 防火墙操作
liunx centos 防火墙 查看防火墙状态 systemctl status firewalld查看已经开放的端口 firewall-cmd --list-ports添加端口3306 firewall-cmd --zonepublic --add-port3306/tcp --permanent重启防火墙 firewall-cmd --reload数据库开放账号可以外网登陆 mysql -u root -p …...
VirtualBox 和 Vagrant 快速安装 Centos7 报错
VirtualBox 和 Vagrant 快速安装 Centos7 报错 今天尝试用 VirtualBox 和 Vagrant 快速安装 Centos7,BUG 多多! 1)下载 6.1.26 版本 VirtualBox,Windows11 不兼容???什么鬼? 解决…...
使用Python进行数学四则运算
当我们讨论到Python中的计算问题时,我们必然涉及到加法运算符()、减法运算符(-)、乘法运算符(*)以及除法运算符(/)这四大常见的算术运算。下面,我将为您展示如…...
成都工业学院2021级操作系统专周课程设计FCFS,SSTF,SCAN,LOOK算法的实现
运行环境 操作系统:Windows 11 家庭版 运行软件:CLion 2023.2.2 源代码文件 #include <iostream> #include <vector> #include <algorithm> #include <random> using namespace std;// 生成随机数 int generateRandomNumber…...
【51单片机系列】矩阵按键扩展实验
本文对矩阵按键的一个扩展,利用矩阵按键和动态数码管设计一个简易计算器。代码参考:https://blog.csdn.net/weixin_47060099/article/details/106664393 实现功能:使用矩阵按键,实现一个简易计算器,将计算数据及计算结…...
大数据云计算——Docker环境下部署Hadoop集群及运行集群案列
大数据云计算——Docker环境下部署Hadoop集群及运行集群案列 本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先,文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性,以及为何选择在Docker环境下部署Hadoop集群。接着&…...
计算机网络链路层(期末、考研)
计算机网络总复习链接🔗 目录 组帧差错控制检错编码纠错编码 流量控制与可靠传输机制流量控制、可靠传输与滑动窗口机制单帧窗口与停止-等待协议多帧滑动窗口与后退N帧协议(GBN)多帧滑动窗口与选择重传协议 介质访问控制信道划分介质访问控制…...
洛谷 P8794 [蓝桥杯 2022 国 A] 环境治理
文章目录 [蓝桥杯 2022 国 A] 环境治理题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE给点思考 [蓝桥杯 2022 国 A] 环境治理 题目链接 https://www.luogu.com.cn/problem/P8794 题目描述 LQ 国拥有 n n n 个城市,从 0 0 …...
力扣面试150题 | 买卖股票的最佳时期
力扣面试150题 | 买卖股票的最佳时期 题目描述解题思路代码实现 题目描述 121.买卖股票的最佳时期 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一…...
uniapp 之 图片 视频 文件上传
<view class"" style"padding: 24rpx 0"><text>相关资料 <text class"fs-26 color-666">(图片、视频、文档不超过9个)</text> </text><view class"flex align-center" style&…...
MIT线性代数笔记-第28讲-正定矩阵,最小值
目录 28.正定矩阵,最小值打赏 28.正定矩阵,最小值 由第 26 26 26讲的末尾可知在矩阵为实对称矩阵时,正定矩阵有以下四种判定方法(都是充要条件): 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&…...
Python:五种算法RFO、GWO、DBO、HHO、SSA求解23个测试函数
一、五种算法介绍 (1)红狐优化算法(Red fox optimization,RFO) (2)灰狼优化算法(Grey Wolf Optimizer,GWO) (3)蜣螂优化算法(Dung beetle opti…...
如何参与开源项目
大家好,受卡哥邀请,和大家分享一下开源活动的相关经验。首先简要自我介绍一下,我目前在一所985研二在读,主要学习大数据方向,从去年开始参与开源活动近一年时间,也对多个Apache框架有所贡献。 由于学校或专…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
