c博客作业01--顺序分支结构
0.展示PTA总分
![](https://img2018.cnblogs.com/blog/1772649/201910/1772649-20191005230152204-2059577986.png ''顺序'')
![](https://img2018.cnblogs.com/blog/1772649/201910/1772649-20191005230352627-437890695.png ''分支'')
1.本章学习总结
1.1 学习内容总结
1.运算符需注意的要点
- '/'的左右两边如果均为整型数,其结果也为整型;‘%’的左右两边只能为整型数;
- 优先级:逻辑运算符<关系运算符(判断是否相等的运算符比其他的关系运算符低)<算术运算符。
2.数据类型及其输入输出
数据类型:
- int(整型):输入时调用scanf()函数,格式控制说明为%d;输出时调用printf()函数,格式控制说明为%d;
- char(字符型):调用函数scanf()和printf()来输入输出字符,格式控制说明均为%c; 或者可以用getchar()来输入函数(一次只能读入一个字符),一般调用格式为:
ch=getchar()
,用putchar来输出函数(一次只能输出一个字符),一般调用格式为:putchar=(ch)
。 - float(单精度浮点型):调用函数scanf()和printf()来输入输出浮点数,格式控制说明均为%f;
- double(双精度浮点型):输入时调用scanf()函数,格式控制说明为%lf;输出时调用printf()函数,格式控制说明为%f;
- double和float的区别:
- 字节:float为4,double为8;
- 有效位数:float为8,double为16;
- 处理速度:float比double快;
- 数值范围:float:[-3.40E+38,+3.40E+38];double:[-1.79E+308,+1.79E+308]。
printf()函数的输出格式注意:
- 关于浮点数保留n位小数:printf("%.nf",x);
- 关于整数输出n位数,不够n位的往左补零:printf("%0nd",x);
- 指定整型的数据输出宽度为n(包括符号位),若实际位数小于n,往左(右)补空格,若大于等于n则按实际位数输出:printf("(-)%nd",x)。
3.常用数学函数(使用时需要加上头文件‘#include <math.h>’)
- 平方根函数sqrt(x):计算\(\sqrt{x}\);
- 绝对值函数fabs(x)和abs(x):计算|x|;
- 幂函数pow(x,n):计算\(x^n\);
- 指数函数exp(x):计算\(e^x\);
- 以e为底的对数函数log(x):计算lnx。
- 以上函数除了abs(x)的定义格式是整型的,其他都是double型的。
4.for语句
- 一般形式为:
for(表达式1;表达式2;表达式3)
循环体语句
5.分支结构
- 二分支结构:if else语句;
- 多分支语句:switch 语句、else if语句、嵌套的if-else语句;
- 三种语句的比较:else if语句和switch语句的逻辑结构比if else的嵌套语句更清晰,if else嵌套语句需要注意if和else的配套使用,容易出错,且运行效率较低;else if语句和switch
语句相比,switch语句的运行效率更高,但是switch的缺点是其表达式和常量表达式只能是字符型或者整型,而else if语句的表达式也可以是浮点型;
- 三种语句的比较:else if语句和switch语句的逻辑结构比if else的嵌套语句更清晰,if else嵌套语句需要注意if和else的配套使用,容易出错,且运行效率较低;else if语句和switch
6.课堂拓展:
随机数:
#include <stdio.h>
#include <stdlib.h> //是存放rand()和srand()的头文件;
#include <time.h> //是存放time(0)的头文件;
int main()
{
srand(time(0)); //生成随机种子,产生不同随机数,time(0)是返回从1970年1月1日0时0分0秒到目前为止经过的时间,单位为秒,这边用来初始化srand的起始值;
int x=rand()%100; //生成范围为[1,99]的随机数;
printf("%d",x)"
return 0;
}
1.2 本章学习体会
- 即使暑假有提前接触C语言,可是感觉学起来还是有点吃力,意识到是课后没有总结到位,无法融汇贯通,已经买好了笔记本,希望以后课后把笔记和需要注意的地方记在本子上;
- 在刷pta时感觉到逻辑思维方面还是不够好,经常思维紊乱。但是在刷题的过程中,逐渐开始找到一种乐趣,卡了很久的题目突然写出来的那一刻的开心喜悦是无法用言语来形容的!!
- 这两周的代码量为1126(距自己定的目标还差274行)代码练习还是不够!!
2.PTA实验作业
2.1计算天数 (15 分)
2.1.1 数据处理
- 数据表达:
- int year; 储存年份;
- int month;储存月份;
- int day;储存日期;
- int all;储存总天数;
- 数据处理:
运用了else if语句,将每一个月的天数自己累加起来;用月份来进行判断应该进入哪个分支。先按不是闰年的计算,最后判断是否为闰年和是否为闰年过2月再决定是否加1;
2.1.2 代码截图
2.1.3 本题可扩展功能
可以用switch语句合理运用break,可以简便很多运算,提高运行效率。
2.1.4 PTA提交列表及说明
- Q1:编译错误
- A1:这就是不用编译器写代码的下场....
- Q2:不知道判如何断闰年
- A2:闰年就是能被4整除不被100整除和能被400整除的数;
- Q1:什么时候要加1;
- A2:年份为闰年而且要过2月.
2.2简单计算器 (20 分)
2.2.1 数据处理
- 数据表达:
- int number; 储存用户输入的数;
- int all = 0; 储存计算结果;
- char symbol; 储存用户输入的运算符;
- int judge = 1; 判断是否要输出结果,为1时输出结果,为0时则不输出;
- 数据处理:
- 首先读入一个数字和一个运算符,先进入whlie循环;
- 根据用户输入的运算符进入switch语句进行选择运算;
- 如果中途遇到用户输入错误,对judge进行改值,在最后判断judge的值来决定要不要输出结果;
2.2.2 代码截图
2.2.3 本题可扩展功能
要求考虑四则运算符的优先级 (感觉这样拓展有点变态)
2.2.4 PTA提交列表及说明
- Q1:要如何避免用户输入错误时输出all的结果?
- A1:设置变量judge=1,在用户输入错误时改变judge的值,最后在输出all的结果时判断一下judge的值来决定是否输出all;
2.3任务06-02-01 于龙遇见日期,又哭了! (10 分)
2.3.1 数据处理
- 数据表达:
- int X; 储存用户输入的第一个数;
- int Y; 储存用户输入的第二个数;
- int Z; 储存用户输入的第三个数;
- char symbol1; 读取用户输入的第一个字符;
- char symbol2; 读取用户输入的第二个字符
- int year; 储存年份;
- int month; 储存月份;
- int day; 储存日期;
- 数据处理:
先判断X,Y,Z的值是否都大于12,如果是,则数据不合法。再判断X,Y,Z中最大的数,赋值给year。比较剩下两个数,如果有一个大于12,则赋值给日期,如果没有则按顺序赋值给月份,日期。再按month的值来判断,day是否超过天数;
2.3.2 代码截图
2.3.3 本题可扩展功能
对于我现在的水平来说,这已经是一道很优秀的题目了。(太难了我QAQ)
2.3.4 PTA提交列表及说明
- Q1:刚开始测试点12@12#12一直运行错误
- A1:在刚开始对X,Y,Z大小判断时,没有考虑到相等的情况,加上等号后就可以了;
- Q2:日期不合法的测试点过不了;
- A2: 只考虑到X,Y,Z大于31不合法,其实应该是三个数都大于12就不合法了,如果是大于31,某些测试点例如13.14.15就过不了;
3.阅读代码
- 3.1功能
- 对间谍输入的字符,按第一行输入的行列数进行螺旋输出,然后每个字符-7,得到间谍的信息;
- 3.2思路
- 用数组char a[20] [20]来保存字符,设置变量isRow,改变其命题的真假来进入输出数组某一行或者某一列列的分支;设置变量isOrder,改变其命题的真假来进入要正序输出数据的某一行(列),还是倒序输出。再利用循环遍历输出数组。
- 3.2优点
1.运用二维数组保存各个字符,不需要申请多个变量储存字符,减少了代码量;
2.巧妙设置两个变量isRow和isOrder,每进行完一次循环就对其命题进行取反,以此进入不同分支来输出字符;
3.用一个循环条件while (scanf("%d %d", &r, &c), r && c)
来判断用户输入的r和c是否正确,以此来判断是否进入循环,如果输入错误则不进入循环直接退出程序,如果直接用scanf()函数来输入,用户输入错误时,程序依旧会运行,可能导致程序崩溃;
c博客作业01--顺序分支结构的更多相关文章
- c博客作业01——顺序 分支结构
本章学习总结 1.1 学习内容总结 ·学习switch分支的使用,switch后加括号(),括号内填一个变量或字符 如 switch (a) { case 2: case 3: default: } ...
- C博客作业00--顺序分支结构
这个作业属于哪个班级 C语言--网络2011/2012 这个作业的地址 C博客作业00--顺序分支结构 这个作业的目标 初步认识C语法,掌握数据表达.printf.scanf语法及分支结构内容 0.展 ...
- C博客作业01——分支,顺序结构
C博客作业01--分支,顺序结构 0.展示PTA总分 1本章学习内容 1.1学习内容总结 1)格式化输出函数printf(),scanf(). 它是什么? 对于初学者而言,一开始了解接触它们,只是被硬 ...
- C语言I博客作业01
C语言I博客作业01 作业1 这个作业属于哪个课程? C语言程序设计I 这个作业要求在哪里? https://edu.cnblogs.com/campus/zswxy/CST2019-2/homewo ...
- C博客作业01——分支、顺序结构
1.本章学习总结 1.1思维导图 本章学习体会及代码量学习体会 1.2.1学习体会 在暑假的时候就有加入新生学习群,对C语言有一定的基础,所以这周的学习相对轻松,但一些细节方面的知识并不是很了解.在这 ...
- c语言博客作业01—分支、顺序结构
1.本章学习总结 1.1 思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 这周 对c语言的学习 明显与其他同学相比较有些滞后,觉得很大原因是暑假没有看教学视频,课前没有预习课本 ...
- C博客01--顺序、分支结构
1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 经过一周的初步学习,对C语言我有了一定的认识,也体验到了代码的乐趣,这应该为我以后的学习开了一个好头.在 ...
- C语言l博客作业01
2.1 你对软件工程专业或者计算机科学与技术专业了解是怎样?(2分) 计算机科学与技术是国家一级学科,下设信息安全,软件工程,计算机软件与理论等专业,主要培养符合教育部门实际需要的计算机教学及应用管理 ...
- C语言II博客作业01
这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-4 这个作业要求在哪里 https://edu.cnblogs.com/campus/zs ...
随机推荐
- # - net - cannot access a disposed object r nobject name filebufferingreadstream
.Net Core 2.1-Cannot access a disposed object.Object name: 'IServiceProvider' (3) I just migrated .N ...
- 如何在ArcGIS饼状图中下方添加文字
内容源自:ArcGIS10.2基础教程(丁华) 书上要求在统计图的饼状图下方显示“总面积组成”,以及图例是只显示文字. 该如何操作呢? 其实就是在高级属性中选择标题-副标题-显示“总面积组成”即可 而 ...
- 使用NODEJS实现JSONP的实例
JSONP与JSON只有一字之差,我们在使用Jquery的Ajax调用的时候也是使用相同的方法来调用,两者的区别几乎只在于使用的dataType这个属性的不同.但是实际上JSON和JSONP是完全不同 ...
- Linux生产环境上,最常用的一套“AWK“技巧【转】
最有用系列: <Linux生产环境上,最常用的一套“vim“技巧> <Linux生产环境上,最常用的一套“Sed“技巧> <Linux生产环境上,最常用的一套“AWK“技 ...
- Dockerfile构建jar镜像
dockerDockerfilejar包docker-compose 一.安装docker和compose 二.准备jar包 三.编写配置文件 1. Dockerfile 2. docker-comp ...
- python-tyoira基本
目录 .Typora安装 我们在之前的时候记录笔记就是使用word和记事本,但是从今天开始我们要更换软件,记录笔记使用Typora软件,为什么要使用Typora的软件呢,是因为我们程序员不只是写代码这 ...
- Function.prototype.apply.call 理解分析
首先需要了解apply,call的基本用法,其目的是改变调用方法中的this指向,将其指向为传入的对象,改变this的指向,两种方法接收参数的方式不同. 代码:console.log var cons ...
- Nginx配置SSL实现HTTPS访问
nginx配置文件如下: server { listen 443 ssl; server_name www.domain.com; root /www/web; index index.html in ...
- Navicat导出数据库设计文档
前言:仅支持单表导出 导出sql: SELECT TABLE_NAME 表名, COLUMN_NAME 列名, COLUMN_TYPE 数据类型, COLUMN_KEY 主键, IF(IS_NULLA ...
- PEP 8016-Python之父重回决策层
PEP 8016-Python之父重回决策层 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 去年,技术社区里还发生了一件大事:Linux 之父 Linus Torvalds 宣 ...