C语言程序设计第三次作业

一:改错题:
1、计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。
(错误1)
源程序:1242361-20171027140804633-736838866.png

错误信息:1242361-20171027140910242-557256501.png

错误原因:"y = 1 / x"后没有加";"
改正方法:在"y = 1 / x"后加上“;”

(错误2)
错误信息:
1242361-20171027141306023-1069344146.png

错误原因:if后面多加了“;”,导致else语句没有与之配对的if
改正方法:去掉if后面的“;”
(错误3)
错误信息:
1242361-20171027141745055-15008476.png

错误原因:else后面不能跟条件,除了"x=10"之外就是"x!=10",直接用else 即可。
改正方法;删去else后面的条件。
(错误4)
错误信息:
1242361-20171027142131836-1707563653.png

错误原因:引号外没有加","未把格式输出串与输出表列分开
改正方法:加上“,”
(错误5)
错误信息:
1242361-20171027143123070-1191452536.png

错误原因:在第七行的if语句中,所给比较条件“x == 10”被写成“x = 10”,缺少一个“=”导致条件运算符变为赋值运算符
改正方法:加上“=”
(错误6)
错误信息:
1242361-20171027143329367-1350867095.png

错误原因:通过检查发现,y 为 double类型,应该以 1.0的形式计算。
改正方法:将“y=1/x”改为“y=1.0/x”
(错误7)
错误信息:
1242361-20171027143707367-819177947.png

错误原因:引号里多了一个等号,并且后面缺少取地址符“&”
改正方法:去掉引号,加上取地址符。
(错误8)
错误信息:
1242361-20171027144102914-1238924040.png

错误原因及改正方法:与输入格式不符,去掉\n
(错误9)
错误信息:1242361-20171027145842601-1872197895.png

错误原因:反复检查发现,第十五行等号后面的是%.lf,而不是%.1f
改正方法:把%.lf改成%.f
正确程序:1242361-20171027150326773-231218639.png

二、学习总结

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,否则执行"else"后的语句,为"且"的条件。根据if else语句的配对原则,else应与第二个if配对,所以为了运算时不出现错误应该在每个if或else下加上{ }。

改正后如图:1242361-20171027151242398-281931766.png

2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
不能,因为对于所给格式,系统进行运算按照从左到右的顺序进行,同时在系统内部进行判断而不是表示区间,所以输出值只能是0或1,根据先后顺序,先判断-10
正确表达:1242361-20171027151757726-1857830656.png

3.C语言中输入数据时,如果遇到非法字符,则认为输入结束。运行程序(1),输入123a,看看输出结果是什么?你能解释是为什么吗?,
程序(1)

1242361-20171027152035351-254595995.png

结果:
1242361-20171027152054820-18957311.png

原因:程序定义的为整形变量,123是正确形式而a则属于非法字符,遇到非法字符,则认为输入结束。

scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。运行程序(2),分别输入123 45和123a,看看输出结果是什么?为什么?

程序(2)

1242361-20171027210533508-1613042513.png

输入程序123 45输出结果为

1242361-20171027210834351-1846016675.png

输入123a结果为

1242361-20171027210918711-569988490.png

原因分析:
因为scanf()函数的返回值是程序成功读入数据的个数,在第一次输入123 45时分别给a,b都赋值了,所以读入数据的个数为2,那么n的值也就是2.而在第二次输入123a时,因为a,b都为int类型而a是字符型,所以系统默认为非法类型,直接停止。也就是说只有a被赋上了123 b却没有值所以只是成功读入数据为1,那么n的值也就是1了,所以才出现了以上结果。

修改程序(1),当输入非法数据时,输出“Input error!".样例如下

修改后的程序:

1242361-20171027214400617-1347860583.png

4.对其他你认为需要进行总结的内容进行总结。
注意细节对C语言来说是非常重要的一点,有时一个符号就让你的程序无法运行,在这里比较常见的就是scanf里取地址符&,很多人容易把它忽略。还有就是if else语句的熟练应用。

(三)(实验总结)

1、计算分段函数

1242361-20171027215302945-1919554344.png

流程图:

1242361-20171027215347070-132095208.png

源代码:

1242361-20171027215610101-1168736114.png

测试数据及运行结果:

1242361-20171027215708383-560022900.png

实验分析

注意输入与输出均可为小数,所以应设成double类型。

2、算术入门之加减乘除
对于输入的两个整数,按照要求输出其和差积商。

流程图:

1242361-20171027220235695-339621336.png

源代码:

1242361-20171027220044430-1564409639.png

测试数据及运行结果

1242361-20171027220459555-198939463.png

实验分析

求商时注意小数的输出,正确运用if else语句。

3、输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√
​s(s−a)(s−b)(s−c)

​​ ,其中s=(a+b+c)/2。

流程图:

1242361-20171027220804289-1977751752.png

源代码:

1242361-20171027221026726-722994965.png

测试数据及运行结果

1242361-20171027221318820-1423196329.png

实验分析

本题使用了sqrt函数,所以头文件应加上<math.h>

4、出租车计价

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元

流程图:

1242361-20171027222019883-224672735.png

源代码:

1242361-20171027222155898-1612116696.png

测试数据及运行结果

1242361-20171027222242883-1832190353.png

1242361-20171027222311148-31799012.png

1242361-20171027222337367-1175473250.png

输入输出有小数,注意格式。

(四)(PTA提交列表)

1242361-20171027222623258-1072663281.png

1242361-20171027222640398-981568519.png

转载于:https://www.cnblogs.com/panjiupeng/p/7743793.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值