C语言程序设计第三次作业 —— 选择结构(1)
(一)改错题
计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。
(错误一)

错误原因及改正:第九行语句结尾缺少半角分号,添加分号即可改正
(错误二)

错误原因及改正:第七行if语句末尾加了分号,导致else语句没有配对的if,删去if语句后的分号即可
(错误三)

错误原因及改正:else语句后面不能加条件,删除即可
(错误四)

错误原因及改正:printf语句中格式化输出语句与变量之间缺少逗号,增加即可
(错误五)

错误原因及改正:scanf语句中,百分号前等号多余,删除
(错误六)

错误原因及改正:scanf语句中,未添加取地址符
(错误七)


错误原因及改正:if语句中,等于的表示需要同时用两个等号
(错误八)

错误原因及改正:printf语句中,保留小数表达错误,改为%.1f
(二)学习总结
1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。
本题所给的这段代码"if(a)if(b) x=x+1;else y=y+1"的含义是:在同时满足a和b的情况下,才会执行x=x+1语句,否则就会执行y=y+1语句。为且条件,符号用&&表示;根据if else的就近配对原则,代码段里的else是和后一个if配对;用规范的格式表示这段代码,如下图:

2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
C语言的表达式 (-10< x <10)不能够表达x在区间(-10,10),因为在C语言里面,逻辑运算符的运行顺序是从左至右的顺序,而 (-10< x <10)这种形式,-10会与输入的数据比较,输出正确与否,即0或1。正确的表达式如下:
(x >-10 && x < 10);
3.C语言中输入数据时,如果遇到非法字符,则认为输入结束。运行程序(1),输入123a,看看输出结果是什么?你能解释是为什么吗?
程序(一)
#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
答:输入123a,运行结果,如图:

输入a,没有定义字符型所以系统默认遇到非法字符,则认为输入结束。于是a=输出123,而b随意给一值=1.
在a后继续输入数字 如图

scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。运行程序(2),分别输入123 45和123a,看看输出结果是什么?为什么?
程序(二)
#include <stdio.h>
int main()
{
int a, b,n;
n = scanf("%d %d", &a, &b);
printf("n = %d\n", n);
return 0;
}
分别输入123 45和123a 运行结果如图:


再输入123a的时候,因为含有a这一非法数据,系统默认终止输入,所以无论后面输入多少数据,都不会读入,即无效
修改程序(1),当输入非法数据时,输出“Input error!".样例如下:
修改的程序如下:
#include <stdio.h>
int main()
{
int a, b,n;
scanf("%d %d", &a, &b);
if(a == 2)
{
printf("a = %d, b = %d\n", a, b);
}
else
{
printf("Input error!");
}
return 0;
}
4.对其他你认为需要进行总结的内容进行总结。
首先,第一点,运用if和else语句的时候,一定要考虑配对问题,一定要对应好,否则编译就会出现错误,多个if和else的程序中if和else的对应很容易出错,还有就是if和else的就近原则,else是和离它最近的if对应的。还要记得编写程序的时候if语句不是一个完整的语句,所以后面不能加分号,同样else语句后面不能够加括号,而else if可以加括号。所以,细节方面的一定要记清楚,可能一点小小的错误,就会导致整个程序无法进行。还有就是我们编写的时候要懂得变通,一条路行不通的时候,就应该停下来想一想自己是不是错了,重新换一条路子。
(三)实验总结
1.计算函数值
(1)题目
要求计算下列分段函数f(x)的值:

(2)流程图

(3)源代码

(4)测试数据及运行结果


(5)实验分析
问题及解决办法:本题写作顺利,设置程序框图也未遇到问题。
2.算数问题
(1)题目
算术入门之加减乘除,对于输入的两个整数,按照要求输出其和差积商。
(2)流程图

(3)源代码

(4)测试数据及运行结果


(5)实验分析
问题及解决办法:因为对ab定义的为整形变量,所以除法计算时结果出现错误,将整型变量强制转换为double型,解决了问题。
3.输出三角形面积和周长
(1)题目
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
(2)流程图

(3)源代码

(4)测试数据及运行结果


(5)实验分析
问题及解决办法:输出结果不对,因为本题涉及很多除法及开方运算,所以会出现很多浮点数,将整形定义为double型解决了问题
4.出租车计价
(1)题目
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
(2)流程图

(3)源代码


(4)测试数据及运行结果



(5)实验分析
问题及解决办法:时间收费与里程收费的结合遇到问题,和同学讨论后解决
(四) pta提交列表




C语言程序设计第三次作业 —— 选择结构(1)的更多相关文章
- C语言程序设计第三次作业--选择结构(1)
Deadline: 2017-10-29 22:00 一.学习要点 掌握关系运算符和关系表达式 掌握如何判断两个实数相等 掌握常用数学函数的使用 掌握逻辑运算符和逻辑表达式 理解逻辑运算的短路特性 掌 ...
- C语言程序设计第三次作业——选择结构(1)
一.改错题 1.题目计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 源程序(有错误的程序): #include <stdio.h> int main ...
- C语言程序设计第三次作业——选择结构(一)
(一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...
- C语言程序设计第四次作业——选择结构(2)
Deadline: 2017-11-5 22:00 一.学习要点 掌握switch语句 掌握字符常量.字符串常量和字符变量 掌握字符型数据的输入输出 二.实验内容 完成PTA中选择结构(2)的所有题目 ...
- C语言程序设计第四次作业--选择结构(2)
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- C语言程序设计第四次作业-选择结构
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- C语言程序设计第四次作业——选择结构(二)
(一)改错题 错误信息: 错误原因:第13行sqrt数学函数缺少")",导致编译器无法将括号正确配对 改正方法:补齐缺少的")" 错误信息: 错误原因:if语句 ...
- C语言程序设计第六次作业——循环结构(2)
C语言程序设计第六次作业--循环结构(2) 之前的博客园图片没处理好,对大家说一声抱歉.希望大家能够多多指出我的错误,我来认真修改 ^ - ^ !. (1)改错题 序列求和:输入一个正实数eps,计算 ...
- C语言程序设计第五次作业——循环结构(1)
一.改错题 1.题目 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下:c = 5×( ...
随机推荐
- js定时刷新页面.
//页面定时刷新.2017.09.27 $(document).ready(function () { self.setInterval(function () { var d = new Date( ...
- IdentityServer4实战 - 基于角色的权限控制及Claim详解
一.前言 大家好,许久没有更新博客了,最近从重庆来到了成都,换了个工作环境,前面都比较忙没有什么时间,这次趁着清明假期有时间,又可以分享一些知识给大家.在QQ群里有许多人都问过IdentityServ ...
- STM32读取温湿度传感器DHT11和DHT21(AM2301)系列问题
1.DHT11和DHT21传感器 这两种传感器都是奥松公司的产品,具体的传感器说明书在其官网上有(www.aosong.com). DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合 ...
- Zookeeper分布式服务协调组件
1.简介 Zookeeper是一个分布式服务协调组件,是Hadoop.Hbase.Kafka的重要组件,它是一个为分布式应用提供一致性服务的组件. Zookeeper的目标就是封装好复杂易出错的服 ...
- 基于Verilog HDL的超前进位全加器设计
通常我们所使用的加法器一般是串行进位,将从输入的ci逐位进位地传递到最高位的进位输出co,由于电路是有延迟的,这样的长途旅行是需要时间的,所以为了加快加法器的运算,引入了超前进位全加器. 全加器的两个 ...
- SpringBoot(七):集成DataSource 与 Druid监控配置
绑定DataSource:Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource,Druid是Java语言中最好的数据库连接池,并且能够提供 ...
- 控件篇:CheckedListBox的全选与反选
private void cbXmlAll_CheckedChanged(object sender, EventArgs e) { for (int i = 0; i < cblXmlList ...
- ASP.NET CORE系列【五】webapi整理以及RESTful风格化
介绍 什么是RESTful? 这里不多做赘述,详情请百度! 哈哈,本来还想巴拉巴拉介绍一些webapi, RESTful的, 还是算了,咱们直接上干货!(原因是懒!哈哈) 使用 以前使用过mvc的人 ...
- scala求交集、并集、差集命令
交集 scala> Set(1,2,3) & Set(2,4)res1: scala.collection.immutable.Set[Int] = Set(2) 并集 scala> ...
- 基于vue2.0的一个系统
前言 这是一个用vue做的单页面管理系统,这里只是介绍架子搭建思路 前端架构 沿用Vue全家桶系列开发,主要技术栈:vue2.x+vue-router+vuex+element-ui1.x+axios ...