一.思维导图
二.对语法的认识
1.if-else
if(表达式1){ 语句1; } else if(表达式2){ 语句2; } else{ 语句3; }
使用:若符合表达式1,则执行表达式2,否则执行表达式3。
遇到的问题:忘记语句后的分号,在表达时候加分号,对else与哪个if一起搞混使得结果错误。
解决方法:仔细看题目,注意错误。
注意:else与它最接近的if配对。
2.switch
switch(表达式){ case常量表达式1:语句段1;break; case常量表达式2:语句段2;break; ... case常量表达式n:语句段n;break; default: 语句段n+1;break; }
使用:在switch语句中,表达式和常量表达式的值一般是整型或字符型,所有的常量表达式的值都不能相等。每个语句段可以包括一条或多条语句,也可以为空语句。
遇到的问题:常量表达式若为字符,忘记加单引号。
解决方法:注意并记住错误。保证不会再范。
注意:不一定要用break,及case后要用冒号;如果常量表达式为a,则需要加单引号。
3.for
for(表达式1;表达式2;表达式3){ 循环体语句; }
使用: for后面没有分号,先计算表达式1,在判断表达式2,若值为真,则执行循环体语句,接着计算表达式3,然后继续循环;若值为假,则结束循环。for语句中表达式只执行1次。
遇到的问题:表达式后分号错打成逗号,在中括号前加了分号。
解决方法:通过vs找出错误并在下次使用时注意。
注意:若循环体语句为复合语句,要加中括号。
4.while
while(表达式){ 循环体语句; }
使用:若表达式为真,则进行循环语句。
遇到的问题:条件中将=与==混淆,使得程序进入死循环。
解决方法及注意:==为等于,=为赋值。
5.do-while
do{ 循环体语句 }while(表达式);
使用:保证循环至少进行一次,之后若表达式为真,则继续循环。
遇到的问题及解决方法:while后的分号忘记,注意并牢记形式。
注意:该语句适用于先循环,后判断循环条件的情况。
6.break以及continue
使用: break语句强制循环结束;continue语句的作用是跳过循环体中continue后面的语句。
注意: 二者区别在于break结束循环,而continue只是跳过语句继续循环。break除了可以终止循环,还可用于switch语句,而continue只能用于循环。
三.pta分数截图
2.3 2.4作业
第三章作业
4.1作业
四.pta代码分析
1.
#include<stdio.h> int main() { int N, flag, i, denominator; double sum; flag = 1; sum = 0; denominator = 1; for (i = 1;i <= N;i++) { sum += flag * 1 / denominator; flag = -flag; denominator += 3; } printf("sum = %.3f", sum); return 0; }
代码思路:使用循环,根据题目要求,考虑到正负交替及分母为公差为三的等差数列,写出答案。
错误原因:没有定义分母而用i代替,使得循环次数减少,答案错误。
学会了什么:自定义标识符使得代码更清晰,规范代码,减少错误率。
2.
#include<stdio.h> int main() { int N,sum,i; scanf("%d", &N); sum = 0; i = 0; while (N > 0) { if (N % 10 >= 0) { i++; } sum = sum + N % 10; N = N / 10; } printf("%d %d", i, sum); return 0; }
代码思路:根据N为整数,循环取余得到各位数之和,并每循环一次,位数加1,得到位数。
错误:无。
学会了什么:给出一个整数求位数及各位数字之和。
3.
#include<stdio.h> int main() { int v1, v2; scanf("%d %d", &v1, &v2); double value = (v1 - v2) * 1.0 / v2 * 100; int x = (int)(value + 0.5); if (x<10) { printf("OK"); } else if (x < 50) { printf("Exceed %d%%. Ticket 200", x); } else { printf("Exceed %d%%. License Revoked", x); } return 0; }
代码思路:根据题目要求,使车速分别与限速的等级比较,输出结果。
错误原因:忽略浮点误差,使得答案部分错误。
学会了:如何避免由于浮点误差而引起的错误,并规范书写代码。