第六周作业

  • 要求二

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

1.实验代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int car,x;
 5     float percent;
 6     char ch='%';
 7     scanf("%d %d",&car,&x);
 8     if(car<0||x<=0)printf("the input is error");
 9     else if(car<x*1.1f)printf("OK");
10     else if(car<x*1.5f){
11              percent=(car-x)*100.0f/x;
12              printf("Exceed %.0f%c. Ticket 200",percent,ch);}
13     else{
14          percent=(car-x)*100.0f/x;
15          printf("Exceed %.0f%c. License Revoked",percent,ch);}
16     return 0;
17 }

2.设计思路

(1)主思路

  • 第一步:定义整数型变量car(车速)、x(限速),浮点数变量percent(超速百分比)和字符型定量ch(‘%’);
  • 第二步:用scanf函数读入整数给car和x;
  • 第三步:用if elseif else函数结构先判断输入是否符合范围,再判断超速与否;
  • 第四步:其中若超速则判断范围并计算所对应的超速百分比并用printf函数输出百分比(后跟‘%’字符定量)和相应的超速结果语句。

注解:本题细节问题要注意整数与浮点数的转换和超速范围的开闭区间。

(2)流程图

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

printf函数中的%显示不出来导致PTA部分错误。

解决办法就是定义一个字符型定量ch=‘%’代替printf函数中原本的%符号。

4.本题PTA提交列表

部分错误即为上述遇到的问题。

 

题目7-2 计算油费

1.实验代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b;
 5     char c;
 6     double money=0;
 7     scanf("%d %d %c",&a,&b,&c);
 8     switch(b)
 9     {        case 90:money=6.95*a;break;
10              case 93:money=7.44*a;break;
11              case 97:money=7.93*a;break;
12              default:printf("error\n");break;
13     }
14     if(c=='m')
15        money=money*0.95;
16     else
17        money=money*0.97;
18     printf("%.2lf",money);
19     return 0;
20 }

2.设计思路

(1)主思路

  • 第一步 :定义整数型变量a(加油量)、b(汽油品种),字符型变量c(服务类型)和浮点数变量money(应付款额);
  • 第二步:用scanf函数读入整数给a和b,读入字符给c;
  • 第三步:用switch语句以b的不同情况运行获得相应种类汽油和油量的费用;
  • 第四步:用if-else语句对c进行类型的判断并计算出对应折扣后的费用;
  • 第五步:用printf函数输出最终结果money。

注解:本题细节问题要注意整数与浮点数的转换和结果应保留两位小数。

(2)流程图

 

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

用if函数判断字符变量时没有用单引号括中,导致编程错误。

解决办法就是用单引号括中m,即

4.本题PTA提交列表

第一个部分正确是由于浮点型变量用的float定义导致错误;

第二个部分正确是修改时程序时粗心顺手删掉了if函数中的符号导致错误。

 

题目7-3 比较大小

1.实验代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b,c,x;
 5     scanf("%d %d %d",&a,&b,&c);
 6     if(a<b){
 7             x=a;
 8             a=b;
 9             b=x;}
10     if(a<c){
11             x=a;
12             a=c;
13             c=x;}
14     if(b<c){
15             x=b;
16             b=c;
17             c=x;}
18     printf("%d->%d->%d",c,b,a);
19     return 0;
20 }

2.设计思路

(1)主思路

  • 第一步:定义整数型变量a,b,c(三个比较大小的数字)和x(赋值过程中间变量);
  • 第二步:用scanf函数读入整数给a,b,c;
  • 第三步:用三个if函数分别判断每两个数字的大小,再根据需要中途以x为中间变量进行赋值交换数字,最终使a,b,c大小呈依次递增;
  • 第四步:用printf函数按照题目要求格式输出即可。

注解:重点在于三个数字分别比较大小并按预定结果进行赋值交换,以及最终结果其间以“->”相连。

