第四周作业

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)流程图
1238300-20171103085421295-1771287377.png%0A

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

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)流程图
1238300-20171103084828013-1032250652.png%0A

3,本题调试过程碰到问题及解决办法
<1>一开始我是用自己的方法做的,出现了下面的情况,a/b还是整数型的,它将小数部分省略了。
1238300-20171024205640863-50145300.png
我将int改为double后,又在%f之间加.0。在c++上都能编译出,但在pta 上就是错,真不知道怎么搞的.
1238300-20171024213457410-1487069081.png
1238300-20171024213512832-339438055.png
怪不得错了,当我用如下图所示计算时就与条件不符了。
1238300-20171025160754551-1004388635.png
上图有一个地方我发现了错误:%.0f其中的.0是四舍五入的意思,。然后我又改进了方法,得到了下图的提示,不过还是错,老师,助教,这题我真的需要你们的帮助了,我问了同学,他是下图右边版本的,我感觉差不多啊。就是我没加\if(-100>A||A>100||-100>B||B>100)printf("the input is error");。等我加了后还是同样的提示,我就无语了。
1238300-20171026194244039-1284626609.png

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

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的范围写错了。
1238300-20171025193459785-371470284.png

<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\n", b);  
            else  
            {  
                a = a - 12;  
                printf("%d:%d PM\n", a, b);  
            }  
        }  
        else  
            printf("%d:%d PM\n", a, b);//计算12点的  
    }  
    else//计算小于12点的  
        printf("%d:%d AM\n", 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)流程图
1238300-20171103095642670-837717248.png%0A

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)流程图
1238300-20171103090343763-372319215.png%0A

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

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

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,本周学习进度
1238300-20171028154740961-2111925306.png

1238300-20171028154808851-105988683.png%0A1238300-20171028154818258-65665435.png%0A

转载于:https://www.cnblogs.com/blueblog6/p/7721746.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值