当前位置: 首页 > news >正文

期末数组函数加强练习

前言:由于时间问题,部分题解取自网友,但都是做过的好题。

对于有些用c++实现的题目,可以转化成c实现,cin看成c的读入,可以用scanf,输出cout看作printf,endl即换行符

开胃菜:

第一题:求简单交错序列前N项和

759973b7ab2543eaa3c1d540cbec2758.png

 

 

思路

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

7a89597b0f964d5b8dd3428983425e5d.png

 

第二题:最小回文数:

06ccfe848b2447ce8eb5d6074724e714.png

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

fdc55138eedc40f6ad69d572c74b937c.png

数组:

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

 

aa29e27019e341bc8a41b84f2b9b802a.png

分析:

先是主对角线,就是从左上到右下的那条线,我们可以直观的发现它的行列坐标是相等,所以在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;
}

第二题:数组插入处理

add98c061c4f444eb31b6271426af8f0.png

 

分析:

首先是输入只含有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;
}

第三题:数字逆序输出

735cc4cbd34940fe9d9fbea6a836606b.png

分析:
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;
}

 

第四题:数组替换
daa7c546c4ef456fb3b258ddf1758741.png分析:

过于简单,看代码即可,适合小白中的小白

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]);}}

第五题:最小数和它的位置

d2e8c3722d95416db432e12afa6a567f.png

上码:

#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;
}

第六题:数组的右上半部分

a7f32dd1f6634834bea1daab38613267.png思路:

首先 创建二维数组,然后观察规律,行数是从0-10,列数是1-11,所以我从第一行开始遍历,然后关键是列数的区间,列数第一行是11个,并且逐层减1,那么你可以在纸上模拟一下,当i=0,j=11,j是我要求的个数,然后i=1,j=10,得出规律,即可

第七题:数组的下方区域

9ac381c4a6f44792b73a8fa1afcecdef.png思路:

寻找规律,遍历列数,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;
}

第八题:有趣的跳跃

acdaeede62104a9582c0c92cea737481.png分析:
 

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;
}

第九题:校门外的树

7477c404a7e243e9989fcd6482ff7995.png思路:
 

定义一个数组;数组下标代表数轴上的每个整数点即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;
}

第十题:陶陶摘苹果
aad72c8a9ec34d8aa8680d3dd42e7cd7.png

思路:

#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;
}

函数

第一题:自定义函数求一元二次方程

77b4a6fdf697459e80249d7d04bd98fd.png

分析:
先知道求解公式

cd327d6907f84532a1a13626c2de2011.png如果无实数根

50e63810515e45c6ac9e1165691d5e3c.png

 

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

4d30f2bfa7ba4819a20124c51be74fb7.png

分析:

首先说一下会用到的标准库函数,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;
}

第三题:自定义函数之字符串连接

9d1a3a7ecdec4639af9847508cd6057a.png分析:

此题可用指针来实现,即定义两个指针,用一个指针指向第二个字符的末尾\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;
//}

 

 

 

相关文章:

期末数组函数加强练习

前言&#xff1a;由于时间问题&#xff0c;部分题解取自网友&#xff0c;但都是做过的好题。 对于有些用c实现的题目&#xff0c;可以转化成c实现&#xff0c;cin看成c的读入&#xff0c;可以用scanf&#xff0c;输出cout看作printf&#xff0c;endl即换行符 开胃菜&#xff…...

如何下载B站视频?我来教你B站视频下载方法

如何下载B站视频&#xff1f;B站作为一个巨大的宝藏库&#xff0c;日常可以拿它作为娱乐工具&#xff0c;刷一些有趣新奇的短视频。也可以把它作为一款成长学习工具&#xff0c;具有丰富的公开课、纪录片内容。 对于较短的视频来说&#xff0c;花费几分钟时间看一下就结束了&am…...

AcWing 3709:单链表节点交换 ← 四川大学考研机试题

【题目来源】 https://www.acwing.com/problem/content/3712/【题目描述】 输入一个单链表&#xff0c;依次交换前2个数&#xff0c;第3、4个数&#xff0c;第5、6个数&#xff0c;…&#xff0c;以此类推&#xff0c;直到操作完整个链表。 如果链表长度是奇数&#xff0c;则最…...

RocketMQ源码 Broker-ConsumerFilterManager 消费者数据过滤管理组件源码分析

前言 ConsumerFilterManager 继承了ConfigManager配置管理组件&#xff0c;拥有将内存数据持久化到磁盘文件consumerFilter.json的能力。它主要负责&#xff0c;对在消费者拉取消息时&#xff0c;进行消息数据过滤&#xff0c;且只针对使用表达式过滤的消费者有效。 源码版本&…...

数据挖掘-07-航空公司客户价值分析(包括数据和代码)

文章目录 0. 数据代码下载1. 背景与挖掘目标2. 导入相关库&#xff0c;加载数据2.1客户基本信息分布a. 绘制会员性别比例饼图b. 绘制会员各级别人数条形图c. 绘制年龄分布图 2.2 客户乘机信息分布分析a. 绘制客户飞行次数箱线图b. 绘制客户总飞行公里数箱线图 2.3 客户积分信息…...

