zoukankan      html  css  js  c++  java
  • 顺序分支结构 Li

    C博客作业02--分支——顺序结构
    | 这个作业的地址 | C博客作业01--分支、顺序结构 |
    | ---- | ---- | ---- |
    | 这个作业的目标 | 初步认识C语法,掌握数据表达、printf、scanf语法及分支结构内容 |

    0PTA总分


    1.本章学习总结

    求余(符号取决于被除数)
    列:(-10)%3=-1
    10%(-3)=1

    • 复合运算符中运算符与“=”之间不存在空格

    • 求偶数:偶数与2求余为0则为偶数

    • 相等的判断“= =”,不相等判断用“!=”

    • float与double都是浮点型(double型数据占用空间更大,精度更高,取值范围更大)

    • 强制类型转换
      1.数据类型和表达式都必须加括号
      2.不会改变原来数据的类型及变量值,只在本次运算中临时性转换
      3.运算结果不遵循四舍五入原则

    1.1分支结构

    (1)简单if语句

    基本结构:
    if(表达式)
    {
    执行代码块;
    }

    • 如果表达式值为真,则执行后面,否则不执行

    代码表示

    //如果体重小于等于100,就可以穿上s码的小裙子
    int main()
    {
    	int weight=90;
    	if (100 >= weight)
    	{
    		printf("%s\n", "可以穿s码小裙子");
    
    	}
    	return 0;
    }
    

    (2)if-else语句

    if()后面没有分号,直接写{}
    else后面也没有分号,直接写{}

    基本结构:
    if(表达式)
    {
    代码A;
    }
    else
    {
    代码B;
    }

    • 如果表达式为真,则执行代码A,否则执行代码B

    代码表示

    //如果体重小于等于100,就可以穿上s码的小裙子,否则只能穿XL码
    int main()
    {
    	int weight=90;
    	if (100 >= weight)
    	{
    		printf("%s\n", "可以穿s码小裙子");
    
    	}
            else
            {
             printf("%s\n", "可以穿XL码小裙子");
            }
    	return 0;
    }
    

    (3)多重if-else语句

    基本结构:
    if(表达式)
    {
    执行代码块A
    }
    ...
    else if()
    {
    代码块B
    }
    ...
    else
    {
    代码块n
    }

    • 依次执行表达式,出现某个值为真时,则执行相应代码块,否则执行代码块n
      代码表示
    //如果体重小于等于100,就可以穿上s码的小裙子,如果体重在100与110之间就可穿L码,否则只能穿XL码
    #include <stdio.h>
    int main()
    {
    	int weight = 90;
    	if (weight <= 100)
    	{
    		printf("%s\n", "可以穿上s码的小裙子");
    	}
    	else if (100 < weight < 110)
    	{
    		printf("%s\n", "可以穿上L码的小裙子");
    	}
    	else
    	{
    		printf("%s\n", "只能穿XL码");
    	}
    		return 0;
    }
    

    (4)嵌套if-else语句

    就是在if-else语句中,再写if-else语句)
    基本结构:
    if(表达式)
    {
    if(表达式)
    {
    执行代码块A
    }
    else
    {
    执行代码块B
    }
    }
    else
    {
    执行代码块
    }

    代码表示

    /*考试之前,家长说了,你如果考90分以上的话会买玩具,否则没有奖励,
    如果能在获得玩具的情况下获取班级前三名的话会有大餐吃。
    */
    #include <stdio.h>
    int main()
    {
    	int results = 98;
    	int ranking = 2;
    	if (results > 90)
    	{
    		if (ranking <= 3)
    		{
    			printf("%s\n", "吃大餐");
    		}
    	printf("%s\n", "买玩具");
    }
    	else
    {
    printf("%s\n", "没有奖励");
     }
    	return 0;
    }
    

    (5)分支结构之switch语句

    基本语句结构:
    switch(表达式)
    {
    case 常量表达式A:代码块A break;
    ...
    case 常量表达式n: 代码块n break;
    default:执行代码块n+1;
    }
    代码表示

    /*小明参加期末考试,分数等级分为A-D,等级划分方式如下:
    
    90<=分数<=100 ,等级为A。
    
    80<=分数<90 ,等级为B。
    
    60<=分数<80 ,等级为C。
    
    分数<60 ,等级为D。
    
    小明期末考试分数为87分,在代码编辑器中完善代码使其输出结果为: 等级B 
    */
    #include <stdio.h>
    int main()
    {
        int score = 87; //考试分数为87分 
        score/=10;
    
        switch (score)
        {
        case 10:
        case 9:
            printf("等级A");
            break;
        case 8:
            printf("等级B");
            break;
        case 7:
        case 6:
            printf("等级C");
            break;
        default:
            printf("等级D");
            break;
        }
        return 0;
    }
    

    注意事1
    (1)在case后的各常量表达式的值不能相同,否则会出现错误

    (2)在case后如果没有break;会一直往后执行一直到遇到break;才会跳出switch语句

    (3)switch后面的表达式语句只能是整型或者字符类型

    (4)在case后,允许有多个语句,可以不用{}括起来

    (5)各case和default子句的先后顺序可以变动,而不会影响程序执行结果

    (6)default子句可以省略不用

    注意2
    (1)swtich后的值是整数类型

    (2)switch语句中case不满足时执行用default语句

    (3)case的先后顺序不影响结果

    (5)多个case可以用一条执行语句

    *同:都是处理多分支结构
    *不同:if语句是两个分支的选择结构,swtich结构是多分支结构

    • 小技巧:
      swtich判断固定值时用
      if判断区间和范围候用

    注意3
    (1)“=”与两个“=”的区分
    “=”用于赋值,而两个“=”就是等于比较的意思

    (2)常用函数(在头文件中包含math.h)(使用函数时)
    平方根sqrt(x)
    绝对值(x)
    幂函数pow(x,n)
    指函数exp(x)
    以e为底对数log(x)
    以10为底对数log10(x)

    (3)else-if语句:分支清晰,更倾向使用它

    (4)随机=rand()%100
    10~100随机:10+rand()%90

    (5)区分数字和数字字符,1是整型数字,‘1’是字符

    (6)字符型用char定义

    (7)ch=getchar()输入一个字符
    putchar()输出一个字符

    (8)一般情况明确使用switch语句

    (9)常用ASCLL码:‘A’65 ‘B’66 ‘C’67

    1.2学习到方法

    比较大小的设计思路
    设a存为最大值,b其次,c最大,并且设置一个临时变量进行转换
    输入a,b,c
    if a>b than 交换a,b的值
    if a>c than 交换a,c的值
    if b>c than 交换b,c的值
    如图:
    例题:

    • 求偶数(n%2==0)
    • 求个位数gewei= a % 10
    • shiwei = (a / 10) % 10
    • baiwei = a / 100
      如图:

    1.3本章学习体会

    学习本章分支结构,在语法方面上是简单易懂的,但是在做pta题目上就存在问题,在题目上没有理解透彻题目的意思,不会根据题意去编写条件,这主要是自己个人代码量不足,并且代码思维跟不上所致,以后应该针对每个模块自己多加练习pta题目,并且每个题目都要弄清楚才能进步,学会去锻炼代码思维,并掌握知识点。

    2.1 前天是哪天(寻求了同学的帮助)

    • 2.1.1 数据处理
      int year;
      int month;
      int day;
      都运用了整数型类型

    *2.1.2 数据处理:数据用到表达式及流程结构
    用分支结构里面的else-if嵌套结构
    分了三种情况:
    以每个月3号为分界点,在3<day<31天为一类来讨论,2号讨论,3号讨论,在此基础上,注意月份大小和2月份的特殊情况,及一月份特殊号数时,年需要减一年。

    • 2.1.3 代码截图

    2.1.4 PTA提交列表及说明

    • 分类讨论上没有考虑周全
    • 在符号“=”上,“{}”漏符号

    2.2 自选一题,内容要和字符型数据处理有关的题目
    2.2.1 数据处理
    int oil = 0, num = 0;//整型变量
    char service;//字符型变量
    double sum = 0;//双精度浮点类型
    2.2.2 代码截图

    2.2.3 PTA提交列表及说明

    • scanf的字符吸收,对空格也会吸收空格
    • 输入字符时未给‘’
    • 运用double时输出or输入忘记用%.lf
    • 未清除定义好字符型而导致错误

    2.3 自选一题,介绍单步调试如何检查错误
    选择一题,介绍如何用单步调试找出错误。如程序代码没有进入你设计的分支、变量数据读入不正确。
    可参考超星平台的视频:学习单步调试--计算油费

    2.3.1 单步调试截图
    24小时时间转换
    单步调试

    监视


    2.3.2 代码截图

    2.3.3 PTA提交列表及说明

    • 忽略PM,AM为字符型,从而导致定义错误
    • 在scanf中“:”未输入,本身就为一个可读字符
    • 调试过程中输入值时未输入“:”,从而也导致错误
      单步调试过程中监视窗口都会显示自己所输入的值是否被scanf吸收
  • 相关阅读:
    springMVC将处理的后的数据通过post方法传给页面时,可能会出现乱码问题,下面提出解决post乱码问题的方法
    div3的e题有点水呀
    鸽天的放鸽序列---牛客网
    CodeForces
    NOIP2009 压轴---最优贸易
    在加权无向图上求出一条从1号结点到N号结点的路径,使路径上第K+1大的边权尽量小
    好久没写题解了
    皇宫看守问题(带权树上独立集)
    树的最大独立集合问题
    拓扑排序+动态规划
  • 原文地址:https://www.cnblogs.com/lixinggio/p/13908884.html
Copyright © 2011-2022 走看看