第二次博客作业
PTA分数
本章所学内容
switch语句
一种用于多分支选择的switch语句, 其一般形式为:
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
…
case 常量表达式n: 语句n;
default: 语句n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。C语言还提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。
在使用switch语句时还应注意以下几点:
- 在case后的各常量表达式的值不能相同,否则会出现错误。
- 在case后,允许有多个语句,可以不用{}括起来。
- 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
- default子句可以省略不用。
for循环结构
for 循环的一般形式为:
for(表达式1; 表达式2; 表达式3)
{
语句块
}
它的运行过程为:
-
先执行“表达式1”。
-
再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。
-
执行完循环体后再执行“表达式3”。
-
重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。
上面的步骤中,2和 3是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2 和 3)。
while循环结构
while循环的一般形式为:
while(表达式)
{
语句块
}
先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。
我们通常将“表达式”称为循环条件,把“语句块”称为循环体,整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。
do while循环语句
do...while循环的语法是:
do
{
statement(s);
}
while( condition );
注意,条件表达式出现在循环结束,所以在循环语句(多个)执行一次前的状态进行测试。
如果条件为真,控制流跳回起来做,并在循环语句再次执行,重复这个过程,直到给定的条件为假。
本章的学习体会
一些结构,语句看起来很简单,但是遇到真正的题目就会搞不懂,很多题目知道它该用什么语法和结构,但还是无从下手,大部分原因是我自己代码量不够,基础不好。
PTA实验作业
前天是哪天
这道题目我还没有做对,请教了室友,室友提供了一些思路,但是还是编译错误。
我所写的代码
12——24小时制
#include<stdio.h>
int main()
{
int hour, minutes;
scanf("%d:%d", &hour, &minutes);
if(hour==24&&minutes==0)
{
hour = 0;
printf("%d:%d AM", hour, minutes);
}
else if (hour == 12 && minutes == 0)
{
printf("%d:%d PM", hour, minutes);
}
else if (hour == 12)
{
printf("%d:%d PM", hour, minutes);
}
else if (hour > 12)
{
hour = hour - 12;
printf("%d:%d PM", hour, minutes);
}
else
{
printf("%d:%d AM", hour, minutes);
}
return 0;
}
单步调试
对于这道题目,他确实很简单,但刚开始我还是出现了一些问题。
int main()
{
double x;
double y;
scanf("%lf", &x);
if (x == 0)
{
y = 0;
}
else
{
y = 1 / x;
}
printf("f(%.1f) = %.1f\n", x, y);
return 0;
}
- 一直以为x是整数型,一直用的int,调试了两遍才知道。
- 在输出语句中f(%.1f) = %.1f,写成了f(x) = %.1f。
- else语句后面不需要写条件。