C语言程序设计第四次作业-选择结构
(一)改错题
输出三角形的面积和周长,输入三角形的三条边a、b、c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出“These sides do not correspond to a valid triangle”。
输入输出样例1:
Enter 3 sides of the triangle: 5 5 3
area = 7.15; perimeter = 13.00
输入输出样例2:
Enter 3 sides of the triangle: 1 4 1
These sides do not correspond to a valid triangle
源程序(有错误的程序)
#include <stdio.h>
#include <math.h>
int main(void)
{
double a,b,c;
double area,perimeter,s;
printf("Enter 3 sides of the triangle: ");
scanf( "%lf%lf%lf",&a,&b,&c );
if( a + b > c || b + c > a || a + c > b)
s = ( a + b + c ) / 2;
area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c );
perimeter = a + b + c;
printf("area = %.2f; perimeter = %.2f\n",area,perimeter);
else
printf("These sides do not correspond to a valid triangle\n");
return 0;
}
错误信息1:
错误原因:少加了一个右括号
改正方法:在( s - c )后再加一个右括号
错误信息2:
错误原因:if后面的语句和else后面的语句没加大括号
改正方法:把if和else后面的语句分别用大括号括起来
错误信息3:
输出内容错误
错误原因:if里面的判断之间应该用&&连接,||代表或者
改正方法:将||改为&&
(二)学习总结
1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。禁止大段复制,要自己对资料进行归纳总结,并给出你参考的资料链接。
2.对其他你认为需要进行总结的内容进行总结。
答:if类型的语句的判断条件可以用来表示一个范围,而switch则是一个具体的数值。出现多个if语句的时候会对每一个条件都进行判断。最后的else会和最近的if配对。而if和else if的语句,一旦满足了其中的一个条件就会终止判断。
判断条件较多时可以使用if else if语句和switch语句,而两者的区别则是switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的
索引号与switch变量的值是相等的。从而,switch...case不用像if...else if那样遍历条件分支直到命中条件,而只需访问对应 索引号的表项从而到达定位分支的目的。
所以从效率上来说由于if...else if的遍历性,代码执行效率是不高的。
举例:例如选择结构二的第三道编程题,计算天数,需要进行多次判断。而因为知道具体的月份,所以用switch会更加简单。
而在选择结构一的第九题计算阶梯电价中,因为用户的用电量是随机的,所以用能够表示范围的if语句会更好一点
资料链接一 资料链接二
(三)实验总结
1.比较大小
(1)题目
本题要求将输入的任意3个整数从小到大输出。
(2)流程图
(3)源代码
#include<stdio.h>
int main()
{
int a,b,c,x,y,z;
scanf("%d%d%d",&a,&b,&c);
if(a>b && a>c)
{
x = a;
if(b>c)
{
y = b,z = c;
}
else
{
y = c;
z = b;
}
}
else if(b>a && b>c)
{
x = b;
if(a>c)
{
y = a;
z = c;
}
else
{
y = c;
z = a;
}
}
else
{
x = c;
if(a>b)
{
y = a;
z = b;
}
else
{
y = b;
z = a;
}
}
printf("%d->%d->%d",z,y,x);
return 0;
}
(4)实验分析
问题一:if语句错误
原因:&应该是两个而不是一个
解决办法:再加上一个&
问题二:答案输出错误
原因:有一个if后面的语句没加括号
解决办法:将在if后面的语句括起来
(5)本题PTA提交列表
高速公路超速处罚
(1)题目
按照规定,在高速公路上行使的机动车,超出本车道限速的10%则处200元罚款;若超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
(2)流程图
(3)源代码#include<stdio.h>
int main()
{
int a,b;
double c;
scanf("%d%d",&a,&b);
c = (a-b)*1.0/b;
if(c<0.1)
printf("OK");
else if(c>=0.1 && c<0.5)
printf("Exceed %0.0f%%. Ticket 200",c*100);
else
printf("Exceed %0.0f%%. License Revoked",c*100);
return 0;
}
(4)实验分析
问题一:不能正确输出百分数
原因:%lf后面应该加上两个百分号
解决办法:在%lf后面加两个百分号
(5)本题PTA提交列表
3.计算油费
(1)题目
现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
(2)流程图
(3)源代码
#include<stdio.h>
int main()
{
int p;
double l,y;
char f;
scanf("%lf%d %c",&l,&p,&f);
switch(p)
{
case 90:
if(f == 'm')
{
y = l*6.95*0.95;
}
else
{
y = l*6.95*0.97;
}
break;
case 93:
if(f == 'm')
{
y = l*7.44*0.95;
}
else
{
y = l*7.44*0.97;
}
break;
case 97:
if(f == 'm')
{
y = l*7.93*0.95;
}
else
{
y =l*7.93*0.97;
}
}
printf("%0.2f",y);
return 0;
}
(4)实验分析
switch和if后面的语句要记得用括号括起来,并且后面不能加分号。其他语句后面都要分号。表示等于是两个等号,一个代表赋值
(5)本题PTA提交列表
4.12-24小时制
(1)题目
编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
(2)流程图
(3)源代码
#include<stdio.h>
int main()
{
int h,m,h1,m1;
scanf("%d:%d",&h,&m);
if(h<12)
{
h1 = h;
m1 = m;
printf("%d:%d AM",h1,m1);
}
else if(h == 12)
{
h1 = h = 12;
m1 = m;
printf("%d:%d PM",h1,m1);
}
else if(h>12 && h <24)
{
h1 = h-12;
m1 = m;
printf("%d:%d PM",h1,m1);
}
else
{
h1 = 0;
m1 = m;
printf("%d:%d AM",h1,m1);
}
return 0;
}
(4)实验分析
要注意各个时间点的区分,if,else if后面的语句要用括号括起来,判断条件后面不加分号。输出要符合题目格式要求。注意区分中英文符号
5)本题PTA提交列表
(四)博客互评
刘长森
李仁正
潘久朋
C语言程序设计第四次作业-选择结构的更多相关文章
- C语言程序设计第四次作业——选择结构(2)
Deadline: 2017-11-5 22:00 一.学习要点 掌握switch语句 掌握字符常量.字符串常量和字符变量 掌握字符型数据的输入输出 二.实验内容 完成PTA中选择结构(2)的所有题目 ...
- C语言程序设计第四次作业--选择结构(2)
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- C语言程序设计第四次作业——选择结构(二)
(一)改错题 错误信息: 错误原因:第13行sqrt数学函数缺少")",导致编译器无法将括号正确配对 改正方法:补齐缺少的")" 错误信息: 错误原因:if语句 ...
- C语言程序设计第三次作业--选择结构(1)
Deadline: 2017-10-29 22:00 一.学习要点 掌握关系运算符和关系表达式 掌握如何判断两个实数相等 掌握常用数学函数的使用 掌握逻辑运算符和逻辑表达式 理解逻辑运算的短路特性 掌 ...
- c语言程序设计第四次作业——顺序结构
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- C语言程序设计第三次作业——选择结构(1)
一.改错题 1.题目计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 源程序(有错误的程序): #include <stdio.h> int main ...
- C语言程序设计第三次作业——选择结构(一)
(一)改错题 错误信息: 错误原因:y=1/x后没加分号 改正方法:在其后加上分号 错误信息: 错误原因:if语句后接了:,使else语句找不到对应的if 改正方法:删掉if后的分号 错误信息: 错误 ...
- C语言程序设计第三次作业 —— 选择结构(1)
(一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. (错误一) 错误原因及改正:第九行语句结尾缺少半角分号,添加分号即可改正 (错误二) 错误原因及改 ...
- C语言程序设计第六次作业——循环结构(2)
C语言程序设计第六次作业--循环结构(2) 之前的博客园图片没处理好,对大家说一声抱歉.希望大家能够多多指出我的错误,我来认真修改 ^ - ^ !. (1)改错题 序列求和:输入一个正实数eps,计算 ...
随机推荐
- 关于读取Sql Server数据库时间前端处理问题
var time = this.CreateTime; this.CreateTime = new Date(time.replace("T", " ")).F ...
- LeetCode & Q219-Contains Duplicate II
Array Hash Table Description: Given an array of integers and an integer k, find out whether there ar ...
- mingw打dll ,lib包命令和调用
1,下面的命令行将这个代码编译成 dll. gcc mydll.c -shared -o mydll.dll -Wl,--out-implib,mydll.lib 其中 -shared 告诉gcc d ...
- LxmlLinkExtractor类参数解析
LxmlLinkExtractor LxmlLinkExtractor 是一种强大的链接提取器,使用他能很方便的进行选项过滤,他是通过xml中强大的HTMLParser实现的 源代码如下: class ...
- Angular 学习笔记 ( CDK - Overlays )
更新 : 2018-01-30 ng 的 overlap 在关闭的时候对 backdrop 做了一个 style pointer 目的是让 backdrop 不被 2 次点击, 但是呢, css p ...
- Python 自动化 第一周
1.Python简介 1.1.Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...
- final类与final方法
inal---用于类.方法前. final类---不可被继承. final方法---不可被覆盖. final类不能被继承. 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继 ...
- idea的spring boot项目,运行时不要显示在dashboard中
将对应项目的上图配置,取消勾选即可.
- python模块之PIL模块
PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 ...
- Tensorflow模型加载与保存、Tensorboard简单使用
先上代码: from __future__ import absolute_import from __future__ import division from __future__ import ...