- 博客(42)
- 收藏
- 关注
原创 【卡码网C++基础课 21.图形的面积】
在对象中,总有一些操作是重复的,比如说Person类具有姓名、身高、年龄等特征,并具有一些行走、吃饭、睡觉的方法,而我们要实现一个Teacher类,Teacher首先也是一个人,他也具备人的特征和方法,那我们是不是也应该用代码去实现这些特征和方法呢,这就势必会产生一些重复的代码。这样在计算机世界,一个“人”的概念就建立起来了,但这里的Person类只是个“模具”,空有概念,而无法表示具体的某一个人,只有创造一个类的实例(也就是我们说的对象),比如"张三,18, 男", “李明、20,男”,才能真正的使用。
2024-09-09 17:29:14
1226
1
原创 【卡码网C++基础课 20.排队取奶茶】
队列已经构建完毕,接下来需要接收数字m和m个整数的输入,表示取奶茶的操作,如果数字为1,表示有人取走了奶茶,即出队操作,如果数字为2,表示有人新加入了奶茶队列,即入队操作,这种“如果”的条件,需要使用到if-else结构。创建一个队列和创建一个栈的写法是相似的,需要指定队列中元素的类型,不过这也意味着队列中的元素必须是相同的数据类型,下面的代码表示创建一个字符串类型的队列。如果是操作 2,那么该行有一个数字和一个字符串,第一个数字 2 表示有人加入了奶茶队列,第二个字符串代表新加入的奶茶队列的人。
2024-09-06 20:12:08
941
原创 【卡码网C++基础课 19.洗盘子】
栈这种结构只能在一侧(栈顶那一侧)进行插入和删除操作,而且是后进先出LIFO(后进入栈的元素离栈顶比较近,先出来),允许进行插入和删除的那一端是栈顶,与之对应的另一端是栈底, 如果一个栈不包含任何元素,这个栈被称为空栈。接下来接收m和m个整数的输入,表示对盘子的操作,如果数字为1,表示盘子被拿去清洗,即出栈操作,如果数字为2,表示有新的盘子加入到待清洗区域中,即入栈操作。如果是操作 2,那么该行有两个数字,第一个数字 2 表示有未洗的盘子加入,第二个数字代表未洗的盘子编号。假设你手里有一个盘子堆放区。
2024-09-06 17:15:32
1192
原创 【卡码网C++基础课 18.开房门】
我们常常把map称之为映射,就是将一个元素(通常称之为key键)与一个相对应的值(通常称之为value)关联起来,比如说一个学生的姓名(key)有与之对应的成绩(value),它们是一一对应的,就好像一把钥匙开一扇门,在map中键是唯一的,也只有一个唯一的确定的值。在C++中, map 提供了以下三种数据结构,其底层实现以及优劣如下表所示:map中的键是唯一的,但是multimap则没有此限制。
2024-09-06 11:29:57
2049
原创 【卡码网C++基础课 17.判断集合成员】
find() 方法用于查找特定元素是否存在于集合中,如果 find() 方法找到了要查找的元素,它会返回指向该元素的迭代器,如果未找到要查找的元素,它会返回一个指向集合的 end() 的迭代器,表示未找到。判断某个元素是否在集合中,需要使用到find()方法,如果找到了,返回指向元素的迭代器,如果不存在,则最终指向end()的迭代器,通过判断find()的返回结果可以判定元素是否在集合中。可以理解为,迭代器和下标运算符的作用一样,用来访问容器中的元素,并且迭代器可以从一个元素移动到另外一个元素。
2024-09-02 20:46:19
909
原创 【卡码网C++基础课 16.出现频率最高的字母】
只需要先初始化最大值,然后逐一比对字符出现的频次和当前最大值的大小,如果当前字符出现的频次大于最大值,则更新最大值为当前字符出现的频次,这样完整遍历一遍后,就能找到出现频次最大的字符。由于输入的全都是小写字母,小写字母只有26个,那我们定义一个长度为26的数组即可,字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下标0,相应的字符z映射为下标25。给定一个只包含小写字母的字符串,统计字符串中每个字母出现的频率,并找出出现频率最高的字母,如果最高频率的字母有多个,输出字典序靠前的那个字母。
2024-09-02 17:59:58
688
1
原创 【卡码网C++基础课 15.链表的基础操作3】
我们可以假设这样一个场景:在传递情报过程中,A的下线是B, 也就是A -> next = B, 现在我们要引入一个C充当A和B之间的中间人,A的下线是C, C的下线是B,我们可以直接将A的next指向C,即A -> next = C, 然后将C的next指向B, 但是B无法直接表示,之前是用A -> next来表示B的,现在A -> next已经指向C了,所以在操作之前,我们需要实现定义一个变量保存B,假设为tmp, 然后将C的next指针指向B即可。如果删除元素后链表的长度为0,则不打印链表。
2024-09-01 19:41:33
851
原创 【卡码网C++基础课 14.链表的基础操作2】
当while循环结束后,如果cur指向null,说明输入的m已经超出了链表的长度,如果cur还是指向dummyNode说明没有进入到while循环,也就是m=0,这两种情况都是m位置不合法的情况。3.在 main 函数中,创建一个包含一组整数数据的链表,然后输入 m,调用链表的方法输出第 m 个元素。构建一个单向链表,链表中包含一组整数数据,输出链表中的第 m 个元素(m 从 1 开始计数)。第一行包含两个整数 n 和 k,n 表示需要构建的链表的长度,k 代表输入的 m 的个数。测试数据输出占 k 行。
2024-09-01 11:41:48
624
原创 【卡码网C++基础课 13.链表的基础操作1】
传统的定义变量的方式只能使用一种数据类型,无法处理链表这种既包含数据域名、又包含指针域的复合结构,这就需要使用到struct结构体,结构体是一种用户自定义的数据类型,比如想要定义一个Person的结构体// Person结构体// 使用 数据类型 成员变量的形式来定义int age;// int类型的年龄// string类型的名字结构体可以组合多个不同类型的成员变量,成员变量可以是各种数据类型,包括整数、浮点数、字符串、其他结构体等,所以你可以根据需要定义自己的结构体来组织数据。
2024-08-26 21:48:49
834
原创 【卡码网C++基础课 12.位置互换】
接着,我们需要遍历字符串,并将当前字符和下一位字符两两交换,当完成第一位和第二位的交换之后,我们应该控制迭代的步数为2,执行第三位和第四位的交换。可以看到交换的操作是一直都有的,对于这个一直存在的操作,我相信大家一定能联想到上一节的函数,那我们就先来看看这个交换字符串的函数是怎么写的吧。奇偶位互换是指字符串的奇数位和偶数位相互交换位置,比如下面的字符串"0aa0", 前两位相互交换,后两位相互交换,返回的结果是a00a。再把之前倒入第三个杯子里的雪碧倒入第二个杯子中,这样第二个杯子装的是雪碧。
2024-08-24 11:24:19
433
原创 【卡码网C++基础课 11.句子缩写】
参数名称通常是用来描述参数的有意义的名称,可以在函数体内部使用,这里接收一个字符作为输入,所以形参列表类型为char, 参数名称可以用a表示, 引用传递&意味着函数可以修改传递给它的参数。如果后面还需要将小写字符转换成大写,那我们还需要再写一次,代码就会显得有些冗余,更致命的是,如果这是一段很长的代码,并且在多个地方应用,当我们有了新的需求,需要对这一段代码进行修改时,我们需要一处处的找出再修改,这种情况下我们可以使用第一节中提到的函数,将代码模块化,并在合适的地方重用,从而增加代码的复用性和可维护性。
2024-08-24 11:06:22
1227
原创 【卡码网C++基础课 10.平均绩点】
也就是说,我们可以采用这样一种思路,事先给每一行字符串一个“真的令牌”,字符串遍历处理过程中,如果有哪一行字符串中有{A, B, C, D, F}以及空格之外的字符,则把“真令牌”替换成“假令牌”,这样当走出循环之后再进行输出处理时,就会因为不认识这个“假令牌”而不进行输出。如果是A则转换成4分,B转换成3分,C转换成2分,D转换成1分,F转换成0分,如果输入的内容不在集合{A, B, C, D, F}中,则输出Unknown, 对用不同的情况需要使用不同的代码进行处理,可以借助if-else进行解决。
2024-08-23 17:03:00
1265
原创 【卡码网C++基础课 9.打印正方形】
上图中的数据就是一个二维数组,它是由行和列组成的表格状数据结构,可以理解为包含其他数组的数组,二维数组的元素可以通过两个索引来访问,一个索引表示行,另一个表示列, 比如arr[0][0] 表示第一行第一列的元素,值为1,arr[2][2] 表示第三行第三列的元素,值为13。题目要求我们只打印边界,也就是说对于边界的内容打印"*",非边界的内容打印空白,这种结构满足之前所讲的根据某个条件来选择不同的代码路径执行,需要使用到if-else。请注意,内部为空白,外部是由 “*” 字符组成的框。
2024-08-23 11:03:21
868
原创 【卡码网C++基础课 8.奇怪的信】
通过取余num % 10获取最后一位数字,%表示取模/取余运算,即一个整数除以另一个整数后的余数,最后一位是个位,无法被10整除,所以就成了余数,进而可以通过%取余运算取到。想要判定是否是偶数(即可以被2整除a % 2 == 0),可以使用if进行判断, 如果是偶数,则累加到result总和上。按照题目分析,我们需要使用取模运算和整数除法来获取每一位,直到n变为0。对于每组输入数据,输出一行,每组数据下方有一个空行。例如:5548,结果为12,等于 4 + 8。小明很苦恼,想请你帮忙解决这个问题。
2024-08-22 16:55:12
300
原创 【卡码网C++基础课 7.摆平积木】
一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。对于每一摞积木,如果当前摞积木的数量超过平均值,也就是当前摞积木数量 - 平均值 > 0, 则把超出平均值数量的积木移到不足平均值的那一摞,超过的数量表示需要挪动的次数。第一步:我们需要数清每一摞积木的数量,把他们的总数相加,这样我们就知道积木的总数量,再把得到的结果除以n, 就得到了在高度相同的情况下,每一摞积木的块数。第二步:对于超过平均值的积木,计算当前的积木数量和平均值的差值,把多的积木数量移到缺少的部分,直到积木高度相同。
2024-08-22 16:18:00
493
原创 【卡码网C++基础课 6.数组的倒序与隔位输出】
表示一组数据可以用数组,在 C++ 中,数组是一种基础的数据结构,用来存储固定大小的相同类型元素的序列。⚠️ 因为要输入变量,才能确定数组的大小,属于不清楚元素的确切个数,理应使用vector,但这里我们为了展示数组操作,暂时这样演示,实际上int arr[n]这种操作是不被允许的,并且在编译器中可能会报错。题目的第二个要求是每隔一个元素输出其值,中间用空格分隔,只需要对数组从索引为0的位置进行遍历,每次递增2,中间输出空格,这样就能保证输出索引为0、2、4、……
2024-08-22 10:00:37
1258
原创 【卡码网C++基础课 5.A+B问题5】
但是题目要求每组数据内部的输出(也就是每行数据之间)是有空行的,但两组数据之间并没有空行,所以在每组数据的最后一行,也就是n被修改为0的时候,不需要输出空行。每行数据首先会输入一个整数m, 代表着这行数据有m个数据,所以需要提前定义变量m接收第一个整数,然后使用while循环来控制m个数据的输入和求和。接下来的情况就和A+B问题4类似,转换成m个数据的求和问题,需要定义变量sum指代数据总和,定义变量a指代输入的数据,然后遍历得到结果。对于每组输入,输出M个数的和,每组输出之间输出一个空行。
2024-08-21 19:48:12
342
原创 【卡码网C++基础课 4.A+B问题4】
除了=这种赋值运算符之外,我们经常会对某个值进行运算后,再把计算的结果赋给这个值,比如sum = sum + a, 将sum的值和a进行运算后,再赋值给sum, 此时我们可以使用复合赋值运算符+=在本题中,你需要计算若干个整数的和,每行第一个数n表示后面有n个数,后面的几个数是输入的整数,如果n为0时,结束输入。我们通常都使用sum += i的形式来书写代码,而且这种形式也常常用于其他算数运算符,比如-=、*=、/=、%=如果两个操作数都是整数,执行整数除法,结果也是整数(小数部分被舍去)。
2024-08-21 16:06:28
676
原创 【卡码网C++基础课 3.A+B问题3】
除了break之外,continue也可以用于控制跳出循环,同样的,它也只能出现在for、while和do while循环的内部,只不过它的用法是在执行过程中跳过当前循环迭代的剩余部分,然后继续下一次迭代, 通常用于在某个特定条件下,跳过某些特定的迭代操作,但仍然继续循环。所以想要判定a和b的结果是否“都”等于0,可以使用逻辑与,也就是a == 0 && b == 0, 将之作为if语句的条件。例如,表达式 (a > b) || (c > d) 只要 a > b 或 c > d 其中之一为真,结果就为真。
2024-08-21 15:28:26
1005
原创 【卡码网C++基础课 2.A+B问题2】
在上节中,我们提到了几种常见的数据类型,但是在某些情况下,可能会发生数据类型的转换,比如在while(条件判断)循环中,条件判断通常是一个布尔值,即true表示真,false表示假,但是假设我们给定的是一个整数类型的值,编译器会帮助我们进行数据类型转换,将之转换成布尔值,如果整数的值为0,则条件的值为false, 其他非0的数都会转换成true。现实中,我们想要把一件事情做n次,比如数n只羊,就是说第一只羊,第二只羊,第n只羊,这样数,那在编程中是同样的逻辑,只不过这次我们使用的是for循环。
2024-08-20 22:37:18
843
原创 【卡码网C++基础课 1.A+B问题1】
定义一个函数时,我们首先要在函数名之前放置一个关键字表示函数的返回类型,这个关键字代表的含义是函数执行完毕会返回什么类型的值,我们这里使用了int关键字,表示函数将返回一个整数类型的值(不带小数部分),比如我们在数学中使用的0、1、2就是整数。在后面,我们会定义很多个函数,为了区分这些函数,我们要给不同的函数起不同的函数名称,而且函数命名是有规范的,而这里由于是主函数,所以函数的名称为main,且不可更改。通常,会使用 std:: 的前缀,表示正在使用C++标准库中的内容。在每次循环中,会判断条件的真假。
2024-08-20 17:41:27
1267
原创 【卡码网Python基础课 21.图形的面积】
如果子类的对象调用一个方法,发现并没有提供这个方法,就会从当前对象的父类中寻找,如果父类中有则直接调用父类中的方法,如果还没有,就从父类的父类中寻找,就好像,当父亲和儿子都拥有一样东西,会优先使用自己的,如果发现自己没有,才会使用继承的方法。使用封装,我们隐藏了类的一些属性,具体的做法是使用getter方法获取属性,使用setter方法设置属性,如果希望属性是只读的,则可以直接去掉setter方法,如果希望属性不能被外部访问,则可以直接去掉getter方法。输入包括多行,每行包含一个图形的描述。
2024-08-19 22:16:03
1229
原创 【卡码网Python基础课 20.排队取奶茶】
队列已经构建完毕,接下来需要接收数字 m 和 m 个整数的输入,表示取奶茶的操作,如果数字为 1,表示有人取走了奶茶,即出队操作,如果数字为 2,表示有人新加入了奶茶队列,即入队操作,这种“如果”的条件,需要使用到if-else结构。队列,顾名思义,和排队的队列结构是类似的,在排队的过程中,想要加入队列,需要在队伍的最后一位(也被称为队尾)入队,想要离开队列,需要从队伍的第一位(也被称为队头)出队。输出只有一行,为下一个取奶茶的人。获取队列的长度,即队列中元素的数量,通常使用列表的len()函数来获取。
2024-08-19 16:23:37
1049
原创 【卡码网Python基础课 19.洗盘子】
栈这种结构只能在一侧(栈顶那一侧)进行插入和删除操作,而且是后进先出 LIFO(后进入栈的元素离栈顶比较近,先出来),允许进行插入和删除的那一端是栈顶,与之对应的另一端是栈底,如果一个栈不包含任何元素,这个栈被称为空栈。接下来接收 m 和 m 个整数的输入,表示对盘子的操作,如果数字为 1,表示盘子被拿去清洗,即出栈操作,如果数字为 2,表示有新的盘子加入到待清洗区域中,即入栈操作。如果是操作 2,那么该行有两个数字,第一个数字 2 表示有未洗的盘子加入,第二个数字代表未洗的盘子编号。
2024-08-18 20:39:43
1234
原创 【卡码网Python基础课 18.开房门】
我们常常把map称之为映射,就是将一个元素(通常称之为key键)与一个相对应的值(通常称之为value)关联起来,比如说一个学生的姓名(key)有与之对应的成绩(value),它们是一一对应的,就好像一把钥匙开一扇门,在map中键是唯一的,也只有一个唯一的确定的值。比如下面的图示:左边是 key, 每一个姓名都对应着一个 成绩 value。而在Python中,通常用**字典dict**实现了映射这种数据结构。"tom": 98,
2024-08-18 16:31:07
872
原创 【卡码网Python基础课 17.判断集合成员】
2.移除元素:使用remove()或者discard()方法可以从集合中移除指定元素, 它们之间的区别在于当移除一个集合中不存在的元素时,remove()会引起异常,而discard()不会。最后一行包含一个整数 n,表示需要进行判断的目标整数,可以使用in进行判断,如果在集合中,输出Yes, 如果不在集合中,输出No。类似于列表的读取,这里需要读取一行作为字符串,将之拆分成列表,并转为整数,最后使用set()转换成整数集合。集合最常见的用法是判断某个元素是否在集合中和去除集合中的重复元素。
2024-08-17 21:12:40
595
原创 【卡码网Python基础课 16.出现频率最高的字母】
这需要先初始化一个字符的最大出现频率,然后头开始遍历,逐一比对当前字符出现的频次和最大频率的大小,如果当前字符出现的频次大于最大值,则更新最大值为当前字符出现的频次,这样完整遍历一遍后,就能找到字符的最大出现频率。当循环结束后,已经找到出现频率最大字符的频次以及对应的索引i,将 'a’对应的 Unicode 码值 加上 索引值,就是出现频率最大的字符的 Unicode 码值,再经过chr()函数转换,就能得到最终的结果。如果多个键映射到相同的索引,它们都可以存储在这个位置的列表中。
2024-08-17 16:51:46
1012
原创 【卡码网Python基础课 15.链表的基础操作3】
我们可以假设这样一个场景:在传递情报过程中,A 的下线是 B , 也就是A.next = B, 现在我们要引入一个 C 充当 A 和 B 之间的中间人,新的关系是 A 的下线是 C , C 的下线是 B,我们可以直接将 C 的next指向 B,但是 B 无法直接表示,之前是用A.next来表示 B 的,即C.next = A.next, 然后再将 A 的next指向 C , 即A.next = C,这样就将新的关系构建完成了。每组第一行输出构建的链表,链表元素中用空格隔开,最后一个元素后没有空格。
2024-08-16 22:01:29
799
原创 【卡码网Python基础课 14.链表基础操作2】
上面的操作完成之后,链表就成功构建了,我们需要根据题目要求读取 k 个 m ,并输出这 k 个值, 如果输入的 m 是一个小于等于 0 的数或者 m 大于链表的长度,则无法找到第 m 个节点,判定 m 位置不合法,输入对应的语句。和上一节内容相似,依旧需要使用for 循环,迭代读取 n 个整数,然后使用之前定义的insert函数将新的链表节点插入到链表尾部,从而根据读入的数据构建一个完整的链表。然后我们需要读取 n 和 k,n 表示需要构建的链表的长度,k 代表输入的 m 的个数,并构建一个新的链表。
2024-08-15 20:14:17
549
原创 【卡码网Python基础课 13.链表的基础操作1】
那在 Python 语言中如何定义链表节点呢,由链表节点的概念我们可以知道,一个链表节点包含一个数据元素和一个指向下一个节点的指针,即包括一个数据字段和一个节点字段,初始化一个新节点,其next通常不存在,即一个空值,None 可以用于初始化或重置对象的属性,以表明属性当前为空或者没有设置,新创建的节点其 next 都为None# 定义链表节点类# init方法,初始化属性self.data = data # 存储节点的数据self.next = None # next指针初始化为None。
2024-08-14 22:42:37
1334
原创 【卡码网Python基础课 12.位置互换】
所以a, b = b,a这种操作实际上是将,b 和 a 的值构成一个元组 (b, a),然后使用元组解构(“拆包”)将这个元组中的值分别赋给 a 和 b,这样就完成了交换。接着,我们需要遍历字符列表,并将当前字符和下一位字符两两交换,当完成第一位和第二位的交换之后,我们应该控制迭代的步数为 2,执行第三位和第四位的交换。除了上面的操作外,元组还有一个“拆包”的功能,元组拆包是指将元组中的元素分别赋值给多个变量的过程,听起来很不知所云,但是示例却十分简单。输入的第一行是一个整数n,表示有测试数据。
2024-08-14 12:00:11
1012
原创 【卡码网Python基础课 11.句子缩写】
虽然上段代码能完成题目,但是在判定字符是否是小写形式的部分重复了一段。# 如果首字母是小写,转换成大写else:# 判定新单词的首字母是否是小写,小写则转换成大写else:如果后面还需要小写字符转换成大写字符,那么还需要再写,这种情况下可以自己创建函数(用户自定义函数),将代码模块化,并在合适的地方重用,从而增加代码的复用性和可维护性,下面我们就尝试写一个将小写字符转换成大写字符的函数。def 函数名(形参列表) : 函数体。
2024-08-13 22:00:35
859
原创 【卡码网Python基础课 10.平均绩点】
也就是说,我们可以采用这样一种思路,事先给每一行字符串一个“真的令牌”,字符串遍历处理过程中,如果有哪一行字符串中有{A, B, C, D, F}以及空格之外的字符,则把“真令牌”替换成“假令牌”,这样当走出循环之后再进行输出处理时,就会因为不认识这个“假令牌”而不进行输出。如果是A则转换成4分,B转换成3分,C转换成2分,D转换成1分,F转换成0分,如果输入的内容不在{A, B, C, D, F}中,则输出Unknown, 对用不同的情况需要使用不同的代码进行处理,可以借助if-else进行解决。
2024-08-11 21:09:54
795
原创 【卡码网Python基础课 9.打印正方形】
上图中的数据就是一个二维列表,它是由行和列组成的表格状数据结构,可以理解为包含其他列表的列表(列表的每一个元素都是列表),二维列表的元素可以通过两个索引来访问,一个索引表示行,另一个表示列, 比如matrix[0][0] 表示第一行第一列的元素,值为1,matrix[2][2] 表示第三行第三列的元素,值为13。题目要求我们模拟打印一个正方形的框,根据题目可以联想到我们需要使用循环嵌套来控制行和列的打印,并根据当前行和列的位置来决定打印 “*”(外部边界)还是空白(内部)。然后需要一个循环嵌套来控制打印。
2024-08-11 17:05:22
649
原创 【卡码网Python基础课 8.奇怪的信】
1.通过取余num % 10获取最后一位数字,%表示取模/取余运算,即一个整数除以另一个整数后的余数,最后一位是个位,无法被10整除,所以就成了余数,进而可以通过%取余运算取到。想要判定是否是偶数(即可以被2整除a % 2 == 0),可以使用 if 判断, 如果是偶数,则累加到 result 总和上。根据刚才的分析得知,需要使用循环来接收多组数据的输入,变量n表示输入的整数。按照题目分析,我们需要使用取模运算和整数除法来获取每一位,直到 n 变为0。对于每组输入数据,输出一行,每组数据下方有一个空行。
2024-08-11 16:18:02
407
原创 【卡码网Python基础课(7.摆平积木)】
一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。对于每一摞积木,如果当前摞积木的数量超过平均值,也就是当前摞积木数量 > 平均值, 则把超出平均值数量的积木移到不足平均值的那一摞,超过的数量表示需要挪动的次数。第一步:我们需要数清每一摞积木的数量,把他们的总数相加,这样我们就知道积木的总数量,再把得到的结果除以 n , 就得到了在高度相同的情况下,每一摞积木的块数。第二步:对于超过平均值的积木,计算当前的积木数量和平均值的差值,把多的积木数量移到缺少的部分,直到积木高度相同。
2024-08-11 11:27:41
449
原创 【卡码网Python基础课 6.数组的倒序与隔位输出】
在大多数编程语言中,都有数组的概念,但是在Python中,使用列表替换了数组,相比于数组,列表更加灵活,可以存储一系列有序的元素,可以包含不同类型的数据(如整数、字符串、甚至其他列表),并且支持添加、移除和其他操作。(4):下标访问: 数组中的元素通过下标(索引)进行访问,每个人都有一个学号,学号就是自己的座位,这个学号被称为索引,但是数组里的索引是从0开始的,也就是说,第一个元素的索引是0,第二个元素的索引是1,依次类推。1.列表(List):列表是可变的序列,允许添加、删除或更改其中的元素。
2024-08-11 11:07:40
2278
原创 【卡码网Python基础课(A+B 问题5)】
每组数据之间没有空行,其实表达的意思是在处理每一组数据内部时,每行数据都要输出一个空行,但是对于最后一行数据,不需要输出空行,这涉及到判断当前行数据是否是最后一行。但是题目要求每组数据内部的输出(也就是每行数据之间)是有空行的,但两组数据之间并没有空行,所以在每组数据的最后一行,也就是 i = N - 1的时候,不需要输出空行。输入描述:输入的第一行为一个整数N,接下来N行每行先输入一个整数M,然后在同一行内输入M个整数。输出描述:对于每组输入,输出M个数的和,每组输出之间输出一个空行。
2024-08-07 22:41:45
426
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人