- 博客(102)
- 收藏
- 关注
原创 1243: 二维数组输出(3)
+j) { // 遍历当前行中的每一列。// 放置当前值并递增。输入一个整数N,输出一个N行N列的二维矩阵,矩阵中的元素用1——N*N顺序螺旋填充。
2025-04-04 18:29:39
495
原创 1208: 【数组】狐狸捉兔子
围绕着山顶有10个洞,一只狐狸和一只兔子各住一个洞。一天兔子对狐狸说:“你想吃我有一个条件,先把洞从1~10编上号,你从10号洞出发,先到1号洞找我;第二次隔1个洞找我,第三次隔2个洞找我,以后依此类推,次数不限。若能找到我,你就可以饱餐一顿。不过在没有找到我以前不能停下来。”狐狸满口答应就开始找了,它从早到晚找了1000次洞,累得昏了过去也没有找到兔子。请问,免子躲在几号洞里?一行,按顺序输出兔子可能躲藏的洞的编号,用空格分隔,行尾不能有空格。
2025-03-29 09:09:07
157
原创 1191: 统计数字出现次数 [1*]
found && currentNumber == targetNumber) { // 如果尚未找到目标数字且当前数字等于目标数字。// 输出首次出现的位置和出现次数。if (currentNumber == targetNumber) { // 如果当前数字等于目标数字。// 初始化计数器,用于记录目标数字M出现的次数。// 目标数字M,待查找的数字。// 读取整数N,表示接下来要输入的数字个数。// 读取目标数字M。【问题】输入N个数,计算数字M的出现次数,并输出M的第一次出现的位置。
2025-03-29 08:59:33
456
原创 1242: 二维数组输出(2)
输入一个整数N,输出一个N行N列的二维矩阵,矩阵中的元素按列用1——N*N顺序填充。输出N行N列的矩阵,元素之间用一个空格隔开,行末不要有多余的空格。一个整数N(N<=10)
2025-03-29 08:56:52
171
原创 枚举算法的了解
适用场景:问题解空间有限、数学约束明确、正确性优先的场景。优化方向通过数学建模缩小枚举范围。结合剪枝、并行计算等技术提升效率。在大规模问题中,优先考虑其他算法(如动态规划、分治)。通过深入理解枚举法的数学本质与工程实现,开发者能够在保证正确性的前提下,最大化利用计算机的计算能力,解决从经典数学问题到现代密码学挑战的各类复杂场景。
2025-03-28 21:37:03
853
原创 文件的操作
在操作系统中,每个进程都有三个标准的输入输出流:标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)。文件重定向技术允许用户改变程序输入输出的默认方向,将原本要输出到标准输出设备(通常是屏幕)的数据输出到文件中,或者从文件中读取数据而不是从标准输入设备(通常是键盘)获取输入。“a”:以追加模式打开文本文件,如果文件不存在则创建,写入的数据会追加到文件末尾。“w”:以写入模式打开文本文件,如果文件不存在则创建,如果文件已存在则清空内容。“r”:以只读模式打开文本文件,文件必须存在。
2025-03-28 21:30:57
275
原创 函数递归的了解
函数递归是指一个函数在其定义中直接或间接地调用自身的编程技巧。递归通常包含两个关键部分:基本情况(Base Case)和递归情况(Recursive Case)。基本情况是递归终止的条件,避免无限递归;当 n 为 0 或 1 时,函数返回 1,递归终止;否则,函数返回 n 乘以 (n – 1) 的阶乘。递归是一种强大的编程技巧,但在使用时需要注意递归深度,避免栈溢出的问题。对于一些复杂的递归问题,也可以考虑使用迭代方法来替代递归,以提高性能。当 n > 1 时,n!当 n = 0 或 n = 1 时,n!
2025-03-28 21:29:58
183
原创 指针的了解
在C++中,指针是一个非常重要且强大的概念,它存储的是变量的内存地址。内存中的每个字节都有一个唯一地址(如 0x7ffeeb0b9d6c),指针的作用是直接操作这些地址,实现高效的数据访问和管理。//不实际交换变量的值,只交换pa和pb变量的值。//等价于 cout<< *(*(p+1)+2)// 声明一个指向函数的指针,该函数接受两个int参数并返回一个int值。//修改p指向地址的值,相当于修改变量num的值。//输出指针所指向的值。int* p = # // & 取地址符,获取num的地址。
2025-03-28 21:28:10
541
原创 string
(3)rbegin() 对应最后一个字符,rend() 对应第一个字符之前。(1)string自动管理内存,但频繁修改可能导致多次重新分配,可使用 reserve() 优化性能。
2025-03-28 21:26:50
827
原创 c++字符串的初步认识与深入了解
推荐使用场景C风格字符串:嵌入式系统、与C库交互、性能敏感场景。:现代C++开发、需要安全性和易用性的场景。未来趋势随着C++标准演进,的功能和性能持续优化(如C++11的初始化语法),逐渐成为字符串处理的首选。总结:C++字符串处理需根据场景权衡选择。对于新手,的易用性和安全性更优;在特定需求下,C风格字符串的底层控制能力不可替代。掌握两者的差异与协同,能显著提升开发效率与代码质量。
2025-03-28 21:26:21
396
原创 结构体与联合体
在这个示例中,Student 是结构体名,它包含三个成员:id(整数类型,用于存储学生的编号)、name(字符串类型,用于存储学生的姓名)和 age(整数类型,用于存储学生的年龄)。在这个示例中,Data 是联合体名,它包含三个成员:i(整数类型)、f(单精度浮点数类型)和 str(字符数组类型)。结构体(struct)是一种用户自定义的数据类型,它允许将不同类型的数据项组合在一起,形成一个新的数据单元。联合体(Union),也被称为共用体,是一种特殊的数据类型,它允许在相同的内存位置存储不同的数据类型。
2025-03-28 21:22:48
398
原创 自定义函数
在C++中,自定义函数是一种非常重要的编程工具,它可以将一段特定功能的代码封装起来,提高代码的复用性、可读性和可维护性。通过自定义函数,可以将复杂的程序分解为多个小的、功能明确的模块,提高代码的可维护性和复用性。这个示例中,虽然在swap 函数内部交换了 a 和 b 的值,但由于传递的是a和b的值,所以并不会影响到 main 函数中的a和b的值。类似于传递变量的地址。调用函数时,需要提供函数所需的参数(如果有),并可以接收函数的返回值(如果有)。函数名:是函数的标识符,用于在代码中调用该函数。
2025-03-28 21:22:16
327
原创 【二维数组】与【多维数组】
这里只初始化了全部12个元素的六个元素,其余六个matrix[0][2]、matrix[0][3]、matrix[1][1]、matrix[1][2]、matrix[1][3]、matrix[2][3]元素默认初始化成了0。二维数组可以看作是数组的数组,它有两个维度,通常用于表示表格或矩阵。多维数组是二维数组的扩展,可以有三个或更多的维度。在初始化时,可以省略行数,编译器会根据初始化列表的数量自动推断行数。多维数组的初始化、遍历方式与二维数组类似,只是需要更多的嵌套。colSize 是数组的列数。
2025-03-28 21:21:14
124
原创 一维数组的了解
当完成第一趟排序时,数组中的最大的元素就会被排到数组的最后。我们用数据来演示一下,比如原来数组中的数据是 4 3 5 2 1,那么第一趟排序时,首先4和3比较,4大于3不满足升序规则,4和3交换位置,数据的数据变为:3 4 5 2 1;答案就是:最后一个元素向后移动一个位置,倒数第二个元素“挪”到原来倒数第一个元素所在的位置,倒数第三个元素“挪”到原来倒数第二个数据所在的位置,以此类推,直到把要插入数据的位置空出来为止。数组是由连续的内存位置组成的,最低的地址对应第一个元素,最高的地址对应最后一个元素。
2025-03-28 21:20:28
700
原创 循环的嵌套
外层循环可以用来遍历每个班级,内层循环用来遍历每个班级中的学生。然而在某些特定的场景中,无法确定循环的具体次数,这个时候就更适合用while语句。注意:for与while两种循环没有好坏之分,看具体的应用场景,而且可以相互的替代和转换。我们可以用循环嵌套来打印出每个月的日期。外层循环遍历月份,内层循环遍历每个月的日期。外层for循环控制变量i从0到2变化,每一次外层循环执行时,内层for循环的控制变量j都会从0到1完整地循环一次。图形的特点:一共n行,每行星号的数量等于行的序号,也就是说第i行有i个星号。
2025-03-28 21:14:49
240
原创 循环和选择语句的应用
一开始的时候,变量i的值被初始化为1,然后判断i<=10是否成立,然后执行循环体中的代码(也就是“{}”包含的所有代码),无论循环体中的代码有多少,在这次循环的过程中,变量i的值保持1;然后变量i增加到2,经过条件判断开始第二次循环,这这次循环中,变量i的值保持2……爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。在 for 循环中,通常会使用一个变量来控制循环的执行,这个变量被称为循环变量。
2025-03-28 21:14:03
324
原创 字符型数据
负责发送消息的把秘密文件撕成两部分,有单词的部分写上自己的名字。然后把有单词和自己名字的纸片还给老师,把有数字的纸片送给负责接收数据的同学。因为计算机只能看懂数字,所以ASCII是一个非常重要的规则,它让计算机能够读懂我们的文字。在ASCII中,大写字母’A’的编号(我们称之为ASCII码)为65,大写字母’B’的ASCII码为66,其余的以此类推……当然存储的是字符’A’的ASCII——65。小写字母’a’的ASCII是97,’b’是98……数字’0’的ASCII是48,’1’是49……
2025-03-28 21:13:31
201
原创 浮点型变量
从程序的逻辑上看,if语句中的条件是成立的,因此程序应该输出”Yes”。而1.1这个数据默认是双精度浮点型,因此只要把h的定义类型改为double,程序就会输出”Yes”。因此,当用一个浮点型的(常)变量对一个整型变量赋值时,浮点型变量的小数部分会被直接截断(不进行四舍五入操作),只把整数部分赋值给整型变量。但最正确的比较浮点型数据是否相等的方法应该是设定一个阈值(epsilon),只要两个数据的差值小于这个阈值就认为是相同的数据。即便,浮点型数据的小数部分是零,浮点型的(常)变量都不能参与取余运算。
2025-03-28 21:12:45
358
原创 循环的初识
在C++中,通常在这里写一个条件表达式,比如i <10,表示只要计数器变量i小于10,就要继续跑(继续循环)。在C++中,通常设置一个计数器变量,比如int i =0,i用来表示跑完了几圈,i=0说明你还没开始跑。在这个例子中,你可以想象成你每跑完一圈,都会按一下手腕上的计数器,告诉自己已经完成了第几圈。在C++中,我们通常在这里更新计数器变量,比如i++,表示每完成一次循环,计数器变量i就增加1。部分是你在跑每一圈时要做的事情。在编程中,我们通常在这里写需要重复执行的代码,比如打印出当前跑的是第几圈。
2025-03-27 20:58:17
372
原创 让计算机学会深入思考
闰年可以分为两种,一种是普通闰年,就是公历年份是4的倍数,且不是100的倍数的,为普通闰年(如2004年、2020年等);“逻辑非”运算其实是把bool类型的变量当做一个灯的开关:如果灯是开(true)着的,你按一下开关(逻辑非操作)灯就关(false)了;相反,如果等原来是关(false)着的,你按一下开关(逻辑非操作)灯就开(true)了。只有当它两边的值都为 true 的时候,整个表达式的结果才是 true,其余情况的结果都是false。只有它两边的值都为false,整个表达式的结果才为false;
2025-03-27 20:57:08
345
原创 让计算机学会自己思考
甲乙两个人在公园相遇,甲说我今年n岁了(n是一个两位的整数,个位和十位不相等),乙说,太巧了,你的年龄倒过来,就是我的年龄,请问两个人谁的年龄更大, 请输出那个更大的年龄?从键盘读入一个三位整数,判断这个三位整数是否是对称数(对称数指的是,这个数正过来和倒过来是同一个数,比如:121、686、808等数都是对称数),如果是对称数,则输出“Y”,否则输出“N”。在编程中,这种结构非常常见,因为它允许我们根据不同的条件执行不同的代码块,从而实现更复杂和灵活的逻辑。有的时候else部分不是必须的。
2025-03-27 20:56:17
400
原创 数据存储—变量2
我们可以把变量看做装了水的瓶子,那这个问题就转换成如何交换两个瓶子里的水。最后,借来瓶子中的水倒入第二个瓶子中(还有别忘了把瓶子还给你的朋友)。因为我们是十进制的整数n,所以除以10的余数就是个位,商就是去掉个位以后的数值。另外这段代码直接修改了n的值,如果后面还需要用到n的值那么显然是不恰当的。123%10结果是3, 123/10的结果是12,即去掉个位以后的值。系统会用a的值赋为变量c赋值,这个过程中变量a的值是不会改变的。对于int类型变量有个非常特别的性质:当两个整数做除法的时候得到的结果是商。
2025-03-27 20:55:26
190
原创 数据存储—变量
不同瓶子之间的形状和材质各不相同,有的适合装水,有的适合装油,有的适合装醋,所有可以把这些瓶子分成不同的种类,即瓶子的“类型”不同。比如能存储整数的变量是整数类型,简称“整型”,能存储字母的变量是字符类型。当然,在生活中为了防止错拿调料瓶,比如放陈醋和酱油的瓶子很容易被混淆,我们还会为每个瓶子都贴上一个标签,比如“陈醋”、“酱油”、“色拉油”等等。在C++中也是如此,你想存储一个数据,你首先要有一个变量,而这个变量可不会凭空出现,你必须明确的向计算机系统表达你的需求:“计算机我需要一个瓶子!
2025-03-27 20:54:36
412
原创 教会计算机说第一句话——框架
第02行代码是为了简化代码的书写,这有点像我们约定了一个默认的范围,比如中午的时候你约同学去食堂一起吃饭,你会说:“我们一起去食堂吃饭吧!”,这里说的食堂,默认指的是学校的食堂。无论程序有多少行,都必须从05行的“{”开始执行,到第08行的return语句结束。cout是一个非常重要的内容,如果 应用的好可以实现非常强大的功能。下面是一些练习题,对于初学者为了快速上手并记住框架的代码,请不要复制框架,每次做题的时候都重新写一遍框架。上面程序的第01行就是告诉计算机:我要把所有的工具一个不落的。
2025-03-27 20:53:40
212
原创 1107: 四舍五入
/ 将cnt加上0.5后转换为整数类型。// 输出四舍五入后的整数部分。输入一个浮点数,输出其整数部分(要求四舍五入)。四舍五入后的整数部分。
2025-03-27 20:41:00
176
原创 1094: 【基础题】最小公倍数
if (cnt % a == 0 && cnt % b == 0) { // 检查cnt是否能同时被a和b整除。// 初始化cnt为1,用于寻找最小公倍数。while (1) { // 创建一个无限循环,直到找到最小公倍数。// 如果不满足条件,将cnt增加1。输入任意的自然数A, B, 求A , B的最小公倍数。两个自然数A、B,不超过32767。
2025-03-27 20:31:38
201
原创 【基础循环】位数(digit)
输入一个不超过109的正整数,输出它的位数。例如12735的位数是5。请不要使用任何数学函数,只用四则运算和循环语句实现。一个正整数n,n<=109。
2025-03-27 20:20:30
224
原创 1242: 二维数组输出(2)
输入一个整数N,输出一个N行N列的二维矩阵,矩阵中的元素按列用1——N*N顺序填充。输出N行N列的矩阵,元素之间用一个空格隔开,行末不要有多余的空格。// 创建一个N x N的二维数组。一个整数N(N<=10)
2025-03-23 17:03:51
493
原创 1206: 【数组】数组倒序
提示:本题结果操作与教材例题5.1一样,我们目前是练习数组基本操作,希望大家能按照分析中方法将数组元素倒序再输出,不要直接逆序输出。【分析】A[1]←→A[N] A[2] ←→A[N-1]……A[I] ←→A[J];i 从1开始,每交换1次,i 加1。直到 i = N DIV 2;// 读取到换行符为止。一行,n个用空格分隔的整数,1≤n≤100。将一个数组中的所有元素倒序存放,然后输出。按输入时的逆序输出n个整数。// 输出倒序后的数组元素。// 倒序交换数组元素。
2025-03-22 21:06:09
181
原创 1069: 【入门】宇航员选拔
宇航局来到某部队,想从该部队挑选身体好的战士进行航空航天的培训和考核,挑选未来的宇航员。宇航局在身体素质方面定了3个基本的标准:身高在165厘米~185厘米之间,体重在50公斤~80公斤之间,年龄在16~19周岁(所有数据都包含边界值,也就是身高包含165厘米和185厘米,体重和年龄以此类推)。现从键盘读入一位战士的年龄、身高、体重数据(都是整数),请问该战士是否符合宇航局定的基本标准,如果符合,请输出"Y",如果不符合,请输出"N"。读入三个整数,分别代表一位战士的年龄、体重、身高数据。
2025-03-22 21:01:43
212
原创 1099: 【入门】A+B 输入输出练习I
你的任务是计算a+b。这是为了acm初学者专门设计的题目。你肯定发现还有其他题目跟这道题的标题类似,这些问题也都是专门为初学者提供的。输入两个数,回车后输出结果,然后再输入一对,回车再输出结果。输入包含一系列的a和b对,通过空格隔开。对于每次输入的每对a和b,你需要依次输出a、b的和。
2025-03-22 21:00:41
138
原创 【动态规划】1781: 数字金字塔
观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。// 动态规划数组,初始化为pyramid的最后一行。第一个行包含R(1≤ R≤1000),表示行的数目。// 从倒数第二行开始向上计算最大路径和。后面每行为这个数字金字塔特定行包含的整数。所有的被供应的整数是非负的且不大于100。单独的一行,包含那个可能得到的最大的和。
2025-03-22 20:54:25
304
原创 【字符串】1354: 【入门】统计大写英文字母的个数
算算以‘.’结束的一串字符中含有多少个大写的英文字母。输出一行,即这串字符中大写字母的个数。输入一串字符,以.结束。
2025-03-22 14:41:30
154
原创 【字符串】1357: 【入门】判断是否构成回文
输入一串字符,字符个数不超过100,且以"."结束。判断它们是否构成回文。输出只有一行.TRUE 或者FALSE。输入只有一行,包括一串字符.
2025-03-22 14:39:48
155
原创 1141: 【入门】求车速
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称 数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上 出现了一个新的对称数。问该车的速度是多少?输出两行,第一行是车速,第二行是新的里程数(两个都是整数)
2025-03-22 14:37:16
91
原创 1139: 【入门】求出100至999范围内的所有水仙花数
所谓水仙花数,就是指各位数字立方之和等于该数的数;a^3称为a的立方,即等于a×a×a的值。例如:因为153=1^3+5^3+3^3,所以153是一个水仙花数。若干行,每行一个整数,表示该范围内的所有水仙花数。按从小到大的顺序输出。
2025-03-22 14:35:00
99
原创 【回溯算法】1888: 【搜索基础】部落卫队
原始部落byteland中的居民们为了争夺有限的资源,经常发生冲突。几乎每个居民都有他的仇敌。部 落酋长为了组织一支保卫部落的队伍,希望从部落的居民中选出最多的居民入伍,并保证队伍中任何2 个 人都不是仇敌。第一行2个正整数n和m,表示n个人,m个仇敌关系,接下来m行,每行2个正整数u和v,表示u和v是仇敌(人编号1..n)【编程任务】 给定byteland部落中居民间的仇敌关系,编程计算组成部落卫队的最佳方案。第一行是最多的人数,第二行是队伍的组成Xi,0表示第i个人不入伍,1表示入伍。
2025-03-22 14:28:41
385
原创 【一维数组】1238: 数组逆序重存放
输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。
2025-03-22 14:13:33
121
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人