C语言程序设计第四次作业-选择结构(2)
(一)改错题
输出三角形的面积和周长,输入三角形的三条边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);elseprintf("These sides do not correspond to a valid triangle\n");return 0;
}
错误信息1:
错误原因:少一个右括号。
改正方法:在( s - c )后再加一个右括号。
错误信息2:
错误原因:if后面的语句和else后面的语句没加大括号
改正方法:把if和else后面的语句分别用大括号括起来
错误信息3:样例2输出错误
错误原因:if里面的判断之间应该用&&连接,||代表或者。
改正方法:将||改为&&
(二)学习总结
1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。禁止大段复制,要自己对资料进行归纳总结,并给出你参考的资料链接。
2.对其他你认为需要进行总结的内容进行总结。
答:1.只需要判断一个条件的时候,使用if语句比较好,但是当判断条件很多的时候,使用多个if语句就不是最好的选择了。
if...else if在任何一个环节满足条件的时候就将会终止判断,只处理一个满足条件的情况。当判断条件较多的情况下,使用switch case语句。
switch判断固定值的时候用,而if建议判断区间或范围的时候用,一般用switch能做的,用if都能做,但是反过来则不行。
举例:
当条件较少时用if语句很容易,但是条件多就不是很简单了,过程就会很复杂。
使用if...else if... 语句其实跟if语句差不多,只是省略了些条件,是过程简化,不再看起来那么复杂。
这两个比较可看出switch语句能把if...else if... 语句比较复杂的简化,进一步是=使过程清楚易懂,运行起来也更加迅速。
(三)实验总结
1.成绩转换
(1)题目:
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
(2)流程图:
(3)源程序:
# include <stdio.h>
int main()
{int score,a;scanf("%d",&score);a = score / 10;switch(a){ case 10 : printf("A");break;case 9 : printf("A");break;case 8 : printf("B");break;case 7 : printf("C");break;case 6 : printf("D");break; default : printf("E");break; } return 0;}
(4)实验分析
想不到case后面应该用什么,没有老师提醒想不到case(score/10)。
要多练习,才能想的到简单的方法。
(5)本题PTA提交列表
5.三角形判断
(1)题目:给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。
(2)流程图:
(3)源程序:
#include<stdio.h>
#include<math.h>
int main()
{double x1,y1,x2,y2,x3,y3,a,b,c,s,L,A;scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);a=sqrt(pow(x1-x2,2)+pow(y2-y1,2));b=sqrt(pow(x2-x3,2)+pow(y2-y3,2));c=sqrt(pow(x1-x3,2)+pow(y3-y1,2));if(a+b>c&&a+c>b&&b+c>a){L=a+b+c;s=(a+b+c)/2;A=sqrt(s*(s-a)*(s-b)*(s-c));printf("L = %.2f, A = %.2f",L,A);}else{printf("Impossible");}return 0;
}
(4)实验分析:
问题1:在定义某些量时,定义错了他们的类型把double型的定义成了int型,导致错误。
解决办法:判断准确量的类型。
问题2:if语句中的某些符号使用错误,跟之前的混淆。
解决办法:牢记&&和||的用法。
(5)本题PTA提交列表
7简单的计算器
(1)题目:本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。
(2)流程图:
(3)源程序:
#include<stdio.h>
#include<stdlib.h>
int main()
{int a,b,c;char d;scanf("%d %c%d",&a,&d,&b);switch(d){case '+':c = a + b;break;case '-':c = a - b;break;case '*':c = a * b;break;case '/':c = a / b;break;case '%':c = a % b;break;default :printf("ERROR");exit(0);}printf("%d",c);return 0;
}
(4)实验分析:
“%c”输入时,空格会对输入造成影响。
解决办法:在前面加上空格。
(5)本题PTA提交列表
9.求一元二次方程的根
(1)题目
本题目要求一元二次方程的根,结果保留2位小数。
(2)流程图:
(3)源程序:
#include<stdio.h>
#include<math.h>
int main()
{double a,b,c,x,y,q,w,e;scanf("%lf%lf%lf",&a,&b,&c);if(a==0&&b!=0){y=(0-c)/b;printf("%.2f",y);}else{x=((0-b)+sqrt(b*b-4*a*c))/(2*a);y=((0-b)-sqrt(b*b-4*a*c))/(2*a);if(a==0&&b==0&&c==0){printf("Zero Equation");}else if(a==0&&b==0){printf("Not An Equation");}else if(b*b-4*a*c==0){ printf("%.2f",x);}else if(b*b-4*a*c<0){q=(0-b)/(2*a);w=sqrt(4*a*c-b*b)/(2*a);printf("%.2f+%.2fi\n",q,w);printf("%.2f-%.2fi\n",q,w);}else if(x!=y){if(x<y){e=x;x=y;y=e;}elseprintf("%.2f\n%.2f",x,y);}return 0;}
}
(4)实验分析:
刚开始看这个题时,有点思路,但是写起程序来,真是麻烦,错误百出。
问题1:结果不完全正确。
原因:没有考虑纯虚根。
最后老师提醒:纯虚根的情况,即有虚根的时候,如果实部为0,则实部应该输出0.00.然后输出虚部,不能只输出虚部而没有实部的内容。
(5)本题PTA提交列表:
(四)博客互评:
C语言程序设计第四次作业——选择结构(2) - 李仁正 - 博客园
http://www.cnblogs.com/lrxlrz/p/7763680.html
C语言程序设计第四次作业 - 范马桶 - 博客园
http://www.cnblogs.com/he111923/p/7772093.html
C语言程序设计第四次作业-选择结构 - WH吴晗 - 博客园
http://www.cnblogs.com/moying456/p/7770919.html
转载于:https://www.cnblogs.com/1702-fengyajie/p/7787381.html
C语言程序设计第四次作业-选择结构(2)相关推荐
- C语言程序设计第四次作业——选择结构(2)
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- c语言程序设计第四次作业——顺序结构
(一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...
- C语言程序设计第三次作业——选择结构(1)
(一)改错题 将源程序进行编译,发现有错误信息: 错误信息1 错误原因:scanf语句中没有用"&" 改正方法:在x前加上"&" 错误信息2 错 ...
- 中国大学慕课 大连理工大学 C语言程序设计 第四周编程作业 选择结构程序设计
1 大小写字母转换(6分) 题目内容: 编写程序,输入一个字符,若是大写字母,转换成小写字母,若是小写字母,则转换成大写字母输出 输入格式: getchar() 输出格式: putchar( 输入样例 ...
- C语言程序设计第六次作业——循环结构(2)
(一)改错题 序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数). 输入输出样例: Input e ...
- C语言程序设计第五次作业——循环结构(1)
(一)改错题 1.题目 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5 ...
- C语言程序设计第五次作业——循环结构1
(一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5×(f-3 ...
- 2014年秋广州华师在线计算机的作业答案,18秋华师《C语言程序设计B》在线作业-4辅导资料...
18秋华师<C语言程序设计B>在线作业-4辅导资料 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 2.90 积分 18秋华师<C语 ...
- c语言程序设计电大作业,电大C语言程序设计第1234次作业及答案
<电大C语言程序设计第1234次作业及答案>由会员分享,可在线阅读,更多相关<电大C语言程序设计第1234次作业及答案(27页珍藏版)>请在人人文库网上搜索. 1.M資妄 呦圧 ...
- c语言第四章循环程序设计,C语言程序设计教程第4章-循环结构程序设计
<C语言程序设计教程第4章-循环结构程序设计>由会员分享,可在线阅读,更多相关<C语言程序设计教程第4章-循环结构程序设计(42页珍藏版)>请在人人文库网上搜索. 1.C语言程 ...
最新文章
- 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
- 电脑内部,小贴士:电脑内部连接标准
- 07 - java 方法里面的 return
- Android UDP
- Broadcast variabies-广播变量
- matlab车流量检测,求解释代码,一段交通车流量检测的代码
- 米奇emoji_一些常用的 Emoji 符号(可直接复制)
- MDT2010学习(八),MDT结合WDS部署Win7 x86企业版
- 思科防火墙ASA5520做NAT映射配置实例
- Java DES 加密解密工具类实现
- ADS1115使用及其驱动电路
- 移动终端安全问题分析与解决方案研究
- 如何下载微信视频号里的完整视频?
- 华为RH2288H V3服务器 从拆箱开始安装系统
- css中什么是伪类选择器?伪类选择器的简要介绍
- Java冷知识之——魔数(Magic Number)
- java JDBC连接MySQL数据库调用存储过程进行查询
- EasyDSS视频直播点播平台无法播放4K视频的原因排查与解决
- 二进制安装Kubernetes 单集群
- 选择合适的java脚本语言
热门文章
- 创造下一个Zynga传奇
- 过河孙小弟scratch
- openssl rand
- C#日期格式参考小结
- 密码学(五):数字签名和证书
- Py正则表达式学习笔记:常用函数——单词检索、索引方法
- 中国无损探伤检测行业发展前景与投资战略规划分析报告2021-2027年
- Codeforces Round #496 (Div. 3) E2 - Median on Segments (General Case Edition)(思维+用bit 位求前缀合)
- 画江湖:李星云像换了一个人,他到底经历了什么?
- [算法]从Trie树(字典树)谈到后缀树