代码改变世界

第六周作业

2017-11-12 12:31  金海宽  阅读(301)  评论(3编辑  收藏  举报

***PTA***

**题目7-1 高速公路超速处罚**

1.实验代码

 

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

 

2. 设计思路

 第一步:定义a,b,c;输入a,b。

第二步:设置if语句,先判断c<10时,输出OK。

第三步:再判断c<50时的情况,输出Exceed c%. Ticket 200。

第四步:剩下的情况,输出Exceed c%. License Revoked。

3.流程图

 

 

4.问题及解决方法

 此题之前做过,但重新做一遍的时候还是犯了一些马虎,在数据类型上出了差错,已解决。

**题目7-2 计算油费**

 1.实验代码

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

2. 设计思路

第一步:定义a,b,c,s,x,y且输入a,b,c。

第二步:当b=90,93,97时,定义y的值。

第三步:当c等于m或e时,定义x的值。

第四步:把x*y*a的值赋给s。

3.流程图

4.问题及解决方法

我试了很多种方式,用过while语句和do-while语句,但是写完后不太好看,而且总是“部分正确”。参考了同学的代码后,使用了switch语句,不仅解决了问题,而且代码看起来也很工整。

**题目7-3 比较大小**

 1.实验代码

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

2.设计思路

第一步:定义a,b,c并输入a,b,c。

第二步:讨论各种情况,一共七种情况。

第三步:设置if,else-if语句。

第四步:编译运行,结束。

3.流程图

4.问题及解决方法

我写的比较繁琐,一开始我一直觉得我的代码是正确的。但是pta一直提示等价时的情况,然后我加了一个else-if语句else if(c==b&&b==a)   printf("%d->%d->%d\n",a,b,c);问题就解决了。

**题目7-4 两个数的简单计算器 **

 1.实验代码

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

2.设计思路

第一步:定义a,b,c;输入a,c,b.

第二步:讨论当c为+,-,*,/,%时的情况并运用switch语句。

第三步:如果输入的c没有上述符号,则输出ERROR。

3.流程图

4.问题及解决方法

以前做过此类题,在解决过程中并没有什么太大的问题;只不过我审题不仔细,忘记写default时的情况,出现部分正确的提示。

***GIT***

地址:https://git.coding.net/kimhae/test.git

***个人总结***

本周学习了while,do-while,switch等语句,通过pta等练习,我初步的掌握了循环语句,但还是有些不熟练。

我认为循环语句不是太难,只是有些分不清每个语句的区别。

我觉得老师讲的很好。老师敲代码的时候,我们也跟着敲,我很喜欢这种方式。

***互评和学习进度***

互评:

http://www.cnblogs.com/jhd1127/p/7811138.html

http://www.cnblogs.com/572453251asd/p/7811205.html

http://www.cnblogs.com/jsjyys/p/7818602.html

学习进度: