题目7-1 计算分段函数[1]
#include<stdio.h>
int main()
{
float x,y;
scanf("%.1f",&x);
if(x!=0)
y=1.0/x;
else
y=0.0;
printf("f(%.1f) = %.1f",x,y);
return 0;
}
设计思路
Begin
Input x
If x≠0
计算y=1.0/x
Else
计算y=0.0
Printf f(x)=y
end
![](https://i-blog.csdnimg.cn/blog_migrate/d672813e07e3b59d7c75ecffe79062ce.png)
错误截图及改正
![](https://i-blog.csdnimg.cn/blog_migrate/7c82985c4978e296ee128bbddf160b41.png)
错误:scanf("%.1f",&a)没有这种但可以写成这样scanf("%5f",&a)意义是输入的最大为五位数(包括小数点)
列如 输入12345时输出为12345 输入123.45时输出为123.4 输入为0.12345时输出为0.123
. 解决方法:百度
题目7-2 A除以B
-
#include<stdio.h> int main() { float A,B; scanf("%f %f",&A,&B); if(A>=-100&&B==0) printf("%.0f/0=Error",A); else if(A>=-100&&B>0) printf("%.0f/%.0f=%.2f",A,B,A/B); else printf("%.0f/(%.0f)=%.2f",A,B,A/B); return 0; }
伪代码及流程图
Begin
Input A and B
If A≥-100 and B=0
Printf A÷0=error
Else if A≥-100 and B>0
Printf A÷B=A/B
Else
Printf A÷(B)=A/B
End
![](https://i-blog.csdnimg.cn/blog_migrate/3d1f40442bb7e9b278cff7a0bcdfcbb7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6a45194f4893ab8d3fa740f2a5759e38.png)
错误:=为赋值运算符即将等号右边值赋予左边 ==表示判断左右两边是否相等
题目7-6 阶梯电价
#include<stdio.h>
int main()
{
float a;
scanf("%f",&a);
if(a<=50&&a>0)
printf("cost = %.2f",a*0.53);
else if(a>50)
printf("cost = %.2f",(a-50)*0.58+26.5);
else
printf("Invalid Value!");
return 0;
}
伪代码及流程图
Begin
Input a
If 0<a≤50
Printf cost=a×0.53
Else if a>50
Printf cost=(a-50)×0.58+26.5
Else
Printf Invalid Value!
End
![](https://i-blog.csdnimg.cn/blog_migrate/c3853723d5bb86f4cb2052e5d4355fa4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4f80d2a19dc13b06e2b69ef227caa2cf.png)
错误:开始定义变量a为float类型但在输入时却用了%d
解决方法:自己解决
题目7-7 出租车计价
#include<stdio.h>
int main()
{
float a;
int b,f;
scanf("%f %d",&a,&b);
if(a<=3&&b<5)
f=10;
else if(a<=3&&b>=5)
f=10+b/5*2+0.5;
else if(a>3&&a<=10&&b<5)
f=10+(a-3)*2;
else if(a>3&&a<=10&&b>=5)
f=10+(a-3*2)+b/5*2;
else if(a>10&&b<5)
f=10+14+(a-10)*3;
else
f=(a-10)*3+24 +b/5*2+0.5;
printf("%d",f);
return 0;
}
伪代码及流程图
Begin
Input a,b
If a≤3 and b<5
计算f=10
Else if a≤3and b≥5
计算f=10+b÷5×2+0.5
Else if 3<a≤10 and b<5
计算f=10+(a-3)×2
Else if 3<a≤10 and b≥5
计算 f=(a-3)×2+b÷5×2
Else if a>10 and b<5
计算 f=10+14+(a-10)×3
Else
计算 f=(a-10)×3+24+b÷5×2 +0.5
Printf f
End
![](https://i-blog.csdnimg.cn/blog_migrate/5c1860c375ab4d4f0c2f334a0bffdc18.png)
错误纠正
![](https://i-blog.csdnimg.cn/blog_migrate/0989e0c0e23cc7860a1bee6ad9676cc6.png)
错误点:输入的值12.5为浮点数但定义变量时定义为int型
错误后果:当输入12.5时只能输出其整数部分12 如当输入33.456时输出为33
改正方法:用float定义该变量
Git账号地址:https://git.coding.net/guozhikang/www.git
Git上传代码成功截图
![](https://i-blog.csdnimg.cn/blog_migrate/53ef77d00d9e81d0c26d0f650dd14c3a.png)
作业表格及折线图
![](https://i-blog.csdnimg.cn/blog_migrate/abf93041c8bd16a370de771f89a4e1e3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a26c601222139c1635ddc380330661d8.png)
点评3个同学的本周作业
张乐:http://www.cnblogs.com/1999-09-22/p/7745742.html
胡俊鲜:http://www.cnblogs.com/123456hjx/p/7726541.html
孙娜:http://www.cnblogs.com/sun-na-/p/7729818.html
本周总结知识点:
- 1switch语句
- 2字符变量char
- 3强制转换
- 4逻辑运算符&& || !
- 5复合运算6关系运算
- 7关系运算 < > == !=
易错点:
- 1将关系符号==写成为=
- 2定义类型前后不配套如前面用int定义但后面用%f输出
- 3scanf语句中错用scanf("%.3 f",&a)错因见题目7-1错误及改正