浏览器 css 默认的字体图表

以下是一些常见的浏览器&#xff08;PC端&#xff09;中网站 CSS 默认字体及其对应的字体系列&#xff08;font family&#xff09;&#xff1a; 浏览器默认字体字体系列&#xff08;font family&#xff09;ChromeArial, sans-serif“Arial”, “Helvetica Neue”, Helvetica…...

JAVA:注册表窗口的实现

目录 题目要求&#xff1a; 思路大意&#xff1a; 窗体的实现&#xff1a; 窗口A&#xff1a; 窗口B&#xff1a; 窗体之间的构思&#xff1a; 关键代码的实现&#xff1a; 窗口A&#xff1a; 封装列表&#xff1a; 窗口B&#xff1a; 题目要求&#xff1a; 使用…...

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&#xff0c;BUG 多多&#xff01; 1&#xff09;下载 6.1.26 版本 VirtualBox&#xff0c;Windows11 不兼容&#xff1f;&#xff1f;&#xff1f;什么鬼&#xff1f; 解决…...

使用Python进行数学四则运算

当我们讨论到Python中的计算问题时&#xff0c;我们必然涉及到加法运算符&#xff08;&#xff09;、减法运算符&#xff08;-&#xff09;、乘法运算符&#xff08;*&#xff09;以及除法运算符&#xff08;/&#xff09;这四大常见的算术运算。下面&#xff0c;我将为您展示如…...

成都工业学院2021级操作系统专周课程设计FCFS,SSTF,SCAN,LOOK算法的实现

运行环境 操作系统&#xff1a;Windows 11 家庭版 运行软件&#xff1a;CLion 2023.2.2 源代码文件 #include <iostream> #include <vector> #include <algorithm> #include <random> using namespace std;// 生成随机数 int generateRandomNumber…...

【51单片机系列】矩阵按键扩展实验

本文对矩阵按键的一个扩展&#xff0c;利用矩阵按键和动态数码管设计一个简易计算器。代码参考&#xff1a;https://blog.csdn.net/weixin_47060099/article/details/106664393 实现功能&#xff1a;使用矩阵按键&#xff0c;实现一个简易计算器&#xff0c;将计算数据及计算结…...

大数据云计算——Docker环境下部署Hadoop集群及运行集群案列

大数据云计算——Docker环境下部署Hadoop集群及运行集群案列 本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先&#xff0c;文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性&#xff0c;以及为何选择在Docker环境下部署Hadoop集群。接着&…...

计算机网络链路层(期末、考研)

计算机网络总复习链接&#x1f517; 目录 组帧差错控制检错编码纠错编码 流量控制与可靠传输机制流量控制、可靠传输与滑动窗口机制单帧窗口与停止-等待协议多帧滑动窗口与后退N帧协议&#xff08;GBN&#xff09;多帧滑动窗口与选择重传协议 介质访问控制信道划分介质访问控制…...

洛谷 P8794 [蓝桥杯 2022 国 A] 环境治理

文章目录 [蓝桥杯 2022 国 A] 环境治理题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE给点思考 [蓝桥杯 2022 国 A] 环境治理 题目链接 https://www.luogu.com.cn/problem/P8794 题目描述 LQ 国拥有 n n n 个城市&#xff0c;从 0 0 …...

力扣面试150题 | 买卖股票的最佳时期

力扣面试150题 &#xff5c; 买卖股票的最佳时期 题目描述解题思路代码实现 题目描述 121.买卖股票的最佳时期 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一…...

uniapp 之 图片 视频 文件上传

<view class"" style"padding: 24rpx 0"><text>相关资料 <text class"fs-26 color-666">&#xff08;图片、视频、文档不超过9个&#xff09;</text> </text><view class"flex align-center" style&…...

MIT线性代数笔记-第28讲-正定矩阵,最小值

目录 28.正定矩阵&#xff0c;最小值打赏 28.正定矩阵&#xff0c;最小值 由第 26 26 26讲的末尾可知在矩阵为实对称矩阵时&#xff0c;正定矩阵有以下四种判定方法&#xff08;都是充要条件&#xff09;&#xff1a; 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&…...

Python:五种算法RFO、GWO、DBO、HHO、SSA求解23个测试函数

一、五种算法介绍 &#xff08;1&#xff09;红狐优化算法&#xff08;Red fox optimization&#xff0c;RFO&#xff09; &#xff08;2&#xff09;灰狼优化算法(Grey Wolf Optimizer&#xff0c;GWO) &#xff08;3&#xff09;蜣螂优化算法&#xff08;Dung beetle opti…...

如何参与开源项目

大家好&#xff0c;受卡哥邀请&#xff0c;和大家分享一下开源活动的相关经验。首先简要自我介绍一下&#xff0c;我目前在一所985研二在读&#xff0c;主要学习大数据方向&#xff0c;从去年开始参与开源活动近一年时间&#xff0c;也对多个Apache框架有所贡献。 由于学校或专…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...