0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
基本语法
库函数一些必须信息在头文件中声明
调用输入输出函数#include<stdio.h>
调用数学函数#include<math.h>
常用:
平方根sqrt(x)
绝对值fabs(x)
幂函数pow(x,n)
e为底指数函数exp(x)
以e为底的对数函数log(x)
scanf(“”)
- 若有输入字符型变量,(例:%d%c%d),输入数据之间不能出现空格或其他字符(例:%d %c %d),否则也认定为输入的字符
输入浮点型变量 - double对应%lf;float对应%f(无精度控制)
printf(“”)
- 输出浮点型变量(例%.1f保留一位小数)
- 输出格式控制时(例:%-4d输出宽度为4长度不够后补空格)%4d前补空格
%外原样输出;%内针对变量输出
分支结构
if-else语句
- 字符型变量应用于if—else语句,条件中需用' '(例:if(op=='+'))
- else后不加表达式
多分支if-else语句
- else if后需加表达式
for循环语句
- 循环体语句若需多条用{}框起
switch语句
- case后不能写条件只能跟常量
- 注意break用法
拓展语法
2. rand()随机函数不放在头文件#include<studio.h>中,而是放在#include<stdlib.h>中,但每次产生的随机数组相同;
srand(time(NULL))随机种子每次产生不同的随机数组,time调用函数#include<time.h>中```
## 1.2 本章学习体会
* 感受:经过两周的C语言学习,从几乎0基础的小白到能够理解基本语法及分支结构等,能够写出程序、运行程序,虽然过程有时繁杂,但C语言编程的结果确实让人十分有成就感和满足感。在学习过程中我深刻的体会到老师口中C语言就是要不断练习实践这句话的真实,真正的错误只有在打完代码后才能被揪出并深刻记忆。面对大体找不出的错误,学习运用了逐句调试,应用vs编写代码。
* 不理解:for循环语句中空语句意义及作用,何时运用
* 建议:面对拓展的语法知识,希望可以在vs上分别打出代码,了解实际应用
* 代码量:(pta中除去部分语句更改)代码量大概为819(从9月1日起)
***
# 2.PTA实验作业
## 2.1 7-10 计算天数
### 2.1.1 数据处理
* 数据表达:都为整型
1. int year;是否闰年判断
2. int month;月份判断
3. int date;日期最终累加到sum中
4. int i;累计月份判断天数
5. int sum;累计天数总和
* 数据处理:
scanf输入语句;for循环语句;多分支if-else语句;printf输出语句
### 2.1.2 代码截图
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191005230720618-1758899783.jpg)
### 2.1.3 本题可扩展功能
首先判断所输入日期是否合理后再计算天数
### 2.1.4 PTA提交列表及说明
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191005234253203-925020683.jpg)
* Q1:如何处理不同月份对应相应天数
* A1:利用分支结构,将天数相同的月份并入同一个执行条件中,并讨论闰年2月问题
* Q2:怎样使月份逐步添加到输入数据后停止
* A2:循环结构for(i=1;1<=digit;i++)分号隔开
## 2.2 7-6 出租车计价
### 2.2.1 数据处理
* 数据表达:
1. int startMileage;起步里程
2. int startFee;起步价
3. double mileage;(浮点型)行驶路程
4. int waitTime;等待时间判断是否临时停车收费
5. int fee;总费用
* 数据处理:
scanf输入语句;多分支if-else语句;嵌套if-else语句;printf输出语句
### 2.2.2 代码截图
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191005231058446-1859644599.jpg)
### 2.2.3 本题可扩展功能
比拟为共享单车(或其他按公里数计费的交通工具)的收费制度
### 2.2.4 PTA提交列表及说明
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191005234002043-1188251080.jpg)
* Q1:刚开始不知道如何处理四舍五入问题
* A1:应为是整型数据最终结果只能是整数,计算数据加上0.5后达到四舍五入效果
* Q2:不及五分钟不收费问题如何表达
* A2:输出整型数据,所经过时间/5,则不及五分钟输出结果为0
## 2.3 7-12 判断一个三位数是否为水仙花数
### 2.3.1 数据处理
* 数据表达:
1. int digit;输入整数
2. int hundred;计算百位
3. int ten;计算十位
4. int bits;计算个位
* 数据处理:
scanf输入语句;多分支if-else语句;嵌套if-else语句;printf输出语句
### 2.3.2 代码截图
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191005230935529-1500828131.jpg)
### 2.3.3 本题可扩展功能
找出三位数(或更多位数)的所有水仙花数
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191007171836652-198216574.jpg)
### 2.3.4 PTA提交列表及说明
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191005233257183-150531973.jpg)
* Q1:比较符号应用错误
* A1:相等为==
* Q2:如何控制数据范围
* A2:将变量范围大小列出每句用&&分隔
***
# 3.阅读代码
[xinz](https://www.nowcoder.com/ta/acm-solutions/review?tpId=20&tqId=13026&query=3979&asc=true&order=&page=1)
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191006160826637-1300590680.jpg)
* 代码理解:应用gcd函数求两个正整数最大公约数,lcm函数求最小公倍数,求两分数之和,输入为EOF时结束,没有完全理解步骤,太绕(例:n=a*(m/b)+c*(m/d);else n=a*(m/b)-c*(m/d);)
![](https://img2018.cnblogs.com/blog/1778470/201910/1778470-20191007164503625-1441836791.jpg)
* 优点:条件判断详细,有逻辑感,多嵌套if-else语句可读性强
***