C博客作业01 分支、顺序结构

这个作业属于哪个班级 C语言--网络2011/2012
这个作业的地址 C博客作业00--顺序分支结构
这个作业的目标 初步认识C语法,掌握数据表达、printf、scanf语法及分支结构内容

0.展示PTA总分(0----2)


1.本章学习总结(4分)

1.1 学习内容总结(2分)

1.分支结构
单分支:if(表达式){语句;}
双分支:if(表达式){语句;} else{语句;}
多分支:if(表达式1){语句1;} else if(表达式2){语句2;} else if(表达式3){语句3;}

2.比较三个数的大小,使用暂时存储变量

#include<stdio.h>

int main()
{
	int num1, num2, num3, max;//逗号,(大/中/普通)括号,右端需有空白字符

	scanf("%d%d%d", &num1, &num2, &num3);

	if (num1 > num2)
	{
		max = num1;//为了代码可视性高,操作符需被空白字符包围
	}
	else

	{
		max = num2;
	}
	if (num3 > max)
	{
		max = num3;
	}
	printf("max=%d", max);

	return 0;
}

3.浮点数的比较,使用绝对值和精度比较判断大小 (注意区分浮点数和整数的绝对值写法)

4.switch语法,注意有大括号
switch(表达式)
{
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;

case 常量表达式n: 语句n;
default: 语句n+1;
}

srand(time(0)); //注释介绍用途
rand()%100;//

1.2 编程技巧总结(1分)

  • 求余运算符的用法
    求余运算符为“%”,在C语言中为双目运算符,且注意要求两个运算数都为整型的。求出的余数与被除数的符号相同。
    求余运算符用法
    1.1 循环中取倍数,如龟兔赛跑中,每隔10分钟回头
    1.2整数拆分,如求水仙花数,拆分个,十,百位
    1.3转圈问题,如已知今天是星期五,求n天后是星期几?使用%7来解决

  • 循环结束条件
    可使用标记变量flag
    ** 标记标量可以单独使用,在循环完成后检验某一条件是否变化,例如求小于等于n所有的素数
    ** 求输入单词的个数和单词所有字
    ** 标记标量也可以配合continue,在循环过程中检验某一条件是否变化,然后当做进入下一次循环的判断条件。

  • 调试的两种方式
    单步调试和造printf语句调试

  • 数值和字符型数据混合输入,scanf语句的构造
    scanf()在读取数字时则会跳过空格、制表符和换行符,在读取字符时则会吸收空格、制表符和换行符。
    故混合输入时,采用在字符性数据前添加一个空格的方法来解决
    原理:scanf遇到 回车(enter),空格,TAB 就会结束一次输入,空格不会接收
    并且, scanf在一次输入结束后,不会舍弃最后的回车符(即回车符会残留在数据缓冲区中)

#include <stdio.h>
int main(){
    char c1,c2;
    scanf("%c %c",&c1,&c2);   //这里有一个空格
    printf("%d %d\n",c1,c2);
 
    scanf("%c%c",&c1,&c2);  //这里没有空格
    printf("%d %d\n",c1,c2);
    return 0;
}

scanf(" %c",&c)前面这个空格(换成\n或者\t也可以),这样就把缓冲区中的回车当成第一个字符,读取后丢掉
可以很好理解scanf中 空格的作用:

空格( )即为读取一个结束字符然后丢掉,而普通的字符不受影响

  • 多分支语法
    C语言中常用的多分支语句有if语句和switch语句

  • 判断两个数是否相等
    整数和浮点数分别使用不同的求绝对值符号

  • 闰年的判断方法
    判断任意年份是否为闰年,需要满足以下条件中的任意一个:
    ① 该年份能被 4 整除同时不能被 100 整除;
    ② 该年份能被400整除。
    利用到求余运算符,在此过程中,又遇到逻辑运算符的优先级
    同一优先级的运算符,运算次序由结合方向所决定。
    简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

1.3 本章学习体会(1分)

学习感受:锻炼人的耐性,并且需要大量的积累经验,熟练度是必不可少的,而且有时候思维定势也很要命。
譬如,由于使用VS编译器,检查条件严格,便习惯性觉得在PTA不能过,最后询问学长后得知PTA的编译环境是devc++,才最终得以通过。
再比如,看错题目,在卡了很久的代码题后发现只是因为题意没有理解好就浪费了大量的时间。

计算这两周代码量
羞涩难以开口。。

2.PTA实验作业(6分)

介绍下面3个题目的做法。

2.1 前天是哪天

2.1.1 数据处理

数据表达:
年·月·日,用户输入,均为整型
数据处理:
根据题目要求进行条件分类
需要判断的条件有:

  1. 1,2号跨月
  2. 跨月跨大小月
  3. 1月跨年
  4. 2月天数判断平闰年

表达式:
day = day -2;
month = month -1;
year = year - 1;

流程结构:顺序结构+多分支结构,类似联动,三个数据变量最终取决于day

2.1.2 代码截图

2.1.3 PTA提交列表及说明

做这道题需要明确是哪一个数据变量带动其他数据变量在变化,同时最最基本的是题目不能看错,
最开始的前天,,一下手做成了昨天,即day=day-1。
第二次逻辑运算符的顺序不会,判断闰年的时候出错,
后面的错误出在数据处理的时候,只靠心算,没有动笔。
经验教训要对应纠正

2.2 自选一题,内容要和字符型数据处理有关的题目

2.2.1

三组数据,油的型号,服务类型,油的数量
分别用两个整型变量和一个字符型变量表示

2.2.2

2.2.3 PTA提交列表及说明


一开始错误出在,字符变量不会做判断,要记得使用单引号
后面的问题出在条理不够清洗器,小问题,逻辑方面要加强

2.3 自选一题,介绍单步调试如何检查错误

2.3.1 单步调试截图

单步调试 注意断点最好设定在scanf语句后,底部观察变量值的变化
其实还是不太会,单步调试对于大量的数据不敏感,需要加强数据敏感性,主动去分析数据

2.3.2 代码截图

2.3.3 PTA提交列表及说明

posted @ 2020-11-08 23:21  calizo  阅读(204)  评论(0编辑  收藏  举报