(2)流程图

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

 本题为课堂练习固没有错误,但是在具体编程进行数字交换时比较容易弄混。

4.本题PTA提交列表

 

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

1.实验代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b;
 5     char ch;
 6     scanf("%d %c %d",&a,&ch,&b);
 7     switch(ch){
 8         case '+':printf("%d",a+b);break;
 9         case '-':printf("%d",a-b);break;
10         case '*':printf("%d",a*b);break;
11         case '/':printf("%d",a/b);break;
12         case '%':printf("%d",a%b);break;
13         default:printf("ERROR");}
14     return 0;
15 }

2.设计思路

(1)主思路

  • 第一步:定义整数型变量a,b(题目所要求的两个整数)和字符型变量ch(用于switch循环);
  • 第二步:用scanf函数读入整数给a,b和读入字符给ch;
  • 第三步:用switch语句以ch的不同情况进行对应的代数运算并用printf函数输出结果,其中存在其他字符另输出“ERROR”。

注解:本题主要注意switch语句的格式规范以及输入输出的格式。

(2)流程图

 

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

scanf函数读入格式用“,”间隔导致PTA错误。

 将格式按题目要求改为空格间隔即可。

4.本题PTA提交列表

答案错误为scanf函数中忘记打入&符号导致错误;

部分正确为上述错误(即scanf函数读入用“,”间隔)。

 

  • 要求三

上传成功后coding.net项目的截图

Git地址:https://git.coding.net/cyq1076926262/NO.4.git

 

  • 要求四

个人总结

(1)本周所学内容或收获:

①巩固了switch循环语句的用法;

②学习了while循环语句及do while结构;

③自学了for语句的用法;

④自学了pow函数的用法(用于C题库第8题,以下百度搜索注意事项);

⑤修正了switch语句的流程图画法,如助教指出老师的错误之处,有时候老师的课件并不一定完美,我们更应该培养自身辨别能力。

(2)本周做学难点与不明白的知识点

我认为的难点:

①循环语句的运用;

②面对较复杂题目编程时如何精简逻辑。

不明白知识点:

没有未明白的知识点,只是新学习的循环语句还未熟练使用。

(3)对目前老师的上课形式有什么意见或建议:

希望将来专业课程的学习能更加注重编程问题。相比于花费更多时间做博客,我更愿意平衡一下时间去做C题库,因为通过本周C题库的做题,我更愿意也更有动力为了解题去学习新的语法、函数等等。当然关于博客的流程图我觉得还是挺有意义的,很有助于整理思路,无论是题前题后。

<11.12补>通过今天QQ群里老师、助教、其他同学的对话,我也有所感想。

①首先是我不认为有那么多绝对的事,比如什么每道题必须有错误,所以我认为助教这一角色的定位也是灵活的,在我看来只要他能对我起到正面作用,我就支持,反之,我会提出,有要求就必完成式的做作业可能是我的习惯吧,所以对于非常非常严格的博客我并不抵触,而通过其他观念看待问题的同学当然会产生不同的反应;

②关于老师、助教、同学的关系,一千个读者眼中有一千个哈姆雷特,我们每个人都各自有界定,我认为有一点不变的是他们的目的是教育学生而不是坑害学生,就严谨的思想来说,既然我想认真学习专业,为什么不多注意些呢;

③对于当前的每周作业来说,我也有一些我的意见,我认为更自由化的博客要求更能检验和提高我们的专业能力,总有人在努力,总有人更努力。

 

  • 要求五

1.点评作业

何宗彦http://www.cnblogs.com/hezongyan/)(1、14楼)

胡俊鲜http://www.cnblogs.com/123456hjx/)(3楼)

陈盈驰http://www.cnblogs.com/1999-cyc/)(1楼)

2.学习进度条(11/5 8:00~11/8 8:00)

 

posted @ 2017-11-07 23:36  C6H6  阅读(321)  评论(9编辑  收藏  举报