代码改变世界

第六周作业

2017-11-07 09:22  魏鹏5班  阅读(296)  评论(11编辑  收藏  举报

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

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

2,,设计思路
<1>第一步:要考虑c的定义,即超过限速的百分比,用速度减去限速再除以限速。
第二步:会有出现小数的情况,要用到四舍五入。
第三步:多种情况,熟知的if else语句,注意限速中c乘以了100.0,故if中的判断为<10,<50。
<2>流程图:

3,本题调试过程中遇到的问题和解决方法。
错误截图:
遇到的问题:写完后发现不了错误,四舍五入也用到了,后两个要显示百分比的一直是百分之零。
解决方法:请教了同学,才发现是输出语句printf没有定义完全,在“\n”后少写了c。
pta提交列表:

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


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

2,设计思路
<1>第一步:题目涉及到字符问题,可以用char定义,并且在下面的if else语句中用单引号定义字符。
第二步:又是六种情况,即每种油有两种折扣方式,3*2=6。
第三步:在每个if ,else if,else中又有两个分类,即又要用到if,else。虽说麻烦不少,但是一步步写,还是可以写对的。
<2>流程图:

3,本题调试过程中遇到的问题和解决方法。
错误截图:
遇到的问题:我也不知道是怎么不对,感觉是定义变量的时候出了问题,无法解决,就去请教了同学。
解决方法:题目意思没理解好,以为是三个整数,却没发现有一个字符,题目中保留两位小数的,用到double型没错。直到解决了问题后,才写了设计思路。
pta提交列表:

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

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

2,设计思路
<1>第一步:三个数比较大小,需定义第四个变量,用来置换大小数。
第二步:分(a>b),(a>c),(b>c)三种情况进行数的大小置换,保证从小到大是a,b,c。
<2>流程图:

3,本题调试过程中遇到的问题和解决方法。
错误截图:本题题目上课时讲过,基本没有错误,无截图。
只有一些不仔细的错误,比如说有一个;没打,导致了部分正确。
pta截图:

题目7-4 两个数的简单计算器 (必须使用switch结构实现)
1,实验代码

#include<stdio.h>
int main()
{
	int A,B;
	char ch;
	scanf("%d %c %d",&A,&ch,&B);
	switch(ch){
	  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");}
	return 0;
}

2,设计思路
<1>第一步:又有字符的定义,用到char,在scanf中用%c定义。
第二步:必须是switch的语句,有固定的格式,套用就可以了,case加运算符,结尾处用到break。不符合题意的用default进行概括,输出ERROR。
<2>流程图:

3,本题调试过程中遇到的问题和解决方法。
错误截图:
遇到的问题:无论怎么写,输出的结果全是ERROR。而且程序再编译时没有提示错误。
解决方法:字符定义的问题,没有注意到scanf中的是%c,改过来就好了。
pta截图:

要求三:
coding.net截图:
git 地址:https://git.coding.net/WP2017024114/test.git

要求四:
个人总结
本周对if else的语句的编写有了更熟练的掌握,知道了switch的语句编写,字符型数据用char定义,在scanf中用%c定义数据。对C语言这门课程有了一点兴趣,喜欢那种一个程序再自己的手中编译运行,然后输入数字,执行成功的感觉。
难点就是感觉一个陌生的程序第一次写得时候永远是错的,只有多练习的即便才慢慢发现程序究竟是怎么运行的,才会写对。
上课形式没有什么意见,边教边练,是很好的教学方式了。

要求五:
点评的作业:
赵升旗:http://www.cnblogs.com/boke2017boke/p/7788452.html
王佳乐:http://www.cnblogs.com/wjl1124/p/7783547.html
何宗彦:http://www.cnblogs.com/hezongyan/p/7783360.html
表格和折线图: