第一次博客作业

一.思维导图

二.对语法的认识

1.if-else

     if(表达式1){
           语句1;
            }
     else if(表达式2){
           语句2;
           }
    else{
          语句3;
           }

使用:若符合表达式1,则执行表达式2,否则执行表达式3。
遇到的问题:忘记语句后的分号,在表达时候加分号,对else与哪个if一起搞混使得结果错误。
解决方法:仔细看题目,注意错误。
注意:else与它最接近的if配对。
2.switch

 switch(表达式){
           case常量表达式1:语句段1;break;  
           case常量表达式2:语句段2;break;
                          ...
          case常量表达式n:语句段n;break;
          default:               语句段n+1;break;
      }

使用:在switch语句中,表达式和常量表达式的值一般是整型或字符型,所有的常量表达式的值都不能相等。每个语句段可以包括一条或多条语句,也可以为空语句。
遇到的问题:常量表达式若为字符,忘记加单引号。
解决方法:注意并记住错误。保证不会再范。
注意:不一定要用break,及case后要用冒号;如果常量表达式为a,则需要加单引号。
3.for

      for(表达式1;表达式2;表达式3){
           循环体语句;
          }

使用: for后面没有分号,先计算表达式1,在判断表达式2,若值为真,则执行循环体语句,接着计算表达式3,然后继续循环;若值为假,则结束循环。for语句中表达式只执行1次。
遇到的问题:表达式后分号错打成逗号,在中括号前加了分号。
解决方法:通过vs找出错误并在下次使用时注意。
注意:若循环体语句为复合语句,要加中括号。
4.while

      while(表达式){
             循环体语句;
            }

使用:若表达式为真,则进行循环语句。
遇到的问题:条件中将=与混淆,使得程序进入死循环。
解决方法及注意:
为等于,=为赋值。
5.do-while

      do{
         循环体语句
     }while(表达式);

使用:保证循环至少进行一次,之后若表达式为真,则继续循环。
遇到的问题及解决方法:while后的分号忘记,注意并牢记形式。
注意:该语句适用于先循环,后判断循环条件的情况。

6.break以及continue
使用: break语句强制循环结束;continue语句的作用是跳过循环体中continue后面的语句。
注意: 二者区别在于break结束循环,而continue只是跳过语句继续循环。break除了可以终止循环,还可用于switch语句,而continue只能用于循环。

三.pta分数截图

2.3 2.4作业

第三章作业

4.1作业

四.pta代码分析

1.

#include<stdio.h>   
int main() {
	int N, flag, i, denominator;
	double sum;
	flag = 1;
	sum = 0;
	denominator = 1;
	for (i = 1;i <= N;i++) {
		sum += flag * 1 / denominator;
		flag = -flag;
		denominator += 3;
	}
	printf("sum = %.3f", sum);
	return 0;
}

代码思路:使用循环,根据题目要求,考虑到正负交替及分母为公差为三的等差数列,写出答案。
错误原因:没有定义分母而用i代替,使得循环次数减少,答案错误。
学会了什么:自定义标识符使得代码更清晰,规范代码,减少错误率。

2.

#include<stdio.h>   
int main() {
	int N,sum,i;
	scanf("%d", &N);
	sum = 0;
	i = 0;
	while (N > 0) {
		if (N % 10 >= 0) {
			i++;
		}
		sum = sum + N % 10;
		N = N / 10;
	}
	printf("%d %d", i, sum);
	return 0;
}

代码思路:根据N为整数,循环取余得到各位数之和,并每循环一次,位数加1,得到位数。
错误:无。
学会了什么:给出一个整数求位数及各位数字之和。

3.

#include<stdio.h>

int main() {

	int v1, v2;

	scanf("%d %d", &v1, &v2);

	double value = (v1 - v2) * 1.0 / v2 * 100;
	int x = (int)(value + 0.5);

	if (x<10) {

		printf("OK");

	}

	else if (x < 50) {

		printf("Exceed %d%%. Ticket 200", x);

	}

	else {

		printf("Exceed %d%%. License Revoked", x);

	}

	return 0;

}

代码思路:根据题目要求,使车速分别与限速的等级比较,输出结果。
错误原因:忽略浮点误差,使得答案部分错误。
学会了:如何避免由于浮点误差而引起的错误,并规范书写代码。

posted @ 2019-10-14 23:04  h_hhh  阅读(198)  评论(0编辑  收藏  举报