C语言程序设计第三次作业——选择结构(1)
一、改错题
1.题目计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。
源程序(有错误的程序):
#include <stdio.h>
int main(void)
{
double x,y;
printf("Enter x: \n");
scanf("=%f", x);
if(x = 10);
{
y = 1 / x
}
else (x != 10)
{
y = x;
}
printf("f(%.2f) = %.lf\n" x y);
return 0;
}
错误信息1:

错误原因:y=1/x后没加;
改正方法:需要在y=1/x后加上;
错误信息2:

错误原因:if(x = 10);的后面不应该加;
改正方法:需要删掉if(x = 10);后的;
错误信息3:

错误原因:else后不应该加条件
改正方法:删掉(x != 10)
错误信息4:

错误原因:x和y前面没有加,
改正方法:把x和y前面的空格换成,
错误信息5:

错误原因:scanf("=%f", x);的括号中格式错误
改正方法:删掉=,%f改成%lf,x前面的空格改成&
错误信息6:

错误原因:printf("f(%.2f) = %.lf\n",x,y);
改正方法:f(%.2f)中的()里改成%.1f,等于号后面的%.lf改成%.1f
错误信息7:

错误原因:if(x = 10)的()里的等于号是一个
改正方法:if(x = 10)改成if(x == 10)
错误信息7:

错误原因:与题目中所给格式不符
改正方法:删掉源程序中的所有\n
改正完毕输入样例,结果如下:


与样例一致。再次输入其它数据:


符合期望,认为改正完毕。
附上改正后的源代码:
#include <stdio.h>
int main(void)
{
double x,y;
printf("Enter x: ");
scanf("%lf",&x);
if(x == 10)
{
y = 1 / x;
}
else
{
y = x;
}
printf("f(%.1f) = %.1f",x,y);
return 0;
}
二、学习总结
1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。
①它的确切含义应该是如果a且b为真就执行“x = x + 1”的语句,否则执行“y = y + 1”的语句
②else应该和之前与其最近的且不带else的if配对,所以它应与第二个if配对
③如果想明确表达这种配对方法可以在每一个if 或else if或else后添加“{}”
④改正后的代码:
if(a && b)
{
x = x + 1;
}
else
{
y = y + 1;
}
2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
①不能
②因为如果那样的话就先比较x与-10的大小,如果为真则赋值1,如果是假则赋值0,然后再用赋上的值和10比较,这样违背了x与10比较的目的,所以不能
③正确表达方式如下:
(x >-10 && x < 10);
3.C语言中输入数据时,如果遇到非法字符,则认为输入结束。
(1)运行程序(1),输入123a,看看输出结果是什么?你能解释是为什么吗?
①输出结果:

②原因:输入时定义a,b均为整形,并不是字符,所以系统不能读取,便认为输入已停止,所以给b赋予了一个毫无意义的数字“1”
(2)scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。运行程序(2),分别输入123 45和123a,看看输出结果是什么?为什么?
①输出结果:
输入“123 45”

输入“123a”

②原因:因为返回值是成功读取变量的个数,所以当输入“123 45”的时候,因为两个数都是整形,可以读出两个数据,所以n=2;当输入“123a”的时候因为“a”是字符,为非法数据,不能赋值,所以只将“123”赋值给了a,程序只读出一个数据,所以n=1
修改程序(1),样例如下:
#include <stdio.h>
int main()
{
int a, b,n;
n = scanf("%d %d", &a, &b);
if(n == 2)
{
printf("a = %d, b = %d\n", a, b);
}
else
{
printf("Input error!");
}
return 0;
}
3.内容总结:
需要掌握的:①关系运算符和关系表达式②如何判断两个实数相等③常用数学函数的使用④逻辑算符和逻辑表达式⑤逻辑运算的短路特性⑥if...else语句和if语句的嵌套⑦条件运算符⑧还需要有软件测试的思想
写程序时需注意的细节:①i1f()里的等于号应该是两个不是一个②要注意是字符数据的输入还是实数或整形的输入③使用数学函数时一定要有头文件包含命令“#include <math.h>”④实现if ~ else 正确配对方法,要加{}
三、实验总结
1.回文数
(1)题目
判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。
(2)流程图

(3)源代码
#include <stdio.h>
int main()
{
int n,a,b,c,d;
scanf("%d",&n);
a=n/10000;//万
b=n/1000%10;//千
c=n%100/10;//十
d=n%10;//个
if(a==d && b==c)
{
printf("yes");
}
else
{
printf("no");
}
return 0;
}
(4)测试数据及运行结果
运行结果1:

运行结果2:

(5)实验分析
问题1:


原因:if语句中的等于号写了一个
解决办法:把有一个等号的地方改成两个等号
2. 计算火车运行时间
(1)题目
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
(2)流程图

(3)源代码
#include <stdio.h>
int main()
{
int a,b,c,d,e,f,minute,hour;
scanf("%d %d",&a,&b);
c=a/100;
d=a%100;
e=b/100;
f=b%100;
if(f>=d)
{
hour=e-c;
minute=f-d;
}
else
{
hour=e-c-1;
minute=60-(d-f);
}
printf("%02d:%02d",hour,minute);
return 0;
}
(4)测试数据及运行结果
运行结果1:

运行结果2:

(5)实验分析
问题1:首次写程序的时候并没有考虑的借位的问题,导致程序不对
解决办法:将借位程序写入,最后能正常输出
解决了借位问题之后在写程序的过程中无其他问题,能很好的运用学习的知识并无细节错误!
3. 三天打鱼两天晒网
(1)题目
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
(2)流程图

