算术运算
1.除号运算 / 的俩整数相除的结果为整数,例5/3 结果为1
2.除号有向零取整的特性 例:
3.取余号%的俩侧都是整数 例7%5 结果为2
范例程序里出现了一个^运算符,经过查询这是一个异或运算符,当然范例里面当作输出字符来对待,这里只做了解
真异或假结果为真真异或真结果为假
假异或假结果为假
假异或真结果为真
应用程序:
/*设x为一个三位整数,将其个,十,百位数分离出来,分别保存到变量a,b,c中
课程:贺利坚老师C视频第十一课*/
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c,x;
scanf("%d",&x);
a=x%10;
b=(x/10)%10;
c=x/100;
printf("这个数的个,十,百位数分别为:%d %d %d\n",a,b,c);
return 0;
}
如果有除法,应该避免除数为0
强制数据类型转换
语法:
(类型)(表达式)
例:(int)(x+y) 强制将x+y的结果转转成int类型
强制类型转换可能会丢失信息 例3.1415转换成int会丢失小数后面的数据
关于调用数学函数sin等 可以用#include <math.h>来实现
课后习题
<span style="color:#663333;">/*编写一个程序,其功能为:从键盘上输入一个浮点数(小数点后有三位数),然后分别输出该数的整数部分和小数部分
课程:贺利坚老师C视频第十一课*/
#include <stdio.h>
int main()
{
int a,b;
float c;
scanf("%f",&c);
a=(int)(c*1000)%1000;//乘以1000得到一个整数形式的数 再与1000取余,得到小数后三位
b=c*1000/1000;
printf("该数的整数部分为%d 小数部分为%d\n",b,a);
return 0;
}
上面程序要注意,%前后出现float等非整型数据时必须强制转换为整型,否则编译器不让你过
参考了贺老师的代码发现可以直接用自动转换来实现取整数- - ! a=x;
题目三:
/*小慧过生日,小明(小明真忙)要买鲜花送她。每枝红玫瑰5元,满5支送1枝,满20枝送5枝。小明一共有n(n>10)元钱,最多能买到多少?
课程:贺利坚老师C视频第十一课*/
#include <stdio.h>
int main()
{
int a,b,n;
printf("请输入你要给小明的钱数:");
scanf("%d",&b);
if(b>10)
{
n=b/5;
a=(n/20)*5+(n%20)/5;
n=n+a;
printf("小明可以买到:%d枝玫瑰",n);
}
else
{
printf("你太抠门了!");
}
return 0;
}
题目四:
程序
/*输入3个双精度实数,分别求出它们的和、平均值、平方和以及平方和的开方,并输出所求出各个值。
课程:贺利坚老师C视频第十一课*/
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
printf("和为:%lf\n,a+b+c;
printf("平均值为:%lf\n",(a+b+c)/3);
printf("平方和为:%lf\n",(pow(a,2)+pow(b,2)+pow(c,2)));
printf("平方和的开根为:%lf\n",sqrt(pow(a,2)+pow(b,2)+pow(c,2)));
return 0;
}
以上pow为求次方的数学函数 格式pow(x,y) x为要求的数,y为次方 也可以用来开立方,例开8的5次根号 pow(8,1.0/5)
sqrt为开平方根的数学函数 格式sqrt()
题目5
程序
<pre name="code" class="cpp">/*输入3个双精度实数,分别求出它们的和、平均值、平方和以及平方和的开方,并输出所求出各个值。
课程:贺利坚老师C视频第十一课*/
#include <stdio.h>
#include <math.h>
#define pai 3.1415
int main()
{
double r,b,x,y;
scanf("%lf %lf",&r,&b);
x=r*cos(b/180*pai);
y=r*sin(b/180*pai);
printf("%lf,%lf",x,y);
return 0;
}
用到公式
2π/360=弧度/角度 即弧度=π*角度/180
今天就到这里了