(一)改错题

计算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. C#中的函数式编程:递归与纯函数(二)

    在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential transparency)来定义的.如果一个 ...

  2. JAVA_SE基础——62.String类的构造方法

    下面我先列出初学者目前用到的构造方法 String 的构造方法:     String()  创建一个空内容 的字符串对象.   String(byte[] bytes)  使用一个字节数组构建一个字 ...

  3. Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题

        webservice 代码 /// <summary> /// MESService 的摘要说明 /// </summary> [WebService(Namespac ...

  4. 以太坊挖矿源码:clique算法

    上文我们总结了以太坊最主要的共识算法:ethash算法,本文将重点分析以太坊的另一个共识算法:clique. 关键字:clique,共识算法,puppeth,以太坊地址原理,区块校验,认证结点,POA ...

  5. Bootstrap 栅格系统简单整理

    Bootstrap内置了一套响应式.移动设备优先的流式栅格系统,随着屏幕设备或视口(viewport)尺寸的增加,系统会自动分为最多12列. 总结一下我近期的学习Bootstrap的一些理解: 一.. ...

  6. bugfree,CDbConnection 无法开启数据库连线: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '192.168.0.99' (4)

    安装bugfree后,访问报错:CDbConnection 无法开启数据库连线: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '19 ...

  7. Python之匿名函数

    匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数. #这段代码 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lam ...

  8. centos系统php5.6版本安装gd扩展库

    由于项目需要显示验证码登录系统,所以这里需要开启php的gd扩展 这边提供安装php5.6的yum方法扩展自选.# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fe ...

  9. C#的扩展方法简介

    顾名思义,这是一种可以扩展C#类的操作,MSDN上的说法是: "扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.&quo ...

  10. python制作一个简单的中奖系统

    注释: 展示图下的代码,我是用pycharm写的,是python解释器中的一种,本课没不同解释器的要求,可根据自己喜欢的解释器编写. 步骤: 本期给大家带来的是,一个简单的中奖系统,首先打开自己电脑上 ...