C语言第三次作业

(一)改错题

计算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

   1.错误信息:

  错误原因:上一行没有加分号;
  改正方法:在y=1/x后面加一个分号;
  2.错误信息:

  错误原因:if后面有分号,不符合语句
  改正方法:把if后面的分号删掉
3.错误信息:

  错误原因:else后面不跟条件,else if后面才有条件
  改正方法:把else后面的条件去掉
  4.错误信息:

  错误原因:printf语句里面双引号后面缺少逗号
  改正方法:早x y前面加逗号
5.错误信息:

  错误原因:scanf语句中后面缺少取地址符&
  改正方法:在scanf语句中x前面加上取地址符&
  6.错误信息:

  错误原因:scanf语句中多了一个=,if语句中x=10意为x取值为10,应该为x10
  改正方法:把x=10改为x
10,去掉scanf中的=
  7.错误信息:

  错误原因:输出格式与题目要求的数个格式不符
  改正方法:去掉scanf中的\n转行
  8.错误信息:

  错误原因:由于定义的是double型,所以应该改为%f错误,导致输出f(x)里面x=0.00
  改正方法:把%f改为%lf
9. 错误信息:

   错误原因:由于保留一位小数%.2f错误,%.lf错误
   改正方法:把%.2f改为%.1f,把%.lf改为%.1f

(二)学习总结

1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。

答:表示的是如果a b都对,那就输出x=x+1,如果错误那就输出y=y+1。else和离他最近的if配对
代码如下:

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

答:不能,因为-10<x如果为真那输出为1,1<10为真输出不1,显然不符合结果要求。正确表达式为(x>-10&&x<10)

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

输入123a后结果为:

原因:遇到非法字符%d不能识别,所以输出结果错误,有问题,123a为一个数据,相当于b没有输入数据,所以输出为随机数1。

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

结果如下:

因为当你成功输入两个变量的时候第一次两个变量都合法,所以n读出为2。当你输入123a的时候含有非法字符,它不能读取出来,所以n只能读出一个整形常量,所以n=1。

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

经过程序2的经验发现当有非法字符的时候n会输出1,正常情况下n会输出2 ,所以利用这个原因得出程序,结果如下:

5.对其他你认为需要进行总结的内容进行总结。

我认为在编辑程序的过程中一定不能忘记上下级的关系,还有if和else的对应,多个if和else的程序中if和else的对应很容易出错,else是和离它最近的if对应的,if语句后面没有分号,else后面没有条件,如果要加条件的话就是else if,还有赋值的是=,而等于是==,这种问题也很常见和容易犯错误。关于double和float和int的字符一定要对应好,%f和%d。

(三)实验总结

1.(1)题目

本题目要求计算下列分段函数f(x)的值:

注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。

(2)流程图

(3)源代码

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

(5)实验分析
问题1:保留两位小数用的%.2d
原因:没有看清是int还是float
解决办法:把%.2d改为%.2f
问题2:次方的数学公式有问题
原因:忘记了正确的公式
解决办法:经询问同学之后得到答案

2.(1)题目

对于输入的两个整数,按照要求输出其和差积商。

(2)流程图

(3)源代码

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

(5)实验分析
问题1:a/b输出为带两位小数的格式,没有找到合适的解决办法
原因:不清楚语句的使用和强制交换
解决办法:za9a的前面加一个(double)进行强制交换

3.(1)题目

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

(2)流程图

(3)源代码

(4)测试数据及运行结果
正确的

错误的

(5)实验分析
我本人对于这道题没有什么太大的问题,就是有一些很小的纰漏马虎现象,既视改正即可。

4.(1)题目
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

(2)流程图

(3)源代码

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


(5)实验分析
问题1:在那个临时停车的这个问题上有问题
原因:没有理解具体是怎么收费,怎么和之前的计费联系起来?
解决办法:经过自己在草稿纸上画了流程图之后理解了题意。

(四)PTA提交列表


posted @ 2017-10-27 16:40  许天笑!  阅读(684)  评论(0编辑  收藏  举报