博客园作业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至较高温度,同时应在循环里设置温度单位转换公式和两种温度类型的输出函数。

错误点:输出的格式,字符宽度,保留小数,以及空格数量

posted @ 2019-10-14 22:00  蛋炒饭特稀  阅读(316)  评论(0编辑  收藏  举报