(一)改错题

输出三角形的面积和周长,输入三角形的三条边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)相关推荐

  1. C语言程序设计第四次作业——选择结构(2)

    (一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...

  2. c语言程序设计第四次作业——顺序结构

    (一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...

  3. C语言程序设计第三次作业——选择结构(1)

    (一)改错题 将源程序进行编译,发现有错误信息: 错误信息1 错误原因:scanf语句中没有用"&" 改正方法:在x前加上"&" 错误信息2 错 ...

  4. 中国大学慕课 大连理工大学 C语言程序设计 第四周编程作业 选择结构程序设计

    1 大小写字母转换(6分) 题目内容: 编写程序,输入一个字符,若是大写字母,转换成小写字母,若是小写字母,则转换成大写字母输出 输入格式: getchar() 输出格式: putchar( 输入样例 ...

  5. C语言程序设计第六次作业——循环结构(2)

    (一)改错题 序列求和:输入一个正实数eps,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... ,精确到最后一项的绝对值小于eps(保留6位小数). 输入输出样例: Input e ...

  6. C语言程序设计第五次作业——循环结构(1)

    (一)改错题 1.题目 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5 ...

  7. C语言程序设计第五次作业——循环结构1

    (一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5×(f-3 ...

  8. 2014年秋广州华师在线计算机的作业答案,18秋华师《C语言程序设计B》在线作业-4辅导资料...

    18秋华师<C语言程序设计B>在线作业-4辅导资料 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 2.90 积分 18秋华师<C语 ...

  9. c语言程序设计电大作业,电大C语言程序设计第1234次作业及答案

    <电大C语言程序设计第1234次作业及答案>由会员分享,可在线阅读,更多相关<电大C语言程序设计第1234次作业及答案(27页珍藏版)>请在人人文库网上搜索. 1.M資妄 呦圧 ...

  10. c语言第四章循环程序设计,C语言程序设计教程第4章-循环结构程序设计

    <C语言程序设计教程第4章-循环结构程序设计>由会员分享,可在线阅读,更多相关<C语言程序设计教程第4章-循环结构程序设计(42页珍藏版)>请在人人文库网上搜索. 1.C语言程 ...

最新文章

  1. 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
  2. 电脑内部,小贴士:电脑内部连接标准
  3. 07 - java 方法里面的 return
  4. Android UDP
  5. Broadcast variabies-广播变量
  6. matlab车流量检测,求解释代码,一段交通车流量检测的代码
  7. 米奇emoji_一些常用的 Emoji 符号(可直接复制)
  8. MDT2010学习(八),MDT结合WDS部署Win7 x86企业版
  9. 思科防火墙ASA5520做NAT映射配置实例
  10. Java DES 加密解密工具类实现
  11. ADS1115使用及其驱动电路
  12. 移动终端安全问题分析与解决方案研究
  13. 如何下载微信视频号里的完整视频?
  14. 华为RH2288H V3服务器 从拆箱开始安装系统
  15. css中什么是伪类选择器?伪类选择器的简要介绍
  16. Java冷知识之——魔数(Magic Number)
  17. java JDBC连接MySQL数据库调用存储过程进行查询
  18. EasyDSS视频直播点播平台无法播放4K视频的原因排查与解决
  19. 二进制安装Kubernetes 单集群
  20. 选择合适的java脚本语言

热门文章

  1. 创造下一个Zynga传奇
  2. 过河孙小弟scratch
  3. openssl rand
  4. C#日期格式参考小结
  5. 密码学(五):数字签名和证书
  6. Py正则表达式学习笔记:常用函数——单词检索、索引方法
  7. 中国无损探伤检测行业发展前景与投资战略规划分析报告2021-2027年
  8. Codeforces Round #496 (Div. 3) E2 - Median on Segments (General Case Edition)(思维+用bit 位求前缀合)
  9. 画江湖:李星云像换了一个人,他到底经历了什么?
  10. [算法]从Trie树(字典树)谈到后缀树