博客园作业10.13
一、思维导图
二、语法认识
1、if-else语句
if(表达式)
语句1;
else
语句2;
(1)表达式的值非零则为“真”,语句执行。
(2)比较数值大小时,在表达式阶段注意“==”与“=”的区别。
(3)if语句可以单独使用,但是注意在if的条件后不要+分号。否则GG。
2、switch语句
switch(){
case 常量表达式1:语句段1;break;
case 常量表达式2:语句段2;break;
...
case 常量表达式n:语句段n;break;
default:语句段n+1;break;
}
(1)表达式的值=某个常量表达式——执行常量表达式的相应语段。若没有与表达式相等的常量表达式则执行default后的语段。如果没有default则不执行(即default可以省略)。
(2)表达式和常量表达式的值一般是整型或字符型。
(3)常量表达式的值不能相等。
(4)每个语句段可以有一条或多条语句,也可以为空。语句段为空则什么也不做。
(5)一般每一个语句段之后都应该有break;若没有则继续执行之后的case语句,直到遇到break,或者全部case语句都被执行后方才停止。
(6)注意case后面出现的应该是一个常量表达式。若把case '+'
写成case op=='+'
则程序错误。
3、for语句
for(表达式1;表达式2;表达式3)
{
循环体语句;
}
(1)表达式1为初值表达式,对循环变量赋初值。只执行1次。
(2)表达式2为条件表达式,表达式为”假“则循环结束。通常循环变量是否超过循环的重点。
(3)表达式3为步长表达式,改变循环变量的值,从而可改变表达式2的结果。
(4)循环体语句是被反复执行的语句,只能是一条语句。一般使用大括号括起来组成复合语句。
(5)for后的括号中可以为空,但不能省略分号”;“。并且注意for(;)后面不要+分号。
4、while循环语句
while(表达式)
循环体语句;
(1)当表达式的值非零时为”真“,循环执行,直到表达式的值为”假“。
(2)*while语句和for语句实质上一致,可以互相转换。
5、do-while循环语句
do{
循环体语句;
}while(表达式);
(1)与while和for循环不同,do-while循环无论循环条件的值如何,都至少会执行一次循环体。
(2)*通常适用于先循环后判断循环条件的情况。
6、break和continue
break:
循环提前结束,不再执行循环体中位于其后的其他语句。
continue:
跳过循环体中的continue后面的语句,继续下一次循环。
三、PTA分数截图
2.3&2.4
3章
4.1
四、PTA代码分析
1、统计学生成绩
解题思路:依题按照所给分数成绩分为ABCDE五等,并且统计各等级的人数。使用if语句容易实现。
所以按照条件,设置五组if语句,分别使表示各等级人数的变量a,b,c,d,e计数。
错误点:分数初始化时不能在定义一行中连等。录入成绩的变量错误命名。
代码改进:将成绩变量ch改为score;
#include <stdio.h>
int main()
{
int n, i, a = 0, b = 0, c = 0, d = 0, e = 0;
int score;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%d", &ch);
if (score >= 90)a++;
if (score < 90 && ch >= 80)b++;
if (score < 80 && ch >= 70)c++;
if (score < 70 && ch >= 60)d++;
if (score < 60)e++;
}
printf("%d %d %d %d %d", a, b, c, d,e);
return 0;
}
2、求整数的位数及各位数字之和
解题思路:依题需要通过scanf()函数录入一个数n,通过循环计数来计算该数的位数,为防止n被循环消耗,使用m变量来参与计数循环。再通过另一个循环来累加该数各位上的数。易知应用取余的方式来取得该数的最末位a,再利用整数的除法将该数不断除以10来去除已经取下的末位数,累计求和。
错误点:
1、计整数位时不应直接使用整数n,防止n被消耗,应另设变量m等于n,分别将两变量用于两次的循环。
2、累加的变量应初始化为1。
代码改进:将b命名为sum;
#include <stdio.h>
int main()
{
int n,i=0,m,a,sum=0;
scanf("%d",&n);
m=n;
while(m!=0)
{
m=m/10;
i++;
}
while(n!=0)
{
a=n%10;
sum+=a;
n=n/10;
}
printf("%d %d",i,sum);
return 0;
}
3、输出华式-摄氏温度转换表
解题思路:依题可知,应是要用if-else语句来区分输入的合法范围,应使用循环来使录入的较低华氏温度不断+2至较高温度,同时应在循环里设置温度单位转换公式和两种温度类型的输出函数。
错误点:输出的格式,字符宽度,保留小数,以及空格数量