第六周作业

要求一:

已完成PTA第六周作业所有题目

要求二:

题目7-1 高速公路超速处罚
1.实验代码

#include <stdio.h>
int main()
{
  int c,x;
  scanf("%d %d",&c,&x);
  if(c<x*1.1)
  {
    printf("OK
");
  }
  else if(c>=1.1*x&&c<1.5*x)
  {
    float d=100*(c-x)/(float)x;
	printf("Exceed %.0f%%. Ticket 200
",d);
  }
  else
  {
	float d=100*(c-x)/(float)x;
	printf("Exceed %.0f%%. License Revoked
",d);
  }
  return 0;
}

2.设计思路
(1)算法
第一步:设置车速、限速的值c、x为整形变量;
第二步:输入c、x的值;
第三步:设置超出了限速百分之多少的值d为float形
第四步:写if循环语句
如果没超出本车道限速的10%,则输出OK,如果超出本车道限速的10%且小于50%,则输出"Exceed d% Ticket 200“,如果超出本车道限速的50%及以上,则输出“Exceed d%. License Revoked”。

注意:由于d为浮点形,在计算d的时候它的运算所用到的量也要换为浮点形的。
(2)流程图

3.本题调试过程碰到问题及解决办法
因为本题以前做过,所以在这次调试中并未遇到问题。
4.本题PTA提交列表

题目7-2 计算油费
1.实验代码

#include <stdio.h>
int main()
{
  int a,b;
  char c;
  double d;
  scanf("%d %d %c",&a,&b,&c);
  if(b==97)
  {
    if(c=='m')
    {
      d=(7.93*a)*0.95*1.0f;
    }
    else
    {
      d=(7.93*a)*0.97*1.0f;
    }
  }
  else if(b==93)
  {
    if(c=='m')
    {
      d=(7.44*a)*0.95*1.0f;
    }
    else
    {
      d=(7.44*a)*0.97*1.0f;
    }
  }
  else
  {
    if(c=='m')
    {
      d=(6.95*a)*0.95*1.0f;
    }
    else
    {
      d=(6.95*a)*0.97*1.0f;
    }
  }
  printf("%.2lf",d);
  return 0;
}

2.设计思路
(1)算法
第一步:设置加油量a,品种b为整形变量,服务类型c为字符变量,应付款额d为double形变量;
第二步:输入a,b,c的值(其中c的值为字符);
第三步:写if循环语句
如果97号汽油的时候,m服务等级时,应付款额为7.93a0.95,e服务等级时,应付款额d为7.93a0.97
如果93号汽油的时候,m服务等级时,应付款额为7.44a0.95,e服务等级时,应付款额d为7.44a0.97
如果90号汽油的时候,m服务等级时,应付款额为6.95a0.95,e服务等级时,应付款额d为6.95a0.97;
第四步:输出应付款额d的值。
注意:本题涉及到字符变量,在输入字符的时候要加‘单引号’。
(2)流程图

3.本题调试过程碰到问题及解决办法
(1)问题

由图得,本题是答案错误。
(2)解决办法:向老师询问得知,把float改为double即可。(因为对于本题float没有double精准,而且还有一个学长(一班的助教)建议我们尽量用double)
4.本题PTA提交列表

题目7-3 比较大小
1.实验代码

#include <stdio.h>
int main()
{
  int a,b,c,d;
  scanf("%d %d %d",&a,&b,&c);
  if(a>=b&&b>=c)
  {
    d=a,a=c,c=d;
  }
  else if(b>=a&&a>=c)
  {
  d=a,a=c,c=b,b=d;	
  }
  else if(a>=c&&c>=b)
  {
  d=a,a=b,b=c,c=d;
  }
  else if(b>=c&&c>=a)
  {
  	d=b,b=c,c=d;
  }
  else if(c>=a&&a>=b)
  {
  	d=a,a=b,b=d;
  }
  else 
  {
  	a=a,b=b,c=c;
  }
  
  printf("%d->%d->%d",a,b,c);
return 0;
}

2.设计思路
(1)算法
第一步:设置a,b,c,d四个数为整形变量;
第二步:输入a,b,c;
第三步:写if语句
我的思路:本题为比较大小,那我就默认为a<b<c,然后如果真实的数值与默认的不相符,那就用老师讲的水杯法(就是a,b两杯水要交换,需要再找一个杯,然后在相互交换)进行交换;
第四步:输出结果。
(2)流程图

3.本题调试过程碰到问题及解决办法
(1)问题

从题目来看,我是部分正确。
(2)解决办法:我又仔细的看了我的代码,发现我在赋值的时候(给让a,b,c的值从小到大)赋值错了,改正即可。
4.本题PTA提交列表

题目7-4 两个数的简单计算器 (必须使用switch结构实现)
1.实验代码

#include <stdio.h>  
int main()  
{  
    int a,b;  
    char c;  
  scanf("%d %c %d", &a,&c,&b);
        int d;  
        switch (c){  
            case '-':  
            {  
               d=a-b;  
                printf ("%d
", d);  break;  
            }  
            case '+':  
            {  
              d=a+b;  
                printf ("%d
",d);  break;  
            }  
            case '*':  
            {  
                d=a*b;  
                printf ("%d
",d);  break;  
            }  
            case '/':  
            {  
                d=a/b;  
                printf ("%d
",d);  break;  
            }  
            case '%':  
            {  
                d=a%b;  
                printf ("%d
",d); break;  
            }  
          
            default:printf("ERROR
");  
            }    
    return 0;  
}  

2.设计思路
(1)算法
第一步:设置a,b,d为整形变量,c为字符变量;
第二步:写switch语句
确定c为那个可以变化的量,然后,当c取各种不同符号的时候,写应有运算步骤,如果题目给的字符写完了,就写defaul;
第三步:输出d。
注意:字符要用’单引号‘
(2)流程图

3.本题调试过程碰到问题及解决办法
(1)问题

由图得,本题为编译错误。
(2))解决办法:
编译错误就是编译的不正确,因此看看字母大小写,有无括号,中英文什么的有没有错误,最后发现落了一个括号,改正即可。
4.本题PTA提交列表

要求三:

(1)Git地址:https://git.coding.net/jsjyuyaosong/usth--work.c.git
(2)上传截图



要求四:

个人总结

(1)本周你学习了哪些内容?收获了什么?
答:我学习了switch语句,此语句也是进行选择判断的,但有时比if方便。
(2)本周所学内容中你觉得哪些是难点?有哪些知识点还不明白?
答:我觉得switch这个新学的语句就是重点,对于知识点的掌握还不太熟练,具体在框架不是很熟,其它的都好。
(3)你对目前老师的上课形式有什么意见或建议?
答:我认为老师讲的形式很好,并无意见。

要求五:

互评和学习进度

1、作业互评
(1)金海东:http://www.cnblogs.com/jhd1127/p/7811138.html
(2)李锐:http://www.cnblogs.com/572453251asd/p/7811205.html
(3)王姝雯:http://www.cnblogs.com/phsudie/p/7801346.html
2、学习进度

IT小白
原文地址:https://www.cnblogs.com/jsjyys/p/7818602.html