(3)源代码
#include <stdio.h>
int main()
{
int N,a;
scanf("%d",&N);
a=N%5;
if(a>=1 && a<=3)
{
printf("Fishing in day %d",N);
}
else
{
printf("Drying in day %d",N);
}
return 0;
}
(4)测试数据及运行结果
运行结果1:

运行结果2:

(5)实验分析
问题1:

原因:源代码中scanf("%d",&N);写成了scanf("%d",N);
解决办法:在N的前面加上&
4. 阶梯电价
(1)题目
为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
(2)流程图

(3)源代码
#include <stdio.h>
int main()
{
double d,cost;
scanf("%lf",&d);
if(d<0)
{
printf("Invalid Value!");
}
else if(d>=0 && d<=50)
{
cost=d*0.53;
printf("cost = %.2f",cost);
}
else if(d>50)
{
cost=26.5+0.58*(d-50);
printf("cost = %.2f",cost);
}
return 0;
}
(4)测试数据及运行结果
运行结果1:

运行结果2:

(5)实验分析
问题1:定义d是double类型,却将输入格式写成%d

原因:掌握数据类型不牢固,不熟练
解决方法:将%d改成&lf
问题2:没有注意到题目要求输出两位小数
原因:没仔细读题
解决方法:输出的%f改成%.2f
四、PTA提交列表

C语言程序设计第三次作业——选择结构(1)的更多相关文章
- C语言程序设计第三次作业--选择结构(1)
Deadline: 2017-10-29 22:00 一.学习要点 掌握关系运算符和关系表达式 掌握如何判断两个实数相等 掌握常用数学函数的使用 掌握逻辑运算符和逻辑表达式 理解逻辑运算的短路特性 掌 ...
- C语言程序设计第三次作业——选择结构(一)
(一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...
- C语言程序设计第三次作业 —— 选择结构(1)
(一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. (错误一) 错误原因及改正:第九行语句结尾缺少半角分号,添加分号即可改正 (错误二) 错误原因及改 ...
- C语言程序设计第四次作业——选择结构(2)
Deadline: 2017-11-5 22:00 一.学习要点 掌握switch语句 掌握字符常量.字符串常量和字符变量 掌握字符型数据的输入输出 二.实验内容 完成PTA中选择结构(2)的所有题目 ...
- C语言程序设计第四次作业--选择结构(2)
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- C语言程序设计第四次作业-选择结构
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- C语言程序设计第四次作业——选择结构(二)
(一)改错题 错误信息: 错误原因:第13行sqrt数学函数缺少")",导致编译器无法将括号正确配对 改正方法:补齐缺少的")" 错误信息: 错误原因:if语句 ...
- C语言程序设计第六次作业——循环结构(2)
C语言程序设计第六次作业--循环结构(2) 之前的博客园图片没处理好,对大家说一声抱歉.希望大家能够多多指出我的错误,我来认真修改 ^ - ^ !. (1)改错题 序列求和:输入一个正实数eps,计算 ...
- C语言程序设计第五次作业——循环结构(1)
一.改错题 1.题目 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下:c = 5×( ...
随机推荐
- 分布式系统之消息中间件rabbitmq
分布式系统之消息中间件rabbitmq 博客分类: 感谢: 一般php 用rabbitmq java 用activemq http://spartan1.iteye.com/blog/11802 ...
- Python基础学习篇章三
一. Python对象类型 1. 对象是Python最基本的概念,一个Python程序可以分解为模块.语句.表达式.和对象.它们的关系如下:(1)程序由模块构成 (2)模块包含语句 (3)语句包含表达 ...
- ### Cause: org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [arg1, arg0, param1, param2]
org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: org.apache.ib ...
- Mego开发文档 - 事务
事务 事务允许以原子方式处理多个数据库操作.如果事务已提交,则所有操作都已成功应用于数据库.如果事务回滚,则没有任何操作应用于数据库. 默认行为 默认情况下,如果数据库提供程序支持事务,则单次的提交操 ...
- WPF 自定义ItemsControl/ListBox/ListView控件样式
一.前言 ItemsControl.ListBox.ListView这三种控件在WPF中都可作为列表信息展示控件.我们可以通过修改这三个控件的样式来展示我们的列表信息. 既然都是展示列表信息的控件,那 ...
- 电梯模拟C++
1.问题描述与要求 模拟某校九层教学楼的电梯系统.该楼有一个自动电梯,能在每层停留,其中第一层是大楼的进出层,即是电梯的"本垒层",电梯"空闲"时,将来到该层候 ...
- 三、如何使用QtDesigner
三.如何使用QtDesigner 启动 QtDesigner,创建一个PyQt项目 拖动Label到主窗体,双击并输入自己想输入的文字 并保持为 HelloWorld.ui 此时在你Python项目下 ...
- JS面向对象特性和值类型与复合类型
JS面向对象之特性已经值类型与复合类型 一些属性 空对象 空对象也是对象, 只是有存变量的变量名, 没有对象属性 var o ={}; 参数传递 值类型: 函数内外两个变量, 两个数据, 都不相同 ...
- jQuery获取浏览器参数
当我们需要获取浏览器参数是,我们可以使用jQuery进行获取,具体方法如下: 例如获取参数的地址:http://www.test.com?a="111"&b="2 ...
- 两个activity的3D翻转动画.md
一.业务需求 这里在公司项目设计时,用到了一个小的需求,就是点击一个按钮然后整个activity的页面进行3d翻转; 二.设计思路 由于是2个activity的之间的翻转动画,就意味着前90度是A页面 ...