博客作业

     

一. 思维导图

   

 

 

二. 对以下语法的认识

           (1)if-else语句

形式:    if(表达式)

    {

      语句1;

    }

    else

      语句2;

执行流程:首先判断关键词 if 后括号内条件表达式的值,如果该表达式的值表达为真,则执行 if 体,接着执行 if 体后的其他语句;否则,若该表达式的值表达为假,则不执行该 if 体,直接执行 if 体后的其他语句

可能出现错误:1:if(表达式)后面加上:  2:{}缺少

          (2)     switch语句

形式:    switch(表达式)

    {

      case 常量表达式1:语句段1;break;

      case常量表达式2:语句段2;break;

      case常量表达式n:语句段n;break;

      default:    语句段n+1break;

     }

 

执行流程:首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段,如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的语句段,最后执行break语句,跳出switch语句。

可能出现错误:case后面用;而不是用:

           (3)  for语句

形式:   

 for(表达式1;表达式2;表达式3)

    {

      循环体语句;

    }

执行流程:先计算表达式1,再判断表达式2,若值为“真”,则执行循环体语句,并接着计算表达式3,然后继续循环,若值为“假”,则结束循环,继续执行下一条语句。

可能出现错误:3个表达式中间用,而不是;

         (4)while语句

形式:    while(表达式)

    {

      循环体语句;

    }

  执行流程:当表达式的值为“真”时,循环执行,直到表达式的值为“假”,循环中止并执行while的下一条语句。        

         (5)do-while语句


形式:    do

    {

      循环体语句

    }while(表达式)

执行流程:

可能出现错误:没有理解do-while先执行循环体再判断循环条件

          (6)break以及continue语句

 

break:强制循环结束

continue:跳过循环体中continue后面的语句,继续下一次循环

三. pta分数截图

作业2.3, 2.4 

 

 第3章作业

 

 4.1作业

 

四. pta代码分析

 思路:if-else判断大小

            while控制区间进行循环计算

#include <stdio.h>
int main()
{
    int d,b,a;
    double celsius=0;
    scanf("%d %d",&a,&b);
    if(a>b)
  { printf(
"Invalid."); } else
  { printf("fahr celsius\n"); d=b-a; while(d>=0)
    { celsius
=5.0*(a-32)/9;   printf("%d%6.1f\n",a,celsius);   a=a+2;   d=b-a;
    } }
return 0; }

错误原因:没有注意到题目的要求(占据6字符,以及右对齐),导致答案错误

收获:仔细分析题目,并且学到了%+数字控制字符宽度

(2)

 思路:使用if-else进行判断,输出对应的结果

#include <stdio.h>
int main()
{
    int a, b;
double s;
    scanf("%d %d", &a, &b);
s = 100*fabs(a-b)/b;
    if (s <10)
    {
        printf("OK");
    }
    else if (s>=50)
    {
        printf("Exceed %.0lf%%. License Revoked", s);
    }
    else {
        printf("Exceed %.0lf%%. Ticket 200", s);
    }
    return 0;
}

错误原因:没有考虑到浮点误差

收获:fabs时浮点数的绝对值

(3)

 

 思路:先用if语句将n=0的情况排除掉,再用for循环进行计算

#include<stdio.h>
int main()
{
    double s=0,a=0,m;
    int i, n;
    scanf("%lf %d", &m, &n);
    s = m;
    if(n==0){
        s=0;
    }
    for (i = 1;i <= n;i++)
    {
        a = m / 2.0;
        m = a;
        s = s + 2*a;
    }
    printf("%.1f %.1f", s-a-a, a);
    return 0;
}

错误原因:没有考虑到最后一次没有弹起,所以应该减去最后第n次的高度

收获:对题目进行仔细分析,得出计算方式

 

posted @ 2019-10-13 11:47  GGG(郭其松)  阅读(184)  评论(0编辑  收藏  举报