- 博客(18)
- 收藏
- 关注
原创 PTA-数组循环左移
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a 0 a 1 ⋯a n−1 )变换为(a m ⋯a n−1 a 0 a 1 ⋯a m−1 )(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式: 输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。
2025-05-24 23:36:23
318
原创 PTA-输出前 n 个Fibonacci数
本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如:1,1,2,3,5,8,13,...。在循环中,计算下一项c=a+b,更新a和b的值(a=b,b=c),并且在输出c时判断是否已经输出了5个数字,如果是则换行。定义变量a=1和b=1来表示Fibonacci数列的前两项,变量c用于存储计算得到的下一项,变量d=2用于计数。为方便,这里提供代码可以复制。
2025-05-20 19:19:59
183
原创 PTA-输出GPLT
按照GPLT的顺序输出字符。准确统计输入字符串中'G'、'P'、'L'、'T'(不区分大小写)的数量。5、在输出字符时,按照GPLT的顺序循环检查每种字符的数量,只要数量大于0就输出该字符并减少其数量,这样就可以保证按照要求的顺序输出所有的'G'、'P'、'L'、'T'字符。3、这个过程会一直持续,直到所有这四种字符的数量总和为0,也就是所有的'G'、'P'、'L'、'T'字符都被输出。1、需要统计输入字符串中'G'、'P'、'L'、'T'(不区分大小写)这四种字符各自的数量。
2025-05-13 23:50:48
241
原创 PTA-素数求和
思路:对于求素数,我们自然而然地考虑到,只要这个数不断地除比1大但是比自身小 1 的数,那么,如果直到最后,这个数都无法整除所有遍历的数,这个数就是素数。这个操作也就是取余操作,例如,输入 n ,那么用 n 除 2 直到(n-1),只要得到的数字不是 0 ,那么得到的数字就是素数。现在开始写代码,首先,判断该数是否大于等于1 ,如果不是,那么这个数一定不是素数,程序结束————因为素数是从2开始的。输入两个正整数m和n(1<=m<n<=500)统计并输出m和n之间的素数个数以及这些素数的和。
2025-05-10 23:27:09
287
原创 打印九九乘法表
初始化部分通常用来设置循环开始时的变量初始值,比如int i = 1;条件判断部分决定循环什么时候停止,例如i <= n。迭代部分是每次循环结束后对变量进行的操作,像i++表示每次循环后i的值加1。j++)循环用来控制列数,对于每一行i,j从1到i变化,这样就可以保证每一行的乘法式子数量是正确的。外层的for (i = 1;i++)循环用来控制乘法表的行数,i从1到9变化,每一次i的变化代表一行。在C语言中,for循环的基本形式是for(初始化;我们需要两个for循环,一个用于控制行数,一个用于控制列数。
2025-05-08 21:26:39
200
原创 PTA-H讨论组
要求进行分工,使由三名或三名以上学生组成的小组数量达到最大,组成的小组数量达到最大就是尽可能的每一组人数最少,题目要求:三名或三名以上学生组成的小组数量达到最大,那就是尽可能都是3人一组,剩下的再和其他组别凑在一起,很容易想到直接使用除法进行运算,不管余数就可以了。小Z 认为由两个或更少的学生组成的小组无法进行有效的讨论,因此你希望尽可能多地由三个或更多的学生组成小组。思路:对于输入的学生人数n,我们可以用n除以3,得到的商就是能组成的三人小组的数量。输出一个正整数,表示至多能分成的三个人以上小组的个数。
2025-05-06 11:39:31
245
原创 PTA-英文单词排序
在每一轮i中,需要比较n - i个元素对,所以循环的终止条件是j<=n-i-1。如果str[j]的长度大于str[j+1]的长度,说明这两个单词的顺序不符合要求(按照长度从小到大排序)。总共需要进行n - 1轮排序,因为在每一轮排序中,都会将当前未排序部分的元素“冒泡”到正确的位置。输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。
2025-05-02 21:55:15
335
原创 PTA-打印杨辉三角
这行代码表达是解答以上题目的关键步骤,理解了这一行代码,题目的解答进度就快达到一半了,通过这一处关键代码,我们可以发现,它的主体内容需要用到两层循环进行控制。举个例子,例如,第n行的第m个元素大小如何计算?数字占4位,这个很简单,输出的时候%d改为%nd(此处的n指的是数字占的位数,需写具体,无要求可省略。首先,分析题目容易发现,题目要求打印杨辉三角,要求每个数字占固定4位。杨辉三角的特点是每行的第一个和最后一个元素都是1,其他元素等于它上方两数之和。其次是杨辉三角形,这里是百度百科对杨辉三角的介绍。
2025-04-29 20:18:26
342
原创 PTA-打印沙漏
对于这个问题,思路是先计算上半部分的*数和行数,容易发现,(n+1)/2得到的n1就是上半部分的沙漏的总符号数,再利用while循环,计算上半部分最多可以有多少行,因为上半部分的*数为(1+(2*row-1))*row/2,下半部分只比上半部分少1,所以是(1+(2*row-1))*row/2-1。经过测试发现,代码有一些问题,比如,当n=2时,输出的row=1?首先,我们考虑如果给了n个*,那么打印的沙漏应该有多少行?现在,我们先解决第一个问题,给n个*,打印的沙漏最多可以是几行?
2025-04-24 23:20:01
219
原创 实验 1 操作系统的引导
setup.s功能实现:从引导程序bootsect.s中加载setup.s并执行。改写 bootsect.s 主要完成如下功能: 1. bootsect.s 能在屏幕上打印一段提示信息“XXX is booting...”,其中 XXX 是你给 自己的操作系统起的名字,例如 LZJos、Sunix 等(可以上论坛上秀秀谁的 OS。改写 setup.s 主要完成如下功能: 1. bootsect.s 能完成 setup.s 的载入,并跳转到 setup.s 开始地址执行。
2025-04-22 22:07:46
310
原创 PTA-猜数字
这里,min的值可以随意取,尽量取大一点,保证后续能在temp找到一个大于min的值就够了,由于猜的是 100 以内的数,所以这边直接取值为100。接下来,再用if判断语句判断人们所猜的数字中,哪一个是离答案差距最小的,其中需要格外注意的是。这道题目需要定义一个结构体,用于存储每个人所猜的数字和各自的名字,接着计算所猜数字平均值的一半,再用一个循环来判断是谁猜的数字和所求值更加接近,最后进行输出。题目保证赢家是唯一的。利用循环进行输入,并且,利用sum来求所有猜中数字的和,以便后续求平均值的一半。
2025-04-19 16:00:07
353
原创 PTA-删除重复字符
我们可以考虑将整个解题过程拆分为三个主要步骤:读取输入字符串、去除字符串中的重复字符、对去重后的字符进行排序并输出。(这些已经在步骤2中实现了:排序完成后,再遍历字符串,去除重复字符并存储到新的字符串中),最后输出新字符串。可以先对字符串进行排序,然后判断字符串的字符是否重复,只保留首次出现的字符,这边通过标记来判断字符是否应该去除或者保留。本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。输出去重排序后的结果字符串。1. 读取输入字符串。3. 排序并输出结果。
2025-04-16 11:34:14
324
原创 PTA-特殊a串数列求和
通过观察可以发现,后一项的值等于前一项的值乘以 10 再加上 a。题目要求计算的是一个特殊数列的和,这个数列的每一项是由重复的数字 a 组成,且总数为 n。例如,当 a = 2 且 n = 3 时,数列就是 2 + 22 + 222。核心代码:计算每一项的值 b ,在循环中累加得到 sum,这里通过各个项数之间的规律不断循环,每一项是前一项的10倍在加上原来的值 a ,继续在循环中累加得到最终值 sum .给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa+⋯+aa⋯a(n个a)之和。
2025-04-14 17:47:29
179
原创 PTA-猴子选大王
总结:本题的难点在于找到猴王,这里巧妙地利用数组存储猴子编号,利用置0来表示猴子退出猴王竞选,用step记录循环报数,将猴子的编号逢3置0,用index不断地更新索引号码,不断地循环,直到最后,只留下一个没有被置0的数组(即sum=1),其中所保存的猴子编号也就是所选出的猴王了。4、接下来将代码组合在一起,稍微修改,即可得到完整代码,其中,n为猴子总数,数组monkeys[]里面存储的是猴子的编号,sum是未退出猴王竞选的猴子总数,step是猴子报的数,逢3置0,index是猴子的循环索引。
2025-04-12 21:44:55
350
原创 PTA-找出总分最高的学生
题目的思路总体比较简单,只是相加取最大值,但是需要注意一些小细节,例如char类型(字符串)的使用,字符串的输入、输出都需要用s%。给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。由于总成绩不是直接输入而是需要通过输入的值进行相加运算,所以,我们直接在每一次的输入后面进行计算,同时,记录目前总分最大的索引i值,方便后续的输出环节进行。接下来是输入和输出环节了,
2025-04-09 13:00:00
227
原创 PTA-换硬币
自然而然的,这题我们考虑先换5分硬币,再换2分的硬币,最后再换一份的硬币。这是第一次尝试,试着使用了双层循环来实现,但是结果错误,可以发现第二行的fen1为0,这是一次错误的换硬币方法,至少需要1枚1fen的硬币,因为在内层循环没有控制fen1>0,添加一个if语句或者再嵌套一层循环即可实现。(n-3)是哪里来的?题意要求“每种硬币至少有一枚”,所以,这里的3实际上是确保至少一枚2分硬币和一枚1分硬币,但实际上在写代码时直接使用n/5不使用(n-3)也是可以的,使用(n-3)仅仅只是为了提高代码运行速度。
2025-04-08 21:49:57
195
原创 PTA-双十一购物
然而,并不是所有的物品都包邮哦,低于9.9元的是需要额外收取邮费的,不过双十一期间邮费也给广大客户搞活动,不管你邮寄到哪里,一件物品的邮费就要你0.99元。这个题目比较简单,主要考察关于浮点数、小数的输入输出和关于位数的控制,用几个if语句,给价格低于9.9的加上邮费0.99就可以解决了,这里直接记录答案吧。哪怕只是你买了9.9元的物品,商家也给你直接邮寄到家—包邮!输入三个实数,分别代表Jeremy双十一期间买的三件物品的价钱。输出用%.nf控制位数,其中n为输出的小数位数。输出结果后输出回车换行。
2025-04-05 15:03:06
290
原创 PTA-特殊数列求和
题目:用户输入一个小于10的正整数,求1 + 12 + 123 + 1234+ ……的前n项的和,当输入大于或等于10时,输出 “data error。首先,我们需要用循环迭代出1,12,123。再将各项代码累加即可得到答案,代码如下:。那么,通过pow函数就可以求得答案了。那么,先累计求1,11,111。累加即可得到各项数字,代码如下:!在PTA测试了以下,答案正确。
2025-04-02 19:36:24
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人