一.思维导图
二.if-else;switch;for;while;do-while;
1.if_else语句 :
if(条件1) { 语句1; } else { 语句2; }
遇到的问题:1.if后忘加{}2.对于多个if-else语句,else属于哪个if不确定。
解决方法:在编译器中运行代码,养成在if后添加{}的习惯。
2.switch语句
switch(常量) { case 表达式: 语句;break; case 表达式: 语句;break; … case 表达式: 语句;break; default: 语句; }
遇到的问题:在case后忘加break,导致程序跳不出循环。
解决方法:注意在每个case语句后添加break。
3.for语句:
for(表达式1; 表达式2; 表达式3) { 语句 }
遇到的问题:由于代码错误或过于冗长,导致程序运行超时或答案错误。
解决方法:先在纸上写下该流程,计算无误后在输入。
4.do-while语句:
do{表达式1; 表达式2; ... }while(条件)
遇到的问题:分不清与while的区别,使用错误。
解决方法:记住do-while与while的区别:do-while至少会循环一次。
5.while语句:
while(条件){ 表达式1; 表达式2; ... }
遇到的问题:与for语句弄混淆。
解决方法:铭记while的句式。
6.break以及continue 使用方法:
switch(表达式) { case 表达式: 语句;break; … case 表达式: 语句;break; default: 语句; } for(表达式1; 表达式2; 表达式3) { 语句1; continue; 语句2; }
注意事项:break用于跳出循环;continue用于跳过continue之后的语句,进入下一次循环。
三.pta分数
2.3,2.4作业
第3章作业
4.1作业
四.pta题目分析
1.
代码:
#include<stdio.h> #include<math.h>//调用数学函数 int main() { int n,i;//定义变量 double s; scanf("%d",&n);//输入变量 if(n>0){ for(i=0;i<=n;i++){ s=pow(3,i); printf("pow(3,%d) = %.0f\n",i,s); }//通过循环来实现乘方表 } else if(n==0){ printf("pow(3,0) = 1"); }//特殊情况 return 0; }
收获:需输入调用实现函数的指示,可利用循环来生成乘方表。
2.
代码:
#include<stdio.h> #include<math.h>//调用数学函数 int main() { int a,b,c;//定义变量 double area,perimeter,s; scanf("%d %d %d",&a,&b,&c); //输入变量 if(a+b>c&&a+c>b&&b+c>a){ //判断是否可构成三角形 s=1.0(a+b+c)/2; area=sqrt (s(s-a)(s-b)(s-c)); //输入公式 perimeter=a+b+c; printf("area = %.2f; perimeter = %.2f",area,perimeter); } else{ printf("These sides do not correspond to a valid triangle\n"); } return 0; }
收获:要注意if条件的完整性,注意题目的要求来保留小数位。
3.
代码:
#include <stdio.h> int main(){ int n, count, sum;//定义变量 sum = 0; count = 0; scanf("%d", &n);//输入一个整数 while(n!=0){ count++; sum += n%10;//通过除商取余来统计整数位数及每个位数之和 n /= 10; } printf("%d %d\n", count, sum); return 0; }
收获:可通过除商取余数的方法来统计一个数的位数。