程序设计入门-C语言(浙大 翁恺)课程随记
记录该课程相关的MOOC习题,课上代码,PTA等(2023年春)
MoonTiana
这个作者很懒,什么都没留下…
展开
-
MOOC-W8-GPS数据处理
对于是否是有效信息的问题,可以通过检验标签来判断,有效的信息要满足字段0,字段2,校验和的3个要求,故可通过if条件判断使得满足时各自加1,这样当检验标签为3时,可进行字段1中时间的转化,用同一字符串记录要输出的时间,这样每获得一次GPS有效信息就会刷新一次,最终输出的一定是最后一条有效信息对应的时间;由于异或的计算范围是'$'和'*'之间,故考虑在'*'前的字符用%c读取,并作为一个循环,循环内进行异或计算、以及字段0,1,2的储存,字段的分割应用ch==','判断,并用变量cnt进行记录字段位置;原创 2023-04-14 21:30:41 · 129 阅读 · 0 评论 -
MOOC-W8-单词长度
由于题目要求中由空格分割单词,故可通过scanf以字符串读入单词,这样读到空格时可自动进行分割,并用strlen计算长度,并伴随着循环记录共输入多少个单词,但读入字符串的最后一个非 ’\0‘字符为'.'时,单词长度减1,跳出循环;需要注意:’.‘前有无数个相邻空格时,如果单词长度-1会输出0,但实际上这种情况我们并不应该把其视作一个单词,即希望不输出,故在满足读到'.'且strlen为1时,将记录单词数量的变量减1;在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。原创 2023-04-14 17:17:57 · 71 阅读 · 0 评论 -
MOOC-W7-鞍点
再利用等大的初始化为0的二维数组记录最大最小值的位置(有最大/小值对应位置元素加1),利用一个双重循环按行找最大值,按列找最小值,需要注意的是一行中最大值的位置/一列中最小值的位置可能不止一个(输入数据未说明是不同的),故需进行遍历找出与每行/列最大/小值相同的值并在记录状态数组的对应位置上的元素进行加1;输出时循环遍历二维数组,鞍点既满足一行的最大值又满足一列的最小值,对应状态应该为2,查找等于2的元素位置,输出,如果没有查询到则输出NO。时间限制:500ms内存限制:32000kb。原创 2023-04-13 17:45:02 · 110 阅读 · 0 评论 -
MOOC-W7-多项式加法
③遍历输出的思路分为0,仅有0次幂,有非0次幂的情况,在非0次幂时由于第一项前无正号进行了单独讨论,对于系数为1的情况进行了单独讨论,也区分了幂次为1的情况的输出。②由于最终实现的是多项式加和,输入时不需要分清两个多项式的起始,同意进行幂次从大到小排序即可,注意系数需要一起移动,后续仍然使用搜索进行相同幂次的系数相加。④遍历输出:需要考虑正负号、系数为1时不输出1,幂次为1时也只输出“%dx,幂次为0系数正常输出,某个幂的系数为0则不需要有那项,但需要注意只有0的情况。程序要处理的幂最大为100。原创 2023-04-13 15:57:15 · 279 阅读 · 0 评论 -
MOOC-eg-选择排序
将无序的数组按照大小顺序有序排列叫做排序。MOOC第七章中排序部分的归纳。原创 2023-04-12 22:34:12 · 46 阅读 · 0 评论 -
MOOC-eg-搜索
二、线性搜索的应用:美元的美分具有对应的英语名称,输入美分数值输出对应的英文名称,这也体现了搜索的思想(在数据结构中的散列表很适合用于做这样的事,但还没学到)1.考虑两个数组,在对应的位置上有对应的值,在数字数组搜索数字,找到对应的位置,则再英文数组中找对应位置内的元素。但使用两个数组对于cache不友好,我们更希望能把面额和对应的英文名称放在一起。2.利用struct{}结构能把面额和对应的英文名称放在一起。一、线性搜索:给定数组,找出某个数在该数组中的位置。MOOC中第七章涉及到的搜索内容初步总结。原创 2023-04-12 21:48:53 · 54 阅读 · 0 评论 -
MOOC-eg-素数判断及构造素数表
关于素数可能有许多不同的题目要求,例如输入数据单纯的进行素数判断,又或者进行给定范围内的素数加和,又或者要求制作素数表,等等。2.方案二:构造n以内(不含n)的素数表,可:①令x=2;该方法也需要进行遍历,但遍历的是小于x的素数,故需要知晓小于输入的素数表,考虑到最终要求是构造素数表,这种函数也是方便的。由于前三种素数判断函数的参数和第四种素数判断函数的参数不同,故在声明时是不同的,在调用函数时也需要注意。4. 另一种方案:判断能否被已知的且小于x的素数所整除,若不能,则x为素数。原创 2023-04-12 19:26:02 · 195 阅读 · 0 评论 -
MOOC-第一次单元测验
中,由于 (x==1)为假,但对逻辑或运算需要都假才是假,需要对(y=2)执行判断是否为真,此表达式结果为2,不为零,是真,故z=1,y=2;时,由于 (x==0)为真,故 && 与运算需要对(y=2)执行判断是否为真,此表达式结果为2,不为零,故z=1,y=2;中发生了短路,由于 (x==1)为假,故 && 与运算同样为假,程序不再执行后面的(y=2),故此时y=0;整个逗号表达式的值是表达式2的值。故i有-3,-2,-1,0,1,2,3共7种可能性。经过i--后,i的值变为5,但i--的结果仍为6。原创 2023-04-12 14:12:03 · 82 阅读 · 0 评论 -
MOOC-eg-tic-tac-toe游戏
也可以再设置两个变量判断是否达成获胜条件,通过双重循环同时完成行和列的检查。程序判断是否有获胜方,输出表示获胜一方的字符X或O,无人获胜输出None。读入3*3矩阵,为1表示对应位置为X,为0表示对应位置为O。tic-tac-toe游戏。MOOC学习过程中的例子。原创 2023-04-12 12:25:26 · 140 阅读 · 0 评论 -
MOOC-W6-高精度小数
(0,1)之间的任何浮点数都可以表达为两个正整数的商,为了表达这样两个数的商,可以将相除的结果以多个整数来表示,每个整数表示结果的一位。即商的第一位用一个整数来表示,第二位用另一个整数来表示,以此类推,就可以输出一个高精度的除法结果了。如果a/b是一个有限不循环小数,则输出完所有的有效位就可以了,不需要再输出后面的0来凑满200位。如16/19的结果0.8421052631...就可以依次输出8、4、2、1、0、5、2、6、3、1...。现在,请写一个程序,输入一个分数,计算出它的小数形式。原创 2023-04-12 12:08:48 · 80 阅读 · 0 评论 -
MOOC-W5-念整数
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。一个整数,范围是[-100000,100000]。时间限制:500ms内存限制:32000kb。原创 2023-04-10 21:55:05 · 105 阅读 · 0 评论 -
MOOC-W5-素数和
现在,给定两个整数n和m,0原创 2023-04-10 21:05:39 · 118 阅读 · 0 评论 -
MOOC-W3-分队列
班级第一次列队,通常老师会让同学按身高排成一列,然后1、2报数,喊到1的同学向前一 步,就这样,队伍就变成两列了。假设现在一个班级有n个同学,并且他们已经按身高排成 了一列,同学按身高从1到n编号,你能告诉我最后哪些编号的同学站在了第一列么?按顺序输出所有在第一列的同学对应的编号,每两个编号之间用一个空格隔开,最后一个编号后面没有空格。时间限制:500ms内存限制:32000kb。输入一个正整数n,表示班级的人数。原创 2023-04-10 14:23:28 · 118 阅读 · 0 评论 -
MOOC-W3-时间换算
如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。如果小时是0而分小于10分的,则不需要保留十位上的0。如果小时是0而分小于10分的,则不需要保留十位上的0。原创 2023-04-10 14:22:43 · 85 阅读 · 0 评论 -
MOOC-W2-逆序的三位数
提示:用%10可以得到个位数,用/100可以得到百位数...。将这样得到的三个数字合起来:百位*100+十位*10+个位,就得到了结果。程序每次读入一个正三位数,然后输出逆序的数字。注意,当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。时间限制:500ms内存限制:32000kb。每个测试是一个3位的正整数。原创 2023-04-10 14:17:56 · 52 阅读 · 0 评论 -
MOOC-W4-数字特征值
对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二进制数字。你的程序要读入一个非负整数,整数的范围是[0,1000000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。提示:将整数从右向左分解,数位每次加1,而二进制值每次乘2。原创 2023-04-10 14:13:58 · 92 阅读 · 0 评论 -
MOOC-W4-奇偶个数
你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。时间限制:500ms内存限制:32000kb。原创 2023-04-10 13:22:01 · 79 阅读 · 0 评论 -
7-50 输出华氏-摄氏温度转换表
输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。输入格式:在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。输出格式:第一行输出:"fahr celsius"接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小原创 2021-10-12 20:29:52 · 326 阅读 · 0 评论 -
7-40 到底是不是太胖了
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重−标准体重 |<标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。输入格式:输入第一行给出一个正整数N(≤20)。随后N行,每行给出两个整数,分别是一个人的身高H(120<H<200;单位:厘米)和真实体重W(50<W≤300;单位:市斤),其间以空格...原创 2021-10-12 19:38:38 · 176 阅读 · 0 评论 -
7-37 输出整数各位数字
本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。输入格式:输入在一行中给出一个长整型范围内的非负整数。输出格式:从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。输入样例:123456结尾无空行输出样例:1 2 3 4 5 6 #include<stdio.h>int main(){ long long a;//长整型 scanf("%lld",&a); long long i=a;.原创 2021-10-12 16:25:57 · 125 阅读 · 0 评论 -
w3-2 分队列
题目内容:班级第一次列队,通常老师会让同学按身高排成一列,然后1、2报数,喊到1的同学向前一 步,就这样,队伍就变成两列了。假设现在一个班级有n个同学,并且他们已经按身高排成 了一列,同学按身高从1到n编号,你能告诉我最后哪些编号的同学站在了第一列么?输入格式:输入一个正整数n,表示班级的人数。输出格式:按顺序输出所有在第一列的同学对应的编号,每两个编号之间用一个空格隔开,最后一个编号后面没有空格。输入样例:11输出样例:1 3 5 7 9 11时间.原创 2021-10-11 11:51:50 · 102 阅读 · 0 评论 -
7-12 日期格式化
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。输入格式:输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。输出格式:在一行中按照“yyyy-mm-dd”的格式给出年、月、日。输入样例:03-15-2017结尾无空行输出样例:2017-03-15结尾无空行#include&l原创 2021-10-10 20:47:04 · 60 阅读 · 0 评论 -
7-18 出租车计价
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:起步里程为3公里,起步费10元; 超起步里程后10公里内,每公里2元; 超过10公里以上的部分加收50%的回空补贴费,即每公里3元; 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。输入格式:输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。输出格式:在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。..原创 2021-10-10 20:52:29 · 124 阅读 · 0 评论 -
7-15 BCD解密
BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。输入格式:输入在一行中给出一个[0, 153]范围内的正整数,保证能转换回有效的BCD数,也就是说这个整数转换成十六进制时不会出现A-F原创 2021-10-10 20:49:51 · 133 阅读 · 0 评论 -
7-8 是不是太胖了
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)输入格式:输入第一行给出一个正整数H(100<H≤300),为某人身高。输出格式:在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。输入样例:169结尾无空行输出样例:124.2结尾无空行#include<stdio.h>i...原创 2021-10-10 20:44:52 · 90 阅读 · 0 评论 -
7-6 厘米换算英尺英寸
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。输入格式:输入在一行中给出1个正整数,单位是厘米。输出格式:在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。输入样例:170结尾无空行输出样例:5 6结尾无空行#include<stdio.h>int main()原创 2021-10-10 20:38:38 · 154 阅读 · 0 评论 -
7-19 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。输入格式:输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。输出格式:在一行输出日期是该年中的第几天。输入样例1:2009/03/02结尾无空行输出样例1:61结尾无空行输入样例2:2000/03/02输出样例2:62#include<stdio.h>原创 2021-10-10 20:55:41 · 70 阅读 · 0 评论