C语言第三次作业

(一).改错题

计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值

发现错误,如图:


源代码中没有分号,添加后,编译,如图:

发现源代码中if语句后加了分号,去掉后,编译,如图:

发现源代码中else语句多出if语句,去掉后,编译,如图:

源代码中输出语句错误,改正后,编译,如图:

正确,运行结果如图:

发现结果不符合期望,将源代码中输出语句“%.lf”改成“%.1f”,将“\n”去掉,编译并运行,如图:


发现样例2输出错误,将源代码中输入语句“=%f”改成“%lf”,编译运行如图:

发现结果还是错误,检查源代码,将输入语句中加上“&”,编译运行如图:


符合期望;改正后源代码:

(二).学习总结

1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?

答:确切含义应该是判断a和b,若成立,则运算“x=x+1”;若不成立,则运算“y=y+1”。其中else应该和第二个

if配对;如要明确表达,则应该在每个if和else语句后加花括号“{}”,说明,如图:

2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?

答:很明显不能,因为c语言中判断是从左往右的,即“true,false”;当输入此判断式时,“-10<x”为“1”,则

“x<10”就表示为“1<10”,总满足判断。正确的表达式应该如图:

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

答:(1)输入源代码,编译无错误,运行结果如图:


发现b输出错误,综合原因发现输入“123a”时“a”是非法字符,使程序自动结束;因此,当输入“123 123”时,系统会输出正确结果。

(2)输入源代码,编译运行,结果如图:



由所给信息得,该函数的返回值为成功读取变量的个数。在该程序中,a,b均为整型变量,在scanf中,对应的格式化输入符号也为整型,
所以在输入“123 123”,即均为整型时,均为合法数据,因此被读入,返回值为2.而输入“123a”,其中包含了非法数据“c”,结合上题,
可以得知输入被终止,所以只将123赋给了a,b未能成功被赋值,所以返回值是1。

(3)修改程序1,源代码如图:

4.其他总结

答:对本章的学习,要注意的是运算符的优先级关系,不理解很难不混淆,尤其是“==”和“=”的区别;还要注意软件测试时的相关要点。

不要过于想当然,逻辑运算错误可能会付出巨大代价。对自己来说,这章节的学习还是可以的,上课都很认真的在记,错误比以前少了很多,
继续保持下去,相信会有更好的效果。

(三).实验总结

1.计算分段函数

(1)流程图:


(2)源代码:

(3)测试数据及运行结果:


(4)实验分析:
本题未遇到问题,此题较基础。

2.算术入门之加减乘除

(1)流程图:


(2)源代码:

(3)测试数据及运行结果:


(4)实验分析:
输入源代码时没有读懂题意,之后才明白;

3.输出三角形面积和周长

(1)流程图:


(2)源代码:

(3)测试数据及运行结果:


(4)实验分析:
问题:提示正常三角形错误;
错误:if判断句缺少条件;
改正:将"b+c>a"补充后正确;

4.出租车计价

(1)流程图:


(2)源代码:


(3)测试数据及运行结果:



(4)实验分析:
问题:不能输出答案
错误:没有加“#include <math.h>”
改正:补充后,可正常进行程序;

(四).提交列表

由于错太多,重新提交一遍,所以有连续正确的情况;

posted @ 2017-10-26 16:26  郭玉霖  阅读(394)  评论(0编辑  收藏  举报