代码改变世界

第六周作业

2017-11-08 00:23  孙佳钰  阅读(233)  评论(6编辑  收藏  举报

要求二
题目一:高速公路超速处罚
1.实验代码

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

2.实验思路
(1)题目算法
第一步:定义车速b,与限速c
第二步:计算车速与限速的差值(b-c)除以限速b,得出超速度或者未超速的百分比,乘以100,得到百分比的整数位定位x
第三步:将所得的x与10与50作比较
第四步:x <10即为OK,否则即输出题目对应的英文

(2)流程图:

3.本题调试过程中遇到的问题及解决办法
错误截图

问题:之前用Devc++做的时候可以正常运行但是只限于整数部分,输入其他带小数时,则不能输出
解决办法:同学说要用double型来定义x,将float改为了double,双精度函数,精度更高
4.本题PTA提交列表

题目二:计算油费
1.实验代码

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

2.实验思路
(1)题目算法
第一步:定义a,b以及定义字符c
第二步:运用switch函数,分为三种事件:90 93 97并分别列出计算公式求x
第三步:此事件为switch...break 的结构
第四步:输出用printf 并且取到小数点后两位

(2)流程图

3.本题调试过程中碰到的问题及解决方法
错误截图:

遇到的问题及解决方法:
问题:PTA显示编译部分正确,但是不知道怎么回事
解决办法:后来询问了会的同学发现是在事件情况case后忘记用break;
4.本题PTA提交列表

题目三:比较大小
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)题目算法

 第一步: 定义a,b,c,d,并再取t为可替换变量
 第二步: 比大小一共分为三种可能用if列出
 第三步: 如果a>b ,则用t替换a,另a=b,再使b=t,  即可实现转换, 如果a<b,则相反;
 第四步: 如果a>c,则用t替换a,另a=c,再使c=t,即可实现转换, 如果a<c,则相反;
 第五步: 如果b>c,则用t替换b,另b=c,再使c=t,即可实现转换,如果b<c,则相反;   
 第六步: 按照上述的大小输出最后的顺序: “ %d->%d->%d”(形式)

(2)流程图

3.本题调试过程中碰到的问题及解决方法
错误截图:

遇到的问题及解决方法:
问题:可运行,但是数字不是从小到大列出的,而是从大到小排列
解决办法:看了符号,以为从小输入就是比较水小,但是把替换的字母搞倒了,所以导致整体反过来了
4.本题PTA提交列表

题目四:两个数的简单计算器
1.实验代码

int main()  
{  
    int num1,num2;  
    char x;  
    scanf("%d %c %d",&num1,&x,&num2);  
    switch(x){  
        case '+':  
            printf("%d",num1+num2);  
            break;  
        case '-':  
            printf("%d",num1-num2);  
            break;  
        case '*':  
            printf("%d",num1*num2);  
            break;  
        case '/':  
            printf("%d",num1/num2);  
            break;  
        case '%':  
            printf("%d",num1%num2);  
            break;  
        default:  
            printf("ERROR");  
    }  
      return 0;
}

2.实验思路
(1)题目算法
第一步:定义两个数num1.num2以及一个字符x(下述的符号)
第二步:运用switch函数将事件分类,运算符为+、-、*、/、%时,在一行输出相应的运算结果
第三步:最后输出所求的运算

(2)流程图

3.本题调试过程中碰到的问题及解决方法
错误截图:

遇到的问题及解决方法:
输入的时候忘记其他应该用default表示,而运用了else,把switch型当作了if else型

4.本题PTA提交列表

要求三:
git地址:https://git.coding.net/Iams/homework.git
项目截图:

要求四:
1.本周学习了:
(1)内容总结:
1)在switch语句的每个语句段中都使用break语句
switch(表达式){
case 常量表达式1:语句段1; break;
case 常量表达式2:语句段2; break;
....…
case 常量表达式n:语句段n ; break;
default : 语句段n+1; break;
}
2)如上述但是在switch中不使用break的情况
switch(表达式){
case 常量表达式1:语句段1;
case 常量表达式2:语句段2;
....…
case 常量表达式n:语句段n;
default : 语句段n+1;
}
3) 字符型数据 :表征英文字母、符号等的数据,用char表示
字符常量:用单引号括起来的单个普通字符或转义字符
字符串常量:用双引号(“”)括起来的0个或者多个字符组成的字符序列
4)调用 scanf 和 printf 输入输出字符,输入时,操作数和运算符之间不能出现空格 。
5)交换:用一个t值替换原有的数据变量,实现将其位置调换。
(2)遇到的问题及解决办法:
1)课上老师在带领做替换的题目中不理解替换如何操作
解决办法:询问了同学,用t
2) 作业中不理解char在代码中的含义,看了书,看懂char意味着定义的是字符而并非某个特定的数
3)在switch型中,其他要用defloat表示,而else用于if型函数
2.点评的三位同学:
孙 娜:http://www.cnblogs.com/sun-na-/p/7788913.html
孙美玲:http://www.cnblogs.com/sunmeiling/p/7795932.html
马宇欣:http://www.cnblogs.com/mayuxin/p/7792575.html
3.表格及折线图:
表格:

折线图: