(一)改错题

计算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)的更多相关文章

  1. C语言程序设计第三次作业--选择结构(1)

    Deadline: 2017-10-29 22:00 一.学习要点 掌握关系运算符和关系表达式 掌握如何判断两个实数相等 掌握常用数学函数的使用 掌握逻辑运算符和逻辑表达式 理解逻辑运算的短路特性 掌 ...

  2. C语言程序设计第三次作业——选择结构(1)

    一.改错题 1.题目计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 源程序(有错误的程序): #include <stdio.h> int main ...

  3. C语言程序设计第三次作业——选择结构(一)

    (一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...

  4. C语言程序设计第四次作业——选择结构(2)

    Deadline: 2017-11-5 22:00 一.学习要点 掌握switch语句 掌握字符常量.字符串常量和字符变量 掌握字符型数据的输入输出 二.实验内容 完成PTA中选择结构(2)的所有题目 ...

  5. C语言程序设计第四次作业--选择结构(2)

    (一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...

  6. C语言程序设计第四次作业-选择结构

    (一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...

  7. C语言程序设计第四次作业——选择结构(二)

    (一)改错题 错误信息: 错误原因:第13行sqrt数学函数缺少")",导致编译器无法将括号正确配对 改正方法:补齐缺少的")" 错误信息: 错误原因:if语句 ...

  8. C语言程序设计第六次作业——循环结构(2)

    C语言程序设计第六次作业--循环结构(2) 之前的博客园图片没处理好,对大家说一声抱歉.希望大家能够多多指出我的错误,我来认真修改 ^ - ^ !. (1)改错题 序列求和:输入一个正实数eps,计算 ...

  9. C语言程序设计第五次作业——循环结构(1)

    一.改错题 1.题目 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下:c = 5×( ...

随机推荐

  1. css3动画transition详解2

    transition主要包含四个属性值:执行变换的属性:transition-property,变换延续的时间:transition-duration,在延续时间段,变换的速率变化transition ...

  2. JAVA版exe可执行加密软件

    1.现在eclipse(myeclipse)中插入以下代码 1.1 MainForm package cee.hui.myfile; import javax.swing.*; import java ...

  3. ELK学习总结(2-5)elk的版本控制

    ----------------------------------------------------------------- 1.悲观锁和乐观锁 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据 ...

  4. MySQL命令(逐步更新ing)

     启动mysql 开启: /etc/init.d/mysqld start关闭: /etc/init.d/mysqld stop重启: /etc/init.d/mysqld restart   查看m ...

  5. ejs注释问题

    项目中遇到一个问题: 代码如下: 但是代码如下时,却不会出现bug: bug的导火索是ejs的注释: 因为我没有用对注释,所以被注释部分的if语句仍旧生效了. bug的根本原因是没有对mod类型进行判 ...

  6. Hibernat 原生SQL运行结果集处理方法

    hibernate对原生SQL查询执行的控制是通过SQLQuery接口进行的. Session.createSQLQuery(); 使用list()方法可以把Session.createSQLQuer ...

  7. [Luogu1342] 请柬 - 最短路模板

    Description 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被 ...

  8. Python scrapy框架

    Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...

  9. Hibernate(七):*.hbm.xml配置文件中Set三个属性

    背景: 在上一篇文章中实现双向关联时,其中在Customer.java中我们使用了java.util.List<Order>来关联多的Order.其实还有另外一种实现方法:使用java.u ...

  10. MyBatis(三):数据库查询结果不为空,但是使用MyBatis框架查询为空问题

    1.这个问题主要和返回字段是否和实体类javabean中的字段是否一致导致的问题. 解决方案: sql语句 : select account_id as "accountId" a ...