一,思维导图
二,语法认识
1,if-else的用法
if (条件一) { 语句一; } else { 语句二; }
问题:else与if的匹配关系不明确,导致程序异常。
解决方法:牢记else与离其最近的一个if配对,不与其他的if连用,并规范代码书写格式,使其看起来跟加清晰明了。
2,while语句的用法
while (循环条件) { 循环语句; }
注意事项:while比较好用,基本上所有的循环结构都能用while写。
3,for语句的用法
for(表达式1; 表达式2; 表达式3) { 循环体语句 }
问题:进行编程时,用for循环时经常运行超时,控制不好循环次数。
解决方法:在使用for循环时,先在草稿纸上书写一遍,确定准确无误时,再誊写到自己的代码上。并多加练习,增加自己对for循环的理解,从根本上解决。
4,do-while的使用方法
do { 循环体语句 }while(循环条件);
问题:刚开始使用时,无法理解他这个循环,这个循环的思路与其他的循环不同,导致自己总是写错。
解决方案: 理解此语句的循环原理和特殊的循环顺序,多加训练,当自己一看到问题就能判断出是否用do-while语句时,就意味着对do-while有了比较正确的理解。
5,switch语句的使用方法
switch(整形表达式) { case 常量表达式1: 语句1;break; case 常量表达式2: 语句2;break; … case 常量表达式n: 语句n;break; default: 语句n+1; }
注意事项:并不是所有的case后面都有break,需要合理的利用break的位置,来使自己的代码更加简单。
6.break以及continue 使用方法
switch(整形表达式) { case 常量表达式1: 语句1;break; … case 常量表达式n: 语句n;break; default: 语句n+1; } for(表达式1; 表达式2; 表达式3) { 语句1; continue; 语句2; }
注意事项: break语句可以出现在选择结构和循环结构里,但continue语句只能用在循环语句中,continue语句使用后,本次循环直接结束,不再执行continue之后的语句,直接进行下一轮循环。
三,PTA分数截图
2.2,2.3作业
4.1作业
第三章作业
四,PTA代码分析
题目:
代码:
#include <stdio.h> int main() { int a,b; char c; double x; scanf("%d %d %c",&a,&b,&c); if (b==90&&c=='m') { x = a*6.95*(1-0.05); } else if (b==90&&c=='e') { x = a*6.95*(1-0.03); } else if (b==93&&c=='m') { x = a*7.44*(1-0.05); } else if (b==93&&c=='e') { x = a*7.44*(1-0.03); } else if (b==97&&c=='m') { x = a*7.93*(1-0.05); } else if (b==97&&c=='e') { x = a*7.93*(1-0.03); } printf("%.2f",x); return 0; }
思路:分析题目,将题中的油的种类与服务项目合成,分为六种情况,再依次求解。
错误归纳:
(1),过多的if-else,容易让人头脑混乱,无法有清晰的思路。
(2),忘记保留两位小数,导致答案错误。
收获:让我更好的理解了if-else的用法,并巩固了知识,夯实了基础。
题目:
代码:
#include <stdio.h> int main() { int l,u,f; double c; scanf("%d %d",&l,&u); if (l>u||l>100||u>100) { printf("Invalid.\n"); } else if (l<=u) { printf("fahr celsius\n"); for(f=l;f<=u;f+=2) { c = 5.0*(f-32)/9; printf("%d%6.1lf\n",f,c); } } return 0; }
思路:首先分析输入数据的值是否在给定范围内,根据判断结果,执行不同的操作,所以使用if-else,在一种情况中,我们需要依次加二的进行计算,所以使用循环结构。
错误归纳:
(1),不进行分情况,直接就就进入循环,只计算了第二种情况。
(2),对于其中给出“ 占据6个字符宽度,靠右对齐 ”,无法用代码的形式表达出来。
收获:我知道了占据n个字符宽度的表达方式,并巩固了for循环的用法。
题目:
代码:
#include <stdio.h> #include <math.h> int main() { int h,n,i; double s,H; scanf("%d %d",&h,&n); s = h; H = h*1.0/pow(2,n); if (n==0) { s = 0; H = 0; } else if (n==1) { s = s; H = h; } else { for(i=1;i<=n-1;i++) { s=s+2.0*h/pow(2,i); } } printf("%.1f %.1f",s,H); return 0; }
思路:通过在草稿纸上对球坠落的过程进行分析,了解球下落的过程,并用编译器验证自己的猜想是否正确,多次实验,完善自己的代码,最终得到结果。
错误归纳:
(1),主观臆断,以自己的第一映像去写代码,导致自己对过程不熟悉,从而全盘皆错。
(2),只考虑到其中的某一方面,导致无法完美的解决问题。
(3),对于小数位的保留,没有注意,导致答案错误。
收获:让我了解到编程也需要在草稿纸上先分析,在求解。
五,总结:
通过一个多月的学习,我了解到了C语言程序设计的一些基本知识,虽然我的技能不是很纯熟,但一有了明显的进步,我希望在未来能够掌握更多的技巧与能力。