第一次博客作业

一. 制作思维导图

二. 写出自己对以下语法的认识

1.if-else

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

没有大括号时,else总是与离它最近的不带else的if相配对.
判断表达式是否相等时注意用==而不是=.

2.switch

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

case的每个常量表达式不能相等.
可以不使用default,则case条件都不满足时,不执行任何操作.

3.for

for(表达式1;循环条件;表达式2)
{
    循环语句;
}

for括号中的两个分号注意不要用成逗号.
表达式1为循环开始条件,表达式2为每结束一次循环后需执行的操作.
表达式1、2可省略,但分号必须保留.

4.while

while(循环条件)
{
    循环语句;
}

先判断循环条件,后进入循环.

5.do-while

do
{
    循环语句;
}while(循环条件);

先执行一次循环语句,再判断循环条件.
所以无论是否满足循环条件,循环至少执行一次.

6.break以及continue

·break:结束循环.
·continue:跳过循环体中continue后面的语句,继续下一次循环.

三. pta分数截图



四. pta代码分析

#include <stdio.h>

int main()
{
    int m, n, t, flag = 0;
    char c;
    scanf("%d %c %d", &m, &c, &n); /*读入数据以及运算符*/
    switch (c) /*根据不同的运算符选择不同的运算方式,并将所得的值存入变量t*/
    {
        case '+':
            t = m + n;
            break;
        case '-':
            t = m - n;
            break;
        case '*':
            t = m * n;
            break;
        case '/':
            t = m /n;
            break;
        case '%':
            t = m % n;
            break;
        default:
            printf("ERROR
"); /*非法运算符*/
            flag = 1;
            break;
    }
    if (flag == 0)
    {
        printf("%d
", t); /*输出结果*/
    }
   
    return 0;
}

思路见注释.
错误:输入非法运算符,输出ERROR和t的值.
解决方法:定义flag = 0;当输入非法运算符时,让flag = 1;只有flag = 0时,才输出t的值.
学到了:输出时应注意细节,保证输出内容与题目所给要求相符.

#include <stdio.h>
int main()
{
    double m, n, x;
    
    scanf("%lf %lf", &m, &n);
    
    if (m <= n){ /*判断是否超速*/
        printf("OK
");
    }else if (m > n){
        x = (m-n)/n * 100.0; /*计算超速的百分比*/
        if (x < 10){
            printf("OK
");
        }else if (x >= 50){
            printf("Exceed %.0f%%. License Revoked
", x);
        }else{
            printf("Exceed %.0f%%. Ticket 200
", x);
        }
    }
    
    return 0;
}

思路见注释.
错误:输出超速百分比时数字后没有%.
解决方法:代码中多加一个%,即%%
学到了:%为特殊的符号,想要输出一个%时代码应为两个%.

#include <stdio.h>
int main()
{
    double height, n;
    scanf("%lf %lf", &height, &n);
    double last = 0;
    double distance = 0;
    double t = height;
    
    if(n > 0)
    {
        for (int i = 1; i <= n; i++)
        {
            distance += height * 2.0; /*落地一次路程增加高度的两倍*/
            height /= 2.0; /*弹跳高度每次减半*/
        }
        last = height; /*第n次落地后再次弹起的高度*/
        distance -= t;
    }
    printf("%.1f %.1f
", distance, last);
    
    return 0;
}

思路见注释.
错误:第一次落地时,路程等于高度,误计算为高度*2.
解决方法:在循环结束后在总路程上减去初始高度.
学到了:在纸上进行演算,很容易发现错误所在.

原文地址:https://www.cnblogs.com/wzt392217419/p/11651209.html