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

(一)改错题

错误信息1:
错误原因:area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c ); 后面丢了半个括号
改正方法:area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c ));

错误信息2:
错误原因:if与else中的语句没有加括号
改正方法:在每一个条件前后加括号

错误信息3:
错误原因:三边判定有问题
改正方法:三角形两边之和大于第三边应该是并且的关系用&&连接而不是||

(二)学习总结

1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。

答:多个if是所有的if都会进行判断if else if是只要有满足条件的,就不再对之后的else if进行判断。
比如

a = 2;
if(a==1) c=1;
if(a==2) c=2;
if(a%2==0) c=3;

最终结果c=3

a=2;
if(a==1) c=1;
else if(a==2) c=2;
else if(a%2==0) c=3;

最终结果c=2

else if和switch

比如

switch( a )
{
case 1:
case 2:
case 3:
case 4:
break;
}

这样就是 if if了,所有的1,2,3,4满足条件的都会执行一次

switch( a )
{
case 1:break;
case 2:break;
case 3:break;
case 4:break;
}

这样就是else if了,只要满足条件就跳出了
http://blog.csdn.net/yuxin1100/article/details/51683857

2.对其他你认为需要进行总结的内容进行总结。
答:在switch中,有些情况不需要每个case后都加break;字符型数据和整型数据是通用的,他们既可以用字符形式输出(“%c”),也可以用整数型(“%d”)。

(三)实验总结
1 成绩转换
(1)题目
本题要求编写程序将一个百分制成绩转换为五分制成绩。
(2)流程图

(3)源代码

# include <stdio.h>
int main()
{
    int c;

    scanf("%d", &c);
    switch(c/10)
    {
	    case 10:
	    case 9:printf("A");
	    break;
	    case 8:printf("B");
	    break;
	    case 7:printf("C");
	    break;
	    case 6:printf("D");
	    break;
	    default :printf("E");
    }

    return 0;
}

(4)实验分析
问题:switch语句总出问题
原因:在语句中case后忘加:
解决方法:加上;

(5)本题PTA提交列表

5.三角形判断
(1)题目:三角形判断
给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。

(2)流程图

(3)源代码

#include<stdio.h>
#include<math.h>
int main(void)
{
    double x1 = 0.0,y1 = 0.0,x2 = 0.0,y2 = 0.0,x3 = 0.0,y3 = 0.0,a = 0.0,b = 0.0,c = 0.0,L = 0.0,A = 0.0,M = 0.0;
    scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
    a = pow((pow(x1 - x2,2)+pow(y1 - y2,2)),0.5);
    b = pow((pow(x1 - x3,2)+pow(y1 - y3,2)),0.5); 
    c = pow((pow(x3 - x2,2)+pow(y3 - y2,2)),0.5);
    if(a + b > c && a + c > b && b + c > a)
    {
	    L = a + b + c;
	    M = L / 2.0;
	    A = pow(M * (M - a) * (M - b) * (M - c),0.5);
	    printf("L = %.2f, A = %.2f",L,A);
    }
    else
    {
	    printf("Impossible");
    }
    return 0;
    }     

(4)实验分析
问题:不清楚如何利用点坐标来算长度
原因:第一次接触这样的题不太明白
解决办法:问老师和助教,了解运算公式和步骤

(5)本题PTA提交列表

7.两个数的简单计算器
(1)题目:
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。

(2)流程图

(3)源代码

# include <stdio.h>
# include <stdlib.h>
int main()
{
    int a,b,c;
    char op;

    scanf("%d %c %d",&a,&op,&b);
    switch(op)
    {
	    case '+':c = a+b;printf("%d",c);break;
	    case '-':c = a-b;printf("%d",c);break;
	    case '*':c = a*b;printf("%d",c);break;
	    case '/':c = a/b;printf("%d",c);break;
	    case '%':c = a%b;printf("%d",c);break;
	    default :printf("ERROR");
    }

    return 0;			

}

(4)实验分析
本题无特别困难地方,只要注意细节就好

(5)本题PTA提交列表

9.求一元二次方程的根
(1)
本题目要求一元二次方程的根,结果保留2位小数。

(2)流程图

(3)源代码

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    double a, b, c;
    scanf("%lf%lf%lf", &a, &b, &c);
    double d, del, ans1, ans2;
      d = b * b - 4.0 * a * c;
    if(a == b && a == c && a == 0)
         printf("Zero Equation\n");
    else if(a == b && a == 0 && c != 0)
         printf("Not An Equation\n");
    else if(d == 0)
     {
         ans1 = (-b) / (2.0*a);
         printf("%.2f\n", ans1);
     }
    else if(a == 0)
             printf("%.2f\n", (-c) / b);
    else if(d > 0)
     {
         del = sqrt(d);
         ans1 = (-b+del) / (2.0*a);
         ans2 = (-b-del) / (2.0*a);
         printf("%.2f\n%.2f\n", ans1, ans2);
     }
    else if(d < 0)
     {
         del = sqrt(-d);
         if(b != 0)
             ans1 = (-b) / (2.0*a);
         else
             ans1 = 0;
         ans2 = del / (2.0*a);
         printf("%.2f+%.2fi\n%.2f-%.2fi\n", ans1, ans2, ans1, ans2);
     }
   return 0;
}

(4)实验分析
问题:输出结果总是部分正确。
原因:没有考虑清楚纯虚根的情况。
解决办法:纯虚根的情况,即有虚根的时候,如果实部为0,则实部应该输出0.00.然后输出虚部,不能只输出虚部而没有实部的内容。

(5)本题PTA提交列表

(四)博客互评
(1)风力你在http://www.cnblogs.com/GX201701-/p/7765475.html
内容:你交作业很快,这个是蛮佩服的,下次记得源代码要和老师的格式一样就更好了

(2)Religious http://www.cnblogs.com/lyw7777777/p/7784774.html
内容:结构挺清晰的,要是改错题每个错误之间留一下空间,就更清晰了

(3)李攀¥http://www.cnblogs.com/lipan123/p/7778208.html
内容:你第二题忘了给链接了哎,最后一大题的源代码格式不太对哎,希望以后能更加完善呀。

老师,助教,辛苦了

posted @ 2017-11-05 10:34  折翼之舞、  阅读(315)  评论(3编辑  收藏  举报