(一)改错题

计算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. 集合Collection总览

    前言 声明,本文使用的是JDK1.8 从今天开始正式去学习Java基础中最重要的东西--->集合 无论在开发中,在面试中这个知识点都是非常非常重要的,因此,我在此花费的时间也是很多,得参阅挺多的 ...

  2. python RE模块的使用

    摘要: re模块包括操作正则表达式的函数,一些工作中都需要用到,现在说明下使用方法. 使用说明: 一,re模块下的函数:            函数             描述 compile(pa ...

  3. SpringCloud应用入库后乱码问题

    一.现象 1.请求 2.入库后 二.解决过程 1.配置application.properties 2.代码配置 3.数据库(关键!!) 3.请求 三.验证过程 1.win10 - 本地验证通过 2. ...

  4. 京东2019春招Java工程师编程题题解

    生成回文串 题目描述 对于一个字符串,从前开始读和从后开始读是一样的,我们就称这个字符串是回文串. 例如"ABCBA","AA","A"是回 ...

  5. JSON(一)——JSON与JavaScript的关系

    JSON是一种轻量级的数据交换格式,全称--JavaScript 对象表示法(JavaScript Object Notation). 类比XML,你可以把JSON看作是一种存储数据的格式类型,一种数 ...

  6. js中的caller属性和callee属性

    应该用"属性"来称呼caller和callee,而不是方法. caller:返回调用当前函数的函数的引用.a调用b,则返回a(a是boss,因为a把b叫过去干活了): callee ...

  7. windows server 2016远程桌面进去,英文系统修改语言

    由于我这边已经是改好了,以下截图来自中文版. 这边选了中文,然后点options. 选择:使该语言成为主要语言,保存. 会提示需要退出登录. 过一会重新登录,ok.

  8. golang微信公众号请求获取信息

    初次用golang在公众号中获取信息,记录一下 看了下文档,粗略的写了个demo,如下: func HttpGet(c*gin.Context) { var param GetType if er:= ...

  9. Web 项目报错No suitable driver found for jdbc:mysql://localhost:3306/book 的一个解决办法

    确认jar包加入到了build path中,然后注意版本是否与数据库相配,还要留意将jar包放入WEB-INF下的lib文件夹中

  10. python/socket编程之粘包

    python/socket编程之粘包 粘包 只有TCP有粘包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提 ...