分离各位数
#include "stdio.h"
int main()
{
int a,b,c,d;//a为百位,b为十位,c为个位
printf("请输入一个三位数\n");
scanf("%d",&d);
a=d/100;
b=(d/10)%10;
c=d%10;
printf("百位=%d,十位=%d,个位=%d\n",a,b,c);
return 0;
}运行结果
知识点 /,%的使用分离个十百位。
心得 可以适当记得分离个十百位的方法。
分离整数和小数部分
#include "stdio.h"
int main()
{
float a;
int b,c;
printf("please input\n");
scanf("%f",&a);
c=a;//自动转换应该置于scanf之后,因为有了确定值才好自动转换。
b=(int)(a*1000)%1000;//()强制转换优先级2,自右而左结合。
printf("%d,%d\n",c,b);
//printf("%d\n",b);
return 0;
}运行结果
知识点 强制转换的使用、优先级,不同类型的变量运算自动转换。
心得 建议记得不同类型变量运算互相转换的那张表,自动转换是scanf应该先在此之前,输入变量值。输入小数的方法没想到。
如何买玫瑰?
#include "stdio.h"
int main()
{
int n,m,z1,z2;//n为钱数,m原本可以买的枝数,z1为买5送1,z2为买20送5。
printf("please input money\n");
scanf("%d",&n);
m=n/5;
z2=m/20*5;
z1=(m-(m/20)*20)/5;//枝数不够20赠5的,买5赠1
printf("m=%d\n",m+z1+z2);//总是会把%d丢了
return 0;
}运行结果
知识点 算术运算符/可以自动省略小数点的。
心得 之前把这题算法想错了,以为是多分支结构的。没想到是贪心算法,先尽可能享受买20赠5的优惠,再看享受买5赠1的优惠。这是贪心法的思维。对于z1,z2的表示要理解一下。
玩数字
#include "stdio.h"
#include "math.h"
int main()
{
float a,b,c,d,sum,avg,sq_sum;//d为平方和开根
printf("please input three numbers\n");
scanf("%f,%f,%f",&a,&b,&c);
sum=a+b+c;
sq_sum=a*a+b*b+c*c;
avg=sum/3;
d=sqrt(sq_sum);//sqrt 要加头文件
printf("sum=%f\nsq_sum=%f\navg=%f\nd=%f\n",sum,sq_sum,avg,d);
return 0;
}运行结果
知识点 变量命名要规范,调用sqrt()函数要加头文件#include "math.h"
心得 记得加头文件。
坐标转换
#include "stdio.h"
#include "math.h"
#define PI 3.1415926
int main()
{
float r,theta;
float x,y;
scanf("%f,%f",&r,&theta);
x=r*cos(theta/180*PI);//cos要用弧度作为参数。
y=r*sin(theta/180*PI);
printf("%f,%f\n",x,y);
return 0;
}
知识点 cos要用弧度作为参数。
心得 调试程序的时候,弧度表示为theta/180*PI,要习惯宏定义 Pi。
这篇博客探讨了数学运算中分离整数和小数部分的技巧,包括使用/和%操作符来分离个十百位。强调了强制类型转换的优先级和自动转换规则,并提醒读者注意scanf的使用。此外,通过解决“如何买玫瑰”的问题,介绍了贪心算法的应用。还提到了在数字游戏中规范变量命名和使用sqrt()函数时的注意事项,最后讨论了坐标转换中使用弧度的重要性,并建议在调试时习惯使用宏定义的Pi。

被折叠的 条评论
为什么被折叠?



