• 第六周作业


    【1】

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

    1.实验代码

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

    2.设计思路
    (1)阅读题目知道本题共分三种情况,车速小于限速的10%,车速大于限速的10%小于限速的50%,车速大于限速的50%。
    (2)需要定义两个整数,车速和限速,和一个浮点数,超速的百分率。
    (3)x定义的是百分数,所以输入公式时要带上double。
    (4)%.0f%%解释:%.0f是输出控制格式,表示输出一个double型数据,小数部分长度为0,即只有整数部分。不足左面空格补齐,即右对齐。而%%则输出来就是%。(百度解释)我理解应该是题目要求输出x%,%%应该代表一种输出格式为了输出%。
    3.流程图

    4.遇到的困难及解决方法
    遇到的困难:开始设计是我直接将百分率定义成x%,觉得能一步解决。也不知道浮点数计算需要打double,%输出要打双百分号。
    第一次打出的结果如图,错的比较离谱(由于截图前没看见要截错误提示,这个错误又比较离谱就没再照打重新截图。)

    解决的方法:比较简单粗暴,就是百度一下,对比自己和他的有什么差别,发现x%的定义完全错误,调整后在x的计算式上又出现了错误。(部分正确pta中没有错误提示,c++中能容此错误。)

    由于忽略了x定义的是浮点数,式子前打了double应乘以100,将x的计算式改成x=(double)(a-b)*100/(double)b。类似x%输出要打双百分号这种不懂的再百度了解一下,具体意思详见设计思路(4)。
    5.pta截图



    编译错误的都是错误截图的第一张,部分内容有所改动,错误方向一致。
    部分正确的都是错误截图的第二张,所犯的错误如解决方法中所说的。

    题目7-2计算油费

    1.实验代码

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

    2.设计思路
    (1)根据服务类型自助和协助可分两种情况,再根据油号自助与协助分别有三种情况,共计六种。
    (2)需要将所付费用定义成浮点数,将加油量和汽油品种定义成整数,服务类型需要用字符定义。
    (3)先用if-else区分两种服务类型,在利用if输出三种油号情况,所付费用等于加油量乘以每种油号所需的费用再减去优惠的部分。

    3.流程图

    4.遇到的困难及解决的方法
    开始读题的时候,我首先想到的是用if else写,思路有误。(事先截的图,删没了,也没截错误提示,思路有问题,觉得没必要再打一遍相同的。)
    只提示编译错误,我就以为大体的思路是正确的,但又找不出编译上的错误。后来看了有提交的同学的设计思路,发现自己理解题意有误。参照同学是用switch编译的。老师在课上有讲switch,做过些练习,但我的印象并不深刻,在概念上有些模糊。通过在百度上的查找大概知道了switch意思,具体的如(@)中所说的。理解之后我尝试着打了一遍,仍然显示答案错误。


    经过错误提示后发现油量应该是整型函数,而我将其定义成了浮点型函数,导致输出答案错误,纠正后得到了正确答案。
    但在我画流程图时发现我无法确定switch的流程图该如何画,百度的说法也不统一。最后我只能放弃已经写好的设计思路改用if-else编译。不过,理解题意后发现用if-else也很好编译。

    在百度上了解的switch的大概意思:
    (@)switch类似于if else 叫开关语句,根据条件判断,选择某些语句执行.
    以一下这种方式输出:
    switch(c)
      {
      case 'A':.....;break;
      case 'B'......;break;
      ..........
      }
    5.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)题目要求比较三个数的大小,需要找一个变量做替换。
    (2)三个数都是整数,用int定义a,b,c及一个替换量t。
    (3)依次比较a,b,c的大小。a>b时,让t=a,a=b,b=t实现大小替换。a>c及b>c时也采用类似的方法进行替换。
    (4)最后按照由大到小的顺序输出,按题目要求用->连接。
    3.流程图

    4.遇到的困难及解决方法
    本题和老师在课上讲的是相同的,没有遇到什么困难,只是在打代码的时候有些疏忽忘记打scanf了。

    5.pta截图

    由于粗心忘记打scanf了,导致结果错误,以后会细心点。

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

    1.实验代码

    #include <stdio.h>  
    int main()  
    {  
        int num1,num2;  
        char operate;  
        scanf("%d %c %d",&num1,&operate,&num2);  
        switch(operate){  
          
            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)本题要求用switch编译,有了第二题的经验本题就好打了很多。
    (2)本题要求计算两个数的加减乘除的运算,有4种情况。加上取余和在输入非法符号输出“ERROR”的共6种情况。作用switch-case-break输出。
    (3)两个数都是整数,用int定义成整型函数num1,num2。还要定义一个运算符号,用char定义成字符型函数operate。
    (4)用switch的输出方式输出两个数加减乘除的运算方法,取余以及输入非法符号的结果。
    3.流程图

    4.遇到的困难及解决的方法
    因为有了第二题的经验,本题就好编译很多。并没有像第一题和第二题一样出现思路上的错误。但有些小细节上还是出现了问题。开始并不知道switch后的括号内要打什么,以为是默认填c。后来在网上查找了一些switch的相关程序,发现定义的字符函数是什么,switch后的括号内就写什么。经过多次整改后才找到最致命的错误,才完成了本题。

    5.pta截图

    错误的问题如4中所说的是主要错误,还有就是一些书写上的纰漏,如产生中英文混打,结尾忘记打分号等。

    【2】

    git截图

    git地址
    https://git.coding.net/sunna1/text.git

    【3】

    个人总结
    1.学习内容:本周继续了上周的if-else的学习,区分了if else和else if的区别。又学习了字符型函数,字符型函数要用char定义,字符常量是用单引号括起来的单个普通字符或转 义字符。还学习了交换变量的值,需要加一个的变量做替换,用来实行变量间的转换。在课上,老师也讲了switch语句。在看了课程总结后,我发现老师讲的十分细致,但我却 没什么印象。老师课件里讲的要比百度清晰的多,无论从switch输出方式还是流程图的设计都十分的准确易懂。通过这件事我总结出了两点经验。第一就是在做作业前先看看老 师发的总结。要是我在做作业前看了第二题就不会打的那么坎坷了,也会避免产生很多误区。第二就是上课一定要认真听,用心听。
    2.收获:除了在学习内容中提到的学到的新知识,我觉得独立思考的能力有所提升,虽然有时候还要请教别人,但是不会像以前一样不会就问,现在有了一个思考的过程,实在不懂得再去问。
    3.难点:完成此次作业遇到的最大的问题就是switch语句。我觉的这个地方有点难,但也可能是switch练习的没有if else多,不太熟练的原因。
    4.不明白:现在学习内容都懂了,但在打代码时还是总出现问题,大大小小的问题。
    5.建议意见:老师之前让我们看过提问的艺术。我觉得回答问题也是一门艺术。对于简单的问题直接让自己解决或直接忽略不予回答,我觉得这种处理的方式并不可取。如何既能引导提问者自己思考出结果又不显得那么高冷,是个值得思考的问题。

    【4】

    评论作业
    马宇欣:http://www.cnblogs.com/mayuxin/p/7792575.html
    孙美玲:http://www.cnblogs.com/sunmeiling/p/7795932.html
    孙佳钰:http://www.cnblogs.com/woshisun/p/7795878.html
    表格与折线图
    表格:

    折线图:

  • 相关阅读:
    random、shutil、shevle、标准输入输出错误流
    Python中Json 和 pickle 详解
    Python 中的sys、os、os.path模块总结
    Python 中time,calendar,datatime模块总结
    包的概念和导入包的方法
    Python 中模块及其导入方式
    迭代器和生成器
    python 函数参数
    JAVA 配置Path环境变量
    腾讯云服务器简单配置web项目
  • 原文地址:https://www.cnblogs.com/sun-na-/p/7788913.html
Copyright © 2020-2023  润新知