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>”
改正:补充后,可正常进行程序;