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提交列表