第四周作业
1,题目一:计算分段函数
1,实验代码
#include<stdio.h>
int main()
{
double x;
double y;
scanf("%lf",&x);
if(x==0)
y=0;
else
y=1/x;
printf("f(%.1f) = %.1f",x,y);
return 0;
}
2,设计思路
(1)主要描述题目算法
第一步,写好基本框架。
第二步,使用双精度浮点型变量double定义变量x和y。
第三步,采用scanf句型。
第四步,采用if ,else句型进行筛选。
第五步,输出f(x)=y。
第六步,结束;
(2)流程图
3,本题调试过程碰到问题及解决办法
<1>开头定义的是整型int main,且输入的x也为整数,为什么却用double定义x,我还没弄清。
<2>下面出现了一个错误,查字典也不知道它说些什么,我找了半天才发现一个细微的错误,就是在(x=0)中少加了一个=号。哎,可花了我不少时间。
2,题目二:A除以B
1,实验代码
#include<stdio.h>
int main()
{
int a,b;
double y;
scanf("%d %d",&a,&b);
y = (double)a/b;
if (b>0)
printf("%d/%d=%.2f",a,b,y);
if (b<0)
printf("%d/(%d)=%.2f",a,b,y);
if (b==0)
printf("%d/0=Error",a);
return 0;
}
2,设计思路
(1)主要描述题目算法
第一步,写好基本框架。
第二步,使用int 定义a,b。双精度浮点型变量double定义变量y。然后确立y与a和b之间的关系。
第三步,采用scanf句型。
第四步,采用if 句型进行筛选(我选了最简单的方法)。
第五步,输出y。
第六步,结束;
(2)流程图
3,本题调试过程碰到问题及解决办法
<1>一开始我是用自己的方法做的,出现了下面的情况,a/b还是整数型的,它将小数部分省略了。
我将int改为double后,又在%f之间加.0。在c++上都能编译出,但在pta 上就是错,真不知道怎么搞的.
怪不得错了,当我用如下图所示计算时就与条件不符了。
上图有一个地方我发现了错误:%.0f其中的.0是四舍五入的意思,。然后我又改进了方法,得到了下图的提示,不过还是错,老师,助教,这题我真的需要你们的帮助了,我问了同学,他是下图右边版本的,我感觉差不多啊。就是我没加\if(-100>A||A>100||-100>B||B>100)printf("the input is error");。等我加了后还是同样的提示,我就无语了。
按照我自己的思路就是错,我请教了同学,他们跟我的思路不一样。我真的花了好多时间去找,可是一无所获,希望老师和助教看到后能给我一点启发。
3,题目三:三天打鱼,两天晒网
1,实验代码
#include<stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
y=x%5;
if(y>3||y==0)
printf("Drying in day %d",x);
else
printf("Fishing in day %d",x);
return 0;
}
2,设计思路
(1)主要描述题目算法
第一步,写好基本框架。
第二步,使用int 定义变量
第三步,采用scanf句型。确立x与y的关系。
第四步,采用if 句型进行筛选
第五步,结束;
(2)流程图
3,本题调试过程碰到问题及解决办法
<1>一开始按照我自己的思路是按照下图所写可是出现了一个小情况,然后我就发现是y的范围写错了。
<2>我又换了另外一种方法,我的漏洞一下子就出来了,举个例子,y大于等于0且小于等于3,应写成y>=0&&y<=3.应注意其中等于号与大小于号之间的位置位置,否则就是错。
4,题目四: 12-24小时制
1,实验代码
#include<stdio.h>
int main()
{
char c;
int a, b;
scanf("%d%c%d", &a, &c, &b);
if (a >= 12)
{
if (a >= 13)//计算大于等于13点的
{
if (a == 24)
printf("0:%d AM\n", b);
else
{
a = a - 12;
printf("%d:%d PM\n", a, b);
}
}
else
printf("%d:%d PM\n", a, b);//计算12点的
}
else//计算小于12点的
printf("%d:%d AM\n", a, b);
return 0;
}
(1)主要描述题目算法
第一步,写好基本框架。
第二步,使用int 定义变量,还要使用字符型变量char。
第三步,采用scanf句型。
第四步,采用if 句型进行筛选
第五步,结束;
(2)流程图
3,本题调试过程碰到问题及解决办法
没问题
5,题目五: 计算个人所得税
1,实验代码
#include<stdio.h>
int main()
{
int x;
double y;
scanf("%d",&x);
if (x<=1600) y=0;
if (x>1600&&x<=2500) y=(x-1600)*0.05;
if (x>2500&&x<=3500) y=(x-1600)*0.10;
if (x>3500&&x<=4500) y=(x-1600)*0.15;
if (x>4500) y=(x-1600)*0.20;
printf("%.2f",y);
return 0;
}
2,设计思路
(1)主要描述题目算法
第一步,写好基本框架。
第二步,使用int 和double定义变量
第三步,采用scanf句型。确立x与y的关系。
第四步,采用if 句型进行筛选
第五步,结束;
(2)流程图
3,本题调试过程碰到问题及解决办法
<1>我刚开始以为乘以百分之五是这样的:5%。结果我发现是错误的。然后就用0.05代替了。暂时还没有找到答案。
6,题目六: 阶梯电价
1,实验代码
#include<stdio.h>
int main()
{
int x;
double y;
scanf("%d",&x);
if(x>=0&&x<=50)
y=x*0.53,
printf("cost = %.2f",y);
if (x>50)
y=50*0.53+(x-50)*0.58,
printf("cost = %.2f",y);
if(x<0)
printf("Invalid Value!");
return 0;
}
2,设计思路
(1)主要描述题目算法
第一步,写好基本框架。
第二步,使用int 和double定义变量
第三步,采用scanf句型。确立x与y的关系。
第四步,采用if 句型进行筛选
第五步,结束;
(2)流程图
3,本题调试过程碰到问题及解决办法
终于碰到一个一个能在十分钟内解决的问题了,这题没问题。
7,题目七: 出租车计价
1,实验代码
#include<stdio.h>
int main()
{
double a,c;
int b;
scanf("%lf %d",&a,&b);
if(a<=3){if (b<5) c=10;
else c=10+2*(b/5);
}
if(a>3&&a<=10){if (b<5) c=10+2*(a-3);
else c=10+2*(a-3)+2*(b/5);
}
if(a>10) {if (b<5) c=24+3*(a-10);
else c=24+3*(a-10)+2*(b/5);
}
printf("%.0f",c);
return 0;
}
2,设计思路
(1)主要描述题目算法
第一步,写好基本框架。
第二步,使用int 和double定义变量
第三步,采用scanf句型。确立a,b,c之间的的关系。
第四步,采用if 句型进行筛选
第五步,结束;
(2)流程图
3,本题调试过程碰到问题及解决办法
终于碰到一个一个能在十五分钟内解决的问题了,这题没问题。
8,我的GIT账号为
https://coding.net/u/AI1452349541/p/H.K.2.1/git
下面是上传成功的截图
9,本周学习内容总结
1,复习了if语句,对分段函数的编程有了更深入的了解。
2,学习了有关字符型变量的编程,了解了字符型与数字型编程的区别。
3,学会了一些C语言中数学符号的含义,比如a=2;b=a++则表示先将a的值赋给b,a再加1,则a=3,b=2.而b=++a则表示a先加1,,然后再将a的值赋给b。
4,学会了四舍五入的表示方法,%.0f就是表示将最后输出的值四舍五入。
10,点评同学作业
http://www.cnblogs.com/gzk08-20/p/7709327.html
http://www.cnblogs.com/zxwd/p/7718920.html
http://www.cnblogs.com/1999-09-22/p/7745742.html
11,本周学习进度