C博客作业01--分支、顺序结构

0. 展示PTA总分


1.本章学习总结

1.1 学习内容总结

  • 学习随机函数使用:
fabs()//绝对值
round()//四舍五入
pow( x,n)//求x的n次方
sqrt()//求平方根
  • 选择结构的使用:

    • if-else结构:适合于区间判断,适应性强,可处理更多情况。如:

    • switch结构:适合于离散值的判断。可读性好,整体流程清晰明确。如:

  • 循环结构的使用:

    • for循环结构:第一个是初始化,第二个是条件语句,第三个是自处理语句。 循环时第一个语句只使用一次,然后判断是否满足第二个语句,满足则进入循环体。直到不满足循环体再跳出。

    • while循环结构:先对while()括号内的条件进行判断,若为真则进入循环,否则跳出循环。

    • do-while循环结构:与while循环类似,但是do-while循环是先进行循环体的循环,之后再对while()的条件进行判断,若条件为真则继续循环,否则会跳出循环。

    • 总结:个人认为for循环结构更常用;而while和do-while的区别在于判断条件的先后,即while是先判断,程序有可能不进行循环;do-while是后判断,就是说无论是否满足条件都只是会进行一次循环。

  • VS的调试

1.2 本章学习体会

  1. 学习体会

    • 整体感受:在这两周的学习中,整体感受还算不错。林丽老师上课很仔细,很认真;感觉班级学习c语言的氛围也很浓厚。我特别喜欢课堂互动那个形式,可以让我在学习新知识的过程中更加快速地接受。但是我个人感觉除了课后的PTA练习,在上课期间动手写代码的时间不太够,因此在上过一节新课后可能对新教的代码只能停在认识,并不能立即运用。
    • 经过两周的学习,可以深刻的感受到课前预习课后复习的重要性。课前认真完成课堂派的预习作业和课后及时的PTA训练可以大幅度地提升学习效率。
    • 学会独立思考。在写代码是遇到错误点时不要第一时间求助,而是应该先尝试自己运用VS等工具进行调试,实在是不懂再去询问老师,助教,同学或者上网搜索。
    • 学会总结很重要。在一些小错误上一定要提醒自己不能再犯,同时写代码也要规范清晰,才方便修改阅读。
  2. 代码量:


2.PTA实验作业


2.1 PTA题目1

c01-顺序结构练习
7-7 计算银行存款的本息 
本题目要求计算银行存款的本息,计算公式为sum=money×(1+rate)^year,其中sum为存款到期时的本息合计(税前),money是存款金额,year是存期,rate是年利率。

2.1.1 数据处理

1. 数据表达
    - 定义存款金额money、存期year、本息sum和年利率rate。(注:4个变量均为实型。)
2.数据处理
    - 依次输入存款金额money、存期year、年利率rate。
    - 通过题目给的公式sum=money×(1+rate)^year进行sum的运算。(注:因为最后sum是保留2位小数,故需要注意浮点数的定义)
    - 输出实数sum。

2.1.2 代码截图

2.1.3 本题可扩展功能
- 本题经过修改,可以分别计算本金与利息

2.1.4 PTA提交列表及说明

说明:在优化代码中的变量名时句末漏输了分号,导致的编译错误,通过VS中的错误列表的提示找到错误。


2.2 PTA题目2

c02-选择结构
7-4 回文数
判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。。

2.2.1 数据处理

1. 数据表达
    - 定义输入的正整数number,个位数digit,十位数ten,百位数hundred,千位数thousand,万位数tenThousand。(注:所有变量均是整型。)
2.数据处理
    - 输入五位正整数number。
    - 依次通过整除(/)与取余数(%)来将number的五个数字分开。
    - 通过if-else结构判断万位与个位,千位与十位是否相等来判断是否为回文数。
    - 输出yes或者no。

2.2.2 代码截图

2.2.3 本题可扩展功能
-本题利用了整除与取余来分离整数的各位数,但是局限于输入的数被限制为5位数,因此我们可以利用循环来拓展它的功能,比如计算水仙花数等。如图:

但是该代码存在可能运行超时的毛病(本人能力有限,只能写成这样了...),但是可以拓展为输出N位数中所有的水仙花数。

2.2.4 PTA提交列表及说明

说明:虽然做对了,但是对于多位数的分离以及各个符号的运用任然需要多练习。


2.3 PTA题目3

c02-选择结构
7-3 输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√
​s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。

2.3.1 数据处理

1. 数据表达
    - 定义输入的三边边长a b c,计算的值s,面积area,周长perimeter。(注:三边的边长是整型,s,面积,周长是实型。)
2.数据处理
    - 输入三边边长a b c。
    - 通过算术运算计算s,周长与利用题目的公式计算面积。
    - 通过if-else结构来判断是否符合三角形法则,即两边之和大于第三边。
    - 根据判断结果判断是输出area&perimeter还是These sides do not correspond to a valid triangle。

2.3.2 代码截图

2.3.3 本题可扩展功能
- 本题的判断语句中首先有对是否为三角形做判断,因此,在此基础上可拓展多个关于三角形的计算。
2.3.4 PTA提交列表及说明

说明,计算最终答案时既有整型的运算,也有实型的运算,因为最终答案是保留两位小数,所以在进行整型运算时需要乘1.00,否则最后的答案可能出现错误。



3.阅读代码

ACM题解poj 3751 时间日期格式转换
代码截图:

代码功能:对输入的时间日期实现格式的转换。

亮点
- 代码简洁清晰,格式标准,令人阅读时毫无障碍。
- 在运用while 循环时后方巧妙地定义了一个字符串,并且接上一个判断语句来对am和pm实现判断。
- 对于变量的定义十分正确,避免了因阅读错误而导致的代码错误。
- 在循环体内,每输入一次便接上一个getchar(),是为了完成对每一个数字之后的字符进行吸收,若没有getchar(),则程序最后输出的答案会出现错误,因为有一部分的%d吸收的不是数字而是字符(注:测试时的字符必须使用英文字符,否则程序输出内容一样会有错)。
- 在此段代码中:

scanf("%d", &year);
getchar();/*这两句代码的作用等同于scanf("%d %c",&year,&op);*/
posted on 2019-10-05 14:39  蔡浩伟  阅读(666)  评论(3编辑  收藏  举报