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

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

(一).改错题

1.计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。

     输入输出样例1:

   Enterr x: 10.0
   f(10.0) = 0.1
输入输出样例2:
   Enter x: 234
   f(234.0) = 234.0,源程序如图:

对源程序进行编译

发现错误,在第9行的式子后面少了" ; ",格式错误,
经改正,将“ ; ”填上,继续进行编译:

发现错误在第11行中else后面不应该加条件,格式错误,
经改正,将(想!=10),去掉,进行编译:

发现错误,源程序在if后面加上了“ ; ”,导致else没有和其配对的if,格式错误,
经改正,将“ ;”去掉,进行编译:

发现错误,在第15行中缺少了标点“ ,”,格式错误,
经改正,将“ ,”填上,运行编译:

没有错误,运行得:

发现得到的答案与应得答案不符,经检查发现源程序中第15行中的“%.1f”写成了“%.lf”,
经改正,编译运行:

发现输入值为10时正确,但当其不为10时错误,在第6行中“%f应该为“%lf”,第7行中的条件x=10应表示为x==10;

经改正后编译运行正确

(二)学习总结

1.

上图的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?

含义:判断条件是否为a和b,是则x=x+1,否则执行y=y+1;这个else应该和第2个if配对;if应该和与它上面相近的else配对。

            正确的表达应为:

2..C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?

不能表达,因为在计算机的2进制中只有1和0,如按照(-10<x<10)进行计算,无论输入什么值,都会显示在这个区间内,并按照该条件下面的语句进行;正确的书写应该为(x>-10&&x<10).

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

程序(1)

运行结果为:

因为在定义是只是定义了整型变量a,b,并没有定义字符变量,而在输入时却出现了字符。导致出现非法字符,程序还会默认输入完成而停止,使出现了b=1,如果想要输出字符a的话源程序应该为:

此时再进行输入,可以输出“b=a”,如图:

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

程序(2)

运行结果为:

由题可知该函数的返回值是成功读入数据的个数。源程序中定义的a,b均为整型,scanf中的输入符号也为整型的,所以123 45 时,返回值为2; 而当输入值变为123a是出现了非法字符,导致程序无法正常读取数据,输出的返回值变为1.

(3)修改程序(1),当输入非法数据时,输出“Input error!"

(4)对其他你认为需要进行总结的内容进行总结。

对于这章中的知识,我认为还需要记住运算符号的正确使用,如等号在C语言中的使用,当出现一个“=”是表示将等号右边的值付给左边的变量,而且左边的不可以为式子,当要表示两个量相等时应该输入“==”,还应该注意各个计算符号之间的运算先后顺序;还有就是我自己经常会犯的错误,再输入是缺少符号" & ",如果忘记输入的话程序虽然不会被检查出错误,但当输出时是无法输出的,一定不要忘记该加上的符号。

三.实验总结

1.计算分段函数

(1)题目:输入在一行中给出实数x,在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。

(2)流程图:

(3)源代码:

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

结果和预期相符。
#######(5)实验分析
该题的难度并不大,只是应该注意x与resurt均为double类型的变量,不可以定义成int类型的,还有要注意else后面不可以加任何条件。

2.算术入门之加减乘除

(1)题目:在一行内输入两个不超过100的非负整数a和b,中间以一个空格间隔,且保证b不为0。并且:如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为带两位小数的格式。

(2)流程图:

(3)源代码:

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

结果和预期相符。
#######(5)实验分析
本题中应注意的还是要求的输出格式问题,还有前面提到的如果a能够被b整除,那么a/b应输出为整数格式,否则a/b输出为带两位小数的格式。注意整除问题,考虑问题要全面。

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

(1)题目:本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。

(2)流程图:

(3)源代码:

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

结果和预期相符。
#######(5)实验分析
本题输出是要求保留两位小数,所以应该将面积,周长定义为double类型,同时在输出是应该为“%.2f”,保证无论结果是否为小数都会按题中的要求输出。还有就是本题中用到了“sqrt”,所以应该加上#include <math.h>,表示使用数学运算字符。

(4)出租车计价

(1)题目:

(2)流程图:

(3)源代码:

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

结果和预期相符。

#######(5)实验分析。
本题解决前应该先理清楚相应的关系,先按照数学方法进行简单的计算,弄清楚该用什么样的式子去算,在编写成C语言,注意题目中要求的保留小数位数,四舍五入等约束条件,还有“=”与“==”的区别运用。题中的“营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)”不会受到行使里程的限制,应注意。

四.PTA提交列表

posted on 2017-10-25 11:28  风离你在  阅读(2963)  评论(0编辑  收藏  举报

导航