• 第四周作业


    1,题目一:计算分段函数
    1,实验代码

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

    2,设计思路
    (1)主要描述题目算法
    第一步,写好基本框架。
    第二步,使用双精度浮点型变量double定义变量x和y。
    第三步,采用scanf句型。
    第四步,采用if ,else句型进行筛选。
    第五步,输出f(x)=y。
    第六步,结束;
    (2)流程图

    3,本题调试过程碰到问题及解决办法
    <1>开头定义的是整型int main,且输入的x也为整数,为什么却用double定义x,我还没弄清。
    <2>下面出现了一个错误,查字典也不知道它说些什么,我找了半天才发现一个细微的错误,就是在(x=0)中少加了一个=号。哎,可花了我不少时间。

    2,题目二:A除以B
    1,实验代码

    #include<stdio.h>
    int main()
    {
    	int a,b;
    	double y;
    	scanf("%d %d",&a,&b);
    	y = (double)a/b;
    	if (b>0) 
                  printf("%d/%d=%.2f",a,b,y);
    	if (b<0)  
                  printf("%d/(%d)=%.2f",a,b,y);
    	if (b==0) 
                  printf("%d/0=Error",a);
    	return 0;
    	
     }
    

    2,设计思路
    (1)主要描述题目算法
    第一步,写好基本框架。
    第二步,使用int 定义a,b。双精度浮点型变量double定义变量y。然后确立y与a和b之间的关系。
    第三步,采用scanf句型。
    第四步,采用if 句型进行筛选(我选了最简单的方法)。
    第五步,输出y。
    第六步,结束;
    (2)流程图

    3,本题调试过程碰到问题及解决办法
    <1>一开始我是用自己的方法做的,出现了下面的情况,a/b还是整数型的,它将小数部分省略了。

    我将int改为double后,又在%f之间加.0。在c++上都能编译出,但在pta 上就是错,真不知道怎么搞的.


    怪不得错了,当我用如下图所示计算时就与条件不符了。

    上图有一个地方我发现了错误:%.0f其中的.0是四舍五入的意思,。然后我又改进了方法,得到了下图的提示,不过还是错,老师,助教,这题我真的需要你们的帮助了,我问了同学,他是下图右边版本的,我感觉差不多啊。就是我没加if(-100>A||A>100||-100>B||B>100)printf("the input is error");。等我加了后还是同样的提示,我就无语了。

    按照我自己的思路就是错,我请教了同学,他们跟我的思路不一样。我真的花了好多时间去找,可是一无所获,希望老师和助教看到后能给我一点启发。

    3,题目三:三天打鱼,两天晒网
    1,实验代码

    #include<stdio.h>
    int main()
    {
      int x,y;
      scanf("%d",&x);
      y=x%5;
      if(y>3||y==0)
           printf("Drying in day %d",x);
      else  
           printf("Fishing in day %d",x);
      
      return 0;
    }
    

    2,设计思路
    (1)主要描述题目算法
    第一步,写好基本框架。
    第二步,使用int 定义变量
    第三步,采用scanf句型。确立x与y的关系。
    第四步,采用if 句型进行筛选
    第五步,结束;
    (2)流程图
    3,本题调试过程碰到问题及解决办法
    <1>一开始按照我自己的思路是按照下图所写可是出现了一个小情况,然后我就发现是y的范围写错了。

    <2>我又换了另外一种方法,我的漏洞一下子就出来了,举个例子,y大于等于0且小于等于3,应写成y>=0&&y<=3.应注意其中等于号与大小于号之间的位置位置,否则就是错。

    4,题目四: 12-24小时制
    1,实验代码

    #include<stdio.h>  
    int main()  
    {  
        char c;  
        int a, b;  
        scanf("%d%c%d", &a, &c, &b);  
        if (a >= 12)  
        {  
      
            if (a >= 13)//计算大于等于13点的  
            {  
                if (a == 24)  
                    printf("0:%d AM
    ", b);  
                else  
                {  
                    a = a - 12;  
                    printf("%d:%d PM
    ", a, b);  
                }  
            }  
            else  
                printf("%d:%d PM
    ", a, b);//计算12点的  
        }  
        else//计算小于12点的  
            printf("%d:%d AM
    ", a, b);  
        return 0;  
    }  
    

    (1)主要描述题目算法
    第一步,写好基本框架。
    第二步,使用int 定义变量,还要使用字符型变量char。
    第三步,采用scanf句型。
    第四步,采用if 句型进行筛选
    第五步,结束;
    (2)流程图
    3,本题调试过程碰到问题及解决办法
    没问题

    5,题目五: 计算个人所得税
    1,实验代码

    #include<stdio.h>
    int main()
    {
      int x;
      double y;
      scanf("%d",&x);
      if (x<=1600) y=0;
      if (x>1600&&x<=2500) y=(x-1600)*0.05;
      if (x>2500&&x<=3500) y=(x-1600)*0.10;
      if (x>3500&&x<=4500) y=(x-1600)*0.15;
      if (x>4500) y=(x-1600)*0.20;
      printf("%.2f",y);
      return 0;
    }
    

    2,设计思路
    (1)主要描述题目算法
    第一步,写好基本框架。
    第二步,使用int 和double定义变量
    第三步,采用scanf句型。确立x与y的关系。
    第四步,采用if 句型进行筛选
    第五步,结束;
    (2)流程图
    3,本题调试过程碰到问题及解决办法
    <1>我刚开始以为乘以百分之五是这样的:5%。结果我发现是错误的。然后就用0.05代替了。暂时还没有找到答案。

    6,题目六: 阶梯电价
    1,实验代码

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

    2,设计思路
    (1)主要描述题目算法
    第一步,写好基本框架。
    第二步,使用int 和double定义变量
    第三步,采用scanf句型。确立x与y的关系。
    第四步,采用if 句型进行筛选
    第五步,结束;
    (2)流程图

    3,本题调试过程碰到问题及解决办法
    终于碰到一个一个能在十分钟内解决的问题了,这题没问题。

    7,题目七: 出租车计价
    1,实验代码

    #include<stdio.h>
    int main()
    {
      double a,c;
      int b;
      scanf("%lf %d",&a,&b);
      if(a<=3){if (b<5) c=10;
                   else c=10+2*(b/5);
      }
      if(a>3&&a<=10){if (b<5) c=10+2*(a-3);
                            else c=10+2*(a-3)+2*(b/5);
      }
      if(a>10) {if (b<5) c=24+3*(a-10);
                else c=24+3*(a-10)+2*(b/5);
      }
      printf("%.0f",c);
      return 0;
    }
    

    2,设计思路
    (1)主要描述题目算法
    第一步,写好基本框架。
    第二步,使用int 和double定义变量
    第三步,采用scanf句型。确立a,b,c之间的的关系。
    第四步,采用if 句型进行筛选
    第五步,结束;
    (2)流程图

    3,本题调试过程碰到问题及解决办法
    终于碰到一个一个能在十五分钟内解决的问题了,这题没问题。

    8,我的GIT账号为
    https://coding.net/u/AI1452349541/p/H.K.2.1/git
    下面是上传成功的截图

    9,本周学习内容总结
    1,复习了if语句,对分段函数的编程有了更深入的了解。
    2,学习了有关字符型变量的编程,了解了字符型与数字型编程的区别。
    3,学会了一些C语言中数学符号的含义,比如a=2;b=a++则表示先将a的值赋给b,a再加1,则a=3,b=2.而b=++a则表示a先加1,,然后再将a的值赋给b。
    4,学会了四舍五入的表示方法,%.0f就是表示将最后输出的值四舍五入。

    10,点评同学作业
    http://www.cnblogs.com/gzk08-20/p/7709327.html
    http://www.cnblogs.com/zxwd/p/7718920.html
    http://www.cnblogs.com/1999-09-22/p/7745742.html

    11,本周学习进度

    热爱每一天
  • 相关阅读:
    【HDU1698】 Just a Hook 【线段树入门】
    【转载】线段树 区间合并 小结
    Codeforces 1138B(列方程枚举)
    Codeforces 1132G(关系转化树+dfn+线段树)
    Codeforces 1132E(转化+dp)
    Codeforces 1132D(二分模拟)
    Codeforces 1131G(dp)
    洛谷1941(dp)
    洛谷2758(字符串dp)
    Codeforces 1143B(思维、技巧)
  • 原文地址:https://www.cnblogs.com/blueblog6/p/7721746.html
Copyright © 2020-2023  润新知