一. 制作思维导图
二. 写出自己对以下语法的认识
1.if-else
if (表达式)
{
语句1;
}else
{
语句2;
}
没有大括号时,else总是与离它最近的不带else的if相配对.
判断表达式是否相等时注意用==
而不是=
.
2.switch
switch(表达式)
{
case 常量表达式1:
语句1;
break;
......
case 常量表达式n;
语句n;
break;
default:
语句n+1;
break;
}
case的每个常量表达式不能相等.
可以不使用default,则case条件都不满足时,不执行任何操作.
3.for
for(表达式1;循环条件;表达式2)
{
循环语句;
}
for括号中的两个分号注意不要用成逗号.
表达式1为循环开始条件,表达式2为每结束一次循环后需执行的操作.
表达式1、2可省略,但分号必须保留.
4.while
while(循环条件)
{
循环语句;
}
先判断循环条件,后进入循环.
5.do-while
do
{
循环语句;
}while(循环条件);
先执行一次循环语句,再判断循环条件.
所以无论是否满足循环条件,循环至少执行一次.
6.break以及continue
·break:结束循环.
·continue:跳过循环体中continue后面的语句,继续下一次循环.
三. pta分数截图
四. pta代码分析
#include <stdio.h>
int main()
{
int m, n, t, flag = 0;
char c;
scanf("%d %c %d", &m, &c, &n); /*读入数据以及运算符*/
switch (c) /*根据不同的运算符选择不同的运算方式,并将所得的值存入变量t*/
{
case '+':
t = m + n;
break;
case '-':
t = m - n;
break;
case '*':
t = m * n;
break;
case '/':
t = m /n;
break;
case '%':
t = m % n;
break;
default:
printf("ERROR
"); /*非法运算符*/
flag = 1;
break;
}
if (flag == 0)
{
printf("%d
", t); /*输出结果*/
}
return 0;
}
思路见注释.
错误:输入非法运算符,输出ERROR和t的值.
解决方法:定义flag = 0;当输入非法运算符时,让flag = 1;只有flag = 0时,才输出t的值.
学到了:输出时应注意细节,保证输出内容与题目所给要求相符.
#include <stdio.h>
int main()
{
double m, n, x;
scanf("%lf %lf", &m, &n);
if (m <= n){ /*判断是否超速*/
printf("OK
");
}else if (m > n){
x = (m-n)/n * 100.0; /*计算超速的百分比*/
if (x < 10){
printf("OK
");
}else if (x >= 50){
printf("Exceed %.0f%%. License Revoked
", x);
}else{
printf("Exceed %.0f%%. Ticket 200
", x);
}
}
return 0;
}
思路见注释.
错误:输出超速百分比时数字后没有%.
解决方法:代码中多加一个%,即%%
学到了:%为特殊的符号,想要输出一个%时代码应为两个%.
#include <stdio.h>
int main()
{
double height, n;
scanf("%lf %lf", &height, &n);
double last = 0;
double distance = 0;
double t = height;
if(n > 0)
{
for (int i = 1; i <= n; i++)
{
distance += height * 2.0; /*落地一次路程增加高度的两倍*/
height /= 2.0; /*弹跳高度每次减半*/
}
last = height; /*第n次落地后再次弹起的高度*/
distance -= t;
}
printf("%.1f %.1f
", distance, last);
return 0;
}
思路见注释.
错误:第一次落地时,路程等于高度,误计算为高度*2.
解决方法:在循环结束后在总路程上减去初始高度.
学到了:在纸上进行演算,很容易发现错误所在.