zoukankan      html  css  js  c++  java
  • c语言第四次作业-选择结构1

    (一)改错题

    输出三角形的面积和周长,输入三角形的三条边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
    ",area,perimeter);
    
        else
            printf("These sides do not correspond to a valid triangle
    ");
    
        return 0;        
    }
    

    错误信息1:
    错误原因:第13的括号没有扩回
    改正方法:在第13行加上括号
    错误信息2:
    错误原因:if下面的信息没有加{}
    改正方法:if下面加上{}
    错误信息3:
    错误原因:应该是和的关系
    改正方法:或改成和的关系
    (二)学习总结
    1.在编程解决问题的过程中,我们会用到多个if语句,if...else if... 语句以及switch语句,查阅资料,总结一下这三种情况的区别何在,并分别举例加以说明。
    *.if:表示如果,适用于条件清晰,不重叠。比如判断一个数是整数还是负数,条件内容所属区间独立,不干涉适合if语句,但是一条条判断,增加条件复杂性。
    *.if else:表示如果,剩下的。适合多项判断,相对于if语句,如果符合条件,自动结束,不用一一判断条件是否符合,例如,判断一个字符属于什么类型。
    *.switch:switch语句适合判断一个参数是否等于一个条件,比如判断一个月份有多少天,但是只能适合明确的量,而不能判断一个参数是否属于一份区间。
    资料链接:
    (1)http://www.cnblogs.com/wankun/p/4989831.html
    (2)http://www.cnblogs.com/pureEve/p/6564012.html
    (3)http://www.cnblogs.com/bluesky365/p/5631517.html

    2.对其他你认为需要进行总结的内容进行总结。
    *.在switch语句中default后面不需要加入case,就像if..else...中的else后不需要加判断语句一样
    *.或和非的关系
    (三)实验总结(我的学号为单号,需总结1,5,7,9题)
    第一题:成绩转换
    (1)题目:本题要求编写程序将一个百分制成绩转换为五分制成绩。
    (2)流程图

    (3)源代码

    include <stdio.h>

    int main(void)
    {
    int grade;
    scanf("%d",&grade);
    switch(grade/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)实验分析
    本题较简单
    (5)本题PTA提交列表

    7-5 三角形判断(10 分)
    (1)题目
    给定平面上任意三个点的坐标(x
    ​1
    ​​ ,y
    ​1
    ​​ )、(x
    ​2
    ​​ ,y
    ​2
    ​​ )、(x
    ​3
    ​​ ,y
    ​3
    ​​ ),检验它们能否构成三角形。

    输入格式:

    输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x
    ​1
    ​​ 、y
    ​1
    ​​ 、x
    ​2
    ​​ 、y
    ​2
    ​​ 、x
    ​3
    ​​ 、y
    ​3
    ​​ 。

    输出格式:

    若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。
    (2)流程图

    (3)源代码

    include<stdio.h>

    include<math.h>

    int main(void)
    {
    double x1,y1,x2,y2,x3,y3,a,b,c,perimeter,s,aera;
    scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
    a = sqrt(pow(x1 - x2,2)+pow(y1 - y2,2));
    b = sqrt(pow(x1 - x3,2)+pow(y1 - y3,2));
    c = sqrt(pow(x3 - x2,2)+pow(y3 - y2,2));
    if(a + b > c && a + c > b && b + c > a)
    {
    perimeter = a + b + c;
    s = perimeter / 2.0;
    aera = sqrt(s * (s - a) * (s - b) * (s - c));
    printf("L = %.2f, A = %.2f",perimeter,aera);
    }
    else
    {
    printf("Impossible");
    }
    return 0;
    }
    (4)实验总结
    问题:三角形面积公式忘记
    解决:问同学
    (5)本题PTA提交列表

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

    (3)源代码

    include <stdio.h>

    include <stdlib.h>

    int main()
    {
    int a,b,result;
    char op;
    scanf("%d %c%d",&a,&op,&b);
    switch(op)
    {
    case '+':result = a + b;break;
    case '-':result = a - b;break;
    case '*':result = a * b;break;
    case '/':result = a / b;break;
    case '%':result = a % b;break;
    default :printf("ERROR");
    exit(0);
    }
    printf("%d",result);
    return 0;
    }
    (5)本题PTA提交列表

    7-9 求一元二次方程的根(10 分)
    (1)题目
    本题目要求一元二次方程的根,结果保留2位小数。
    (2)流程图

    (3)源代码

    include<stdio.h>

    include<math.h>

    int main(void)
    {
    double a,b,c,n,x1,x2;
    scanf("%lf%lf%lf",&a,&b,&c);
    n = b * b - 4 * a * c;
    if(a == 0 && b == 0 && c == 0)
    {
    printf("Zero Equation");
    }
    if(a == 0 && b == 0 && c != 0)
    {
    printf("Not An Equation");
    }
    if(n > 0 && a != 0)
    {
    x1 = (-b + sqrt(n)) / (2 * a);
    x2 = (-b - sqrt(n)) / (2 * a);
    printf("%.2f %.2f",x1,x2);
    }
    else if(n == 0 && a !=0)
    {
    x1 = -b / (2 * a);
    printf("%.2f",x1);
    }
    else if(n < 0 && a != 0 && b!= 0)
    {
    b = -b / ( a * 2);
    n = fabs(n);
    x1 = sqrt(n) / (a * 2);
    printf("%.2f+%.2fi ",b,x1);
    printf("%.2f-%.2fi ",b,x1);
    }
    else if(a == 0 && b != 0)
    {
    x1 = -c / b;
    printf("%.2f",x1);
    }
    else if(n < 0 && b == 0 && a !=0)
    {
    n = fabs(n);
    x1 = sqrt(n) / 2;
    printf("0.00+%.2fi ",x1);
    printf("0.00-%.2fi",x1);
    }
    return 0;
    }

    (5)本题PTA提交列表

    (四)博客互评
    对杜瑞柯同学的博客作业的建议:

    对王映丹同学的博客作业的建议:

  • 相关阅读:
    Python字典
    Python集合
    Hungray匈牙利算法
    异常捕获模块,throw, try, catch, finally
    《加德纳艺术通史》罗杰克-劳利
    《高效休息法》久贺谷亮
    梯度检验 Gradient check,bias correction, Exponentially Weighted Averages
    方差与偏差,bias vs variance
    大数定理,中心极限定理以及一些常见分布
    聚类-均值漂移
  • 原文地址:https://www.cnblogs.com/zrx--/p/7788561.html
Copyright © 2011-2022 走看看