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:

错误原因:在9行缺少分号

改正方法:在9行后加上分号 ;

错误信息2:

错误原因:else后不能再跟语句

改正方法:将(x != 10)去掉

错误信息3:

错误原因:if语句后不能加分号

改正方法:将if后的分号去掉

错误信息4:

错误原因:x,y的输出格式有错误

改正方法:

错误信息5:

错误原因:y在计算是被强制转换为整型

改正方法:

错误信息6:

错误原因:x,y的输出类型不同

改正方法:

错误信息7:

错误原因:第7行缺少等号,不是给y赋值

改正方法:在第7行加上一个等号

错误信息8:

错误原因:缺少取地址符

改正方法:在7行,scanf后加上取地址符

错误信息9:

错误原因:最后输出的X,Y格式不一样

改正方法:
将l改成1

(二)学习总结
1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?
答:如果按照原题的方式来输代码,则为:

其确切含义为:当a,b同时输入时,边运行 x=x+1,否则,便运行y=y+1.所以,其正确的源代码为:

2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
答:不能。因为系统在进行运算时是按照从左到右的顺序进行,而且,数学中的区间表达在系统中并不能表示x的值是从-10到10.
所以正确的表达式为

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

输入123a后,输出的结果为:

原因:定义的a,b为整型,但输入的a并不属于整型。则a属于非法字符,直接结束。

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

然后,输入123 45和123a后得到的结果为:

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

然后,让我们修改程序(1)后,得到的源程序为:

4.其他内容总结:
(1):要注意else后不能再跟语句
(2):牢记if和else要对应
(3):输入和输出的格式要一致
(4):再说一遍取地址符,千千万万不能忘!!!

(三)实验总结
3.
(1)题目:判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。
(2)流程图:

(3)源程序:

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


(5)实验分析:
问题:

输入的不是回文数,但输出的却是yes
原因:第十行中,if后跟的语句应该是两个等于,否则,一个等于表示赋值。
解决方法:将第十行中if后的语句中再多加两个等号。

(1)题目:本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间
(2)流程图;

(3)源程序:

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

(5)实验分析:
问题:
原因:没加取地址符
解决方法:在第四行加上取地址符

(1)题目:中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
(2)流程图:

(3)源程序:

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


(5)实验分析:本题没有出现新问题。

9:
(1)题目:为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
(2)流程图:

(3)源程序:

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


(5)实验分析:
问题:
原因:字符间相乘不能直接相乘
解决方法:在11行中加上*

(四)PTA提交列表



posted @ 2017-10-28 22:56  大鱼会飞  阅读(508)  评论(0编辑  收藏  举报