第六周作业

要求二

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

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

2,设计思路
(1)题目算法
第一步:理解题意,定义两个变量c,s和一个浮点型变量x,因为x为百分数,所以要用double。
第二步:根据题意列出计算公式:超速百分比=(车速-限速)*100/限速。
第三步:用if else语句输出三种结果。
(2)流程图

3,本题调试过程遇到问问题及解决方法
(1)错误截图

(2)遇到问题
本题真是伤透了脑筋,刚开始读完题不知道怎么列计算公式,后来反复读题问同学知道了,但是没按照题目要求顺序输出像:先输出正常行驶,再应处罚款,最后吊销驾照。导致提交错误。(通过本题了解到想要输出一个%号,就必须用%%,因为c语言中%是个特定的字符将会和他后面的一个字符组成一个输出形式)
4,PTA提交列表

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

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

2,设计思路
(1)题目算法
第一步:首先读懂题意,有两种服务类型和三种型号汽油,两种折扣形式,共有六种情况。
第二步:用switch语句进行讨论,用int定义整数a,b,char定义字符c,定义浮点数y。
第三步:用if区分两种服务类型,每种服务类型的三种油号类型用switch语句输出。
(2)流程图

3,本题调试过程遇到问题及解决方法
(1)错误截图

(2)遇到问题
刚开始接触switch语句还有点不熟练,总出现错误,在服务类型为协助服务类型时输入的三种型号被我误打成为一种"90"号型号,所以导致提交错误。
4,PTA提交列表

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

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

2,设计思路
(1)题目算法
第一步:首先理解题意,本题是比较三个数的大小,需要再找一个变量t做替换。
第二步:用int定义a,b,c,t。
第三步:比较a,b,c的大小,当a>b时,让t=a,a=b,b=t实现大小替换,依次进行替换。
第四步:按照题目要求用->连接,按照由小到大的顺序输出。
(2)流程图

3,遇到问题及解决方法
(1)错误截图

(2)遇到问题
本题是老师课上讲过的题,但是仍就出错了,将t赋值给a了,可是t并没有值,导致错误,应该是t=a。
4,PTA提交列表

题目7-4两个数的简单计算器
1,实验代码

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

2,设计思路
(1)题目算法
第一步:这道题用到switch语句,要求计算两个数的加减乘除和求余五种情况,还有在输入非法符号时输出“ERROR”共有六种情况。
第二步:因为两个整数,所以用int定义函数number1,number2。定义一个运算符号用char定义函数op。
第三步:输出两个数的加减乘除求余运算方法和非法符号的结果。
(2)流程图

3,遇到问题及解决方法
(1)错误截图

(2)遇到问题
由于看到题目要求在除法和求余时的分母非零,所以就在switch语句输出时定义了number!=0结果导致错误,后来问同学知道只需在运行时输入非零的数就好。
4,PTA提交列表

要求三

git地址
https://git.coding.net/MAYUXIN/mayuxin.git
截图:

(1)学习内容及收获:
本周学习到了一个新的 switch 语句,switch和case还有break共同组建成一种分支结构语句,还有对应流程图的画法。
当使用 if 的嵌套语句时要进行缩进。
while与do while的循环解构和对应的流程图画法。
比较几个数大小时,要交换两个变量的值,并再找一个变量做替换。
(2)内容难点及问题:
感觉刚开始接触switch语句,还有点不好理解。比较大小时,交换两个变量的值还有点蒙,但是经过问同学和自己琢磨现在好点了。
(3)上课形式及建议:
对于已经上课好几周的我习惯了目前的上课形式,建议老师在讲完新的内容时能多给我们一点写程序的时间,上课的速度对我来说有点快,但是可能是进度的需要,希望能多说一下较难的知识点,只是一个建议而已。

要求五

(1)被点评同学作业的链接
孙娜:http://www.cnblogs.com/sun-na-/p/7788913.html
孙佳钰:http://www.cnblogs.com/woshisun/p/7795878.html
孙美玲:http://www.cnblogs.com/sunmeiling/p/7795932.html
(2)表格及折线图

posted @ 2017-11-07 22:18  马宇欣  阅读(256)  评论(12编辑  收藏  举报