| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业01--分支、顺序结构 |
| 这个作业的目标 | 初步认识C语法,掌握数据表达、printf、scanf语法及分支结构内容 |
0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
1.1.1两大结构(具体模板上一次博客已列举)
分支结构:
简单的if结构
if-else级联结构(多分支出口)
if-else嵌套结构(单分支出口)
switch-case分支(case语句后面跟上常量,使用break跳出分支,多个case可同时一个break跳出)
循环结构
for循环(适用于有具体循环次数)
while循环(需包含跳出循环的内容)
do-while循环(保证执行一次循环,while语句后要使用分号)
1.1.2 字符型数据理解
char x ; //字符变量的定义
getchar() ; //用于读取一个字符
putchar() ; //用于输出一个字符
scanf("%c",&x) ; //对于字符的读取输出使用%c
printf("%c",x) ; //对于字符输出同样使用%c
| 字符 | 含义 |
| ---- | ---- | ---- |
| \n | 换行 |
| \r | 回车 |
| \ \ | 反斜线 |
| \ " | 双引号 |
| \ ' | 单引号 |
| \? | 问号 |
1.1.3 几大新学的函数与和头文件(放在随机种子中说明)
| 函数类别 | 使用方法 |
| ---- | ---- | ---- |
| 幂函数pow | pow(x,n) |
| 绝对值fabs | fabs(x) |
| 平方根sqrt | sqrt(x) |
注:fabs用于求取浮点数的绝对值,abs函数用于求取int类型的绝对值。
1.2 编程技巧总结
1.2.1 取某数(a)的某位数的做法
规律总结:个位数通过对10取余(%d)即可。
/10可以消除尾数(最后一位数)。
求取高位数有多种思路。
最高位数:原数/(10的n-1次方)
以1668(四位数为例)
对于百位(n),
n=1668%1000/100;
n=1668/100%10;
1.2.2 随机数种子的使用(用于产生随机数)
#include <stdio.h>
#include <stdlib.h> // C语言标准库函数调用
#include <time.h> // 时间函数原型库文件调用
int main()
{
int num;
srand( time(0) );
num=rand()%100 ;//%d 可表示调整生成随机数的范围
printf("%d",num);
return 0 ;
}
1.3 本章学习体会
疑难:对于for循环的龟兔赛跑问题,理解不是很透彻。
在考虑具体问题时,纠结使用哪一类循环结构去更方便的解决。
代码:这两周每天的平均代码量2题,但是时间分配不均,存在一天刷一个题库,几天不刷题的情况。
这个问题应当注意,每天刷题保持状态,避免以懒惰为借口而不刷题。
2.PTA实验作业
2.1 前天是哪天
//个人认为这是一道很经典的题目,可以认真仔细研究,对于顺序结构的理解有重要意义。
//林学长提供的思路非常有启发作用,switch-case的逆向理解十分新奇。
题目截图
2.1.1 数据处理
数据表达:整形变量yea,mon,day。
数据处理:使用分支结构if语句判断,是否为闰年,是否为2月,大小月判断。
2.1.2 代码截图
2.1.3 PTA提交列表及说明
看起来是一次过,实际上是在vs上跑了很久,考虑了先判断月份是分开判断,还是用一个语句(大小月来分开判断),感谢伟神的思路帮助。
这里的思路是先考虑 是否跨月,然后 是否出现跨年,接着再 思考2月( 闰年继续思考),并行 思考大月和小月的情况。
2.2 自选一题,字符型数据处理题
题目如图所示
2.2.1 数据处理
数据表达:用于计数的letter,blank,digit,other。字符变量char。
数据处理:for循环对字符输入进行依次输入,if多分支语句进行不同类别的累加。
2.2.2 代码截图
2.2.3 PTA提交列表及说明
这个思路比较清晰,注意getchar读入循环进入的字符,注意怎么用if语句判断为整数,字母。
2.3 自选一题,介绍单步调试如何检查错误
题目如图所示
2.3.1 单步调试截图
正常输入
第一次
使用调试
发现sum不等于153,b的值错误
发现是取余和整除混淆
修改后
2.3.2 代码截图
2.3.3 PTA提交列表及说明!
要时刻注意整除和取余。