zoukankan      html  css  js  c++  java
  • C语言程序设计第三次作业-选择结构(1)

    (一)改错题

    计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。
    输入输出样例1:
      Enterr x: 10.0
      f(10.0) = 0.1

    输入输出样例2:
      Enter x: 234
      f(234.0) = 234.0

    源程序(有错误的程序)

      #include <stdio.h> 
     int main(void)
     { 
        double x,y;
        printf("Enter x: 
    "); 
        scanf("=%f", x);
        if(x = 10);
        { 
            y = 1 / x
        }
        else (x != 10)
        {
           y = x;
        }
        printf("f(%.2f) = %.lf
    " x y); 
        return 0; 
     }
    

    错误信息1:
    错误原因:大括号里的语句没有加括号
    改正方法:在y=1/x后加封号
    错误信息2:
    错误原因:else后面有语句
    改正方法:将else后面的语句删掉
    错误信息3:
    错误原因:if后面加了封号
    改正方法:把if后面的封号去掉
    错误信息4:
    错误原因:x前后都没有逗号
    改正方法:在x前后加上逗号
    错误信息5:
    错误原因:printf后面加了
    改正方法:把 去掉
    错误信息6:
    错误原因:if语句中用了一个=,使其变成了赋值语句
    改正方法:加上一个=就行
    输出样式正确,如下图

    (二)学习总结

    1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。

    含义是如果a如果b,那么就执行x=x+1,否则就执行y=y+1;else应该与离他最近的if配对,规范化的格式如下:

    if(a&&b)
    {
    x=x+1
    }
    else
    {
    y=y+1;
    }

    2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?

    表达式不能够表达在这个区间,因为这是逻辑运算符,只表达结果为真或假,如果x>-10为真,这是x被赋值为1,如果1<10为真,这时整个表达式为1。正确的表达式应为(x>-10&&x<10)。

    3.C语言中输入数据时,如果遇到非法字符,则认为输入结束。运行程序(1),输入123a,看看输出结果是什么?你能解释是为什么吗?,
    程序
    (1)

    include <stdio.h>

    int main()
    {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("a = %d, b = %d ", a, b);
    return 0;
    }

    输出结果如图:
    原因:当输入123后,继续输入a,系统认为输入非法字符,输出停止

    scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。运行程序(2),分别输入123 45和123a,看看输出结果是什么?为什么?
    程序
    (2)

    include <stdio.h>

    int main()
    {
    int a, b,n;
    n = scanf("%d %d", &a, &b);
    printf("n = %d ", n);
    return 0;
    }

    输入123 45时:
    输入123a时:
    原因:第一次输入时两个数符合整形量;第二次输入时a为字符型变量,但是输出时%d输出的,所以a无法输出,只能输出整形量123。

    修改程序(1),当输入非法数据时,输出“Input error!".

    include <stdio.h>

    int main()
    {
    int a, b,n;
    n=scanf("%d %d", &a, &b);
    if(n==2)
    {
    printf("a = %d, b = %d ", a, b);
    }
    else
    {
    printf("Input error");
    }
    return 0;
    }

    4.对其他你认为需要进行总结的内容进行总结
    *if里面是判断语句,不是赋值语句
    *注意double int float 和char之间的不同,double是用%lf来定义,int是用%d来定义,float是用%f来定义,而char是用%c来定义
    *每条switch语句后面都得有break;

    (三)实验总结
    我的学号尾数是单数,应完成选择结构的3、5、7、9

    7-3 回文数(10 分)
    (1)题目
    判断一个5位数是不是回文数。例如12321是一个回文数,即它的个位与万位相同,十位与千位相同。
    (2)流程图

    (3)源代码

    include<stdio.h>

    int main(void)
    {
    int i,a,b,c,d,e;
    scanf("%d",&i);
    a = i/10000;
    b = (i/1000)%10;
    c = (i/100)%10;
    d = (i/10)%10;
    e = i%10;
    if(a == e&&b == d)
    {
    printf("yes");
    }
    else
    {
    printf("no");
    }
    return 0;

    }
    (4)测试数据及运行结果

    (5)实验分析
    问题:不会求个位十位上的数
    解决方法:请教同学,现在懂了

    7-5 计算火车运行时间(10 分)
    (1)题目
    根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
    (2)流程图


    (3)源代码

    include <stdio.h>

    int main ()
    {
    int a,b,c,d,e,f,g,h;
    scanf("%d%d",&a,&b);
    c = a / 100;
    d = a % 100;
    e = b / 100;
    f = b % 100;
    g = e - c;
    h = f - d;
    if(f < d)
    {
    g = g - 1;
    h = 60 + h;
    }
    printf("%02d:%02d",g,h);
    return 0;
    }

    (4)测试数据及运行结果

    7-7 三天打鱼两天晒网(10 分)
    (1)题目
    中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
    (2)流程图

    (3)源代码

    include <stdio.h>

    int main (void)
    {
    int N;
    scanf("%d",&N);
    if(N % 5 == 1 || N % 5 == 2 || N % 5 == 3)
    {
    printf("Fishing in day %d",N);
    }
    if(N % 5 == 4 || N % 5 == 0)
    {
    printf("Drying in day %d",N);
    }
    return 0;
    }
    (4)测试数据及运行结果

    7-9 阶梯电价(10 分)
    (1)题目
    为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。
    (2)流程图

    (3)源代码

    include <stdio.h>

    int main (void)
    {
    int n;
    double x=0,y=0;
    scanf("%d",&n);
    if(n>=0&&n<=50)
    {
    x=n0.53;
    printf("cost=%.2f",x);
    }
    else if(n>50)
    {
    y=50
    0.53+(n-50)*0.58;
    printf("cost=%.2f",y);
    }
    else
    {
    printf("Invalid Value!");
    }
    return 0;

    }
    (4)测试数据及运行结果

    (5)实验分析
    在scanf中一直丢&符号,printf后忘加封号。

    (四)PTA提交列表

    PTA中完成选择结构(1)习题集的提交列表截图。注意:截图必须显示题目集名称和用户名

  • 相关阅读:
    electron调用c#动态库
    Mybatis使用自定义类型转换Postgresql
    Spring Boot Security And JSON Web Token
    从零开始把项目发布到NPM仓库中心
    从零开始把项目发布到Nuget仓库中心
    从零开始把项目发布到maven仓库中心
    vue项目中如何在外部js中例如utils.js直接调用vue实例及vue上挂在的方法
    vue单页应用在页面刷新时保留状态数据的方法
    Vue watch 监听复杂对象变化,oldvalue 和 newValue 一致的解决办法。
    vue项目的登录跳转代码
  • 原文地址:https://www.cnblogs.com/zrx--/p/7746615.html
Copyright © 2011-2022 走看看