第二篇博客作业
| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业00--我的第一篇博客 |
| 这个作业的目标 | 学习Makdown语法,对本专业及C语言课程有个简单了解,记录自学慕课视频的笔记。教师可以对学生有个初步的认识。 |
0. 我的PTA总分
1. 本章学习总结
1.1 学习内容总结
1. 学会运用flag变量,可以有效增强代码的运行效率
相对于调运pow函数而言,改变flag变量来改变数据的正负会使代码更简洁高效
2. 学习rand()引入随机数
但rand()的随机数总是既定的某一个,无法做到次次随机
所以就要构造随机数种子,并引入time,srand(time)
就可以引入一个1~100的随机数rand()%100+1
3. 学习了break和continue的用法
break;//跳出循环,但要注意只能跳出本层的循环
continue;//跳过循环后面的分支,并重新进入循环
另外,在for语句中,如for(i=1,i<=10,i++)中,使用break后不会执行i++,而continue会执行完i++后再重新进入循环
1.2 编程技巧总结
- 取个位,如取变量sum的个位:sum%10
- 去个位,如去变量sum的个位:sum/10
- 判断整除,如判断sum变量是否可被10整除: sum%10==0
- 当分支较多时,使用switch语句能使代码更简洁
1.3 本章学习体会
在近期学习C语言的过程中,渐渐感受到了C语言的魅力,同时也对计算机有了更加深入的了解
但随着学习的深入,也渐渐感受到编程的难度,经常会出现思路错误,为了更好地编写程序,我认为学习编写伪代码尤为重要
近两周随着学习的深入,代码量也渐渐增加,但有时候编写的代码常常也非常复杂,如在编写(前天是哪天)的时候写了100行的代码,所以学会做到简化代码也很重要
2. PTA实验作业
2.1 前天是哪天
2.1.1 数据处理
因为考虑的情况比较繁杂,所以要先写伪代码来缕清思路(伪代码的编写已被删除)
首先要定义变量年(year)月(month)日(day),另外需要判断该年是否为闰年
if (year % 400 == 0 || ((year % 4 == 0) && (year % 100 != 0)))
还有需要判断该月是大月还是小月还是二月,最后关于天,要判断是否为该月的第一天或者第二天,另外还要注意每年的第一天和第二天的前天要退一年
因为这份代码里的变量都是年,月,日,所以在定义变量的时候都是int整形变量
对于变量,我认为还需要定义temp临时变量来储存一些数据或者判断某种情况
2.1.2 代码截图
2.1.3 PTA提交列表及说明
Q1:分支的问题
A1:因为月份分支较多,所以对于月份用if语句就会很不方便,而使用switch语句就会使代码简洁高效
Q2:分支里面要嵌套分支,那么什么作为外分支,什么作为内分支?
A2:可以先判断年份是否为闰年,再判断月份,最后再是天数
2.2 jmu-c-二进制转10进制
2.2.1 数据处理
运用循环,不断进行getchar读取单个数字进行进制转换
所以要先定义一个字符变量ch,另外还需定义一个变量来存储进制转换的十进制结果
2.2.2 代码截图
2.1.3 PTA提交列表及说明
Q1:如何建立循环读取单个数字或字符
A1:while (ch = getchar(), ch != '\n')
Q2:在执行default分支打印完error input!后break跳出switch语句后,无法直接跳出循环
A2:可以定义标志变量flag,在执行default时改变flag的量,使其变为0,再跳出switch后便可以运用flag来跳出循环
2.3 如何进行单步调试
还是上面这道题,我们先来看一下单步调试的步骤
这样的话,在进行单步调试的时候,我们就可以有效地观察到变量是否进入到某个分支或者循环中去
2.3.1 调试拓展
printf调试也可以很好地了解变量的去向,就是在分支的内部加入一条打印语句,如果变量有进入,那就会打印出这条语句
而且可以根据这条打印的内容的次数了解变量进入该分支的次数,这样也可以避免单步调试次数过多而带来的不便
2.3.2 switch拓展
在用vs探索switch的用法的时候,我发现一种很大胆的写法可以很好地简化代码,使代码更清晰,如图:
3.0 to助教/老师
最后,如果助教或者老师看到了的话,希望能帮忙讲解一下这道题
虽然最后做对了,但还是觉得代码很复杂,求更简洁的代码