C语言中的运算符
基本的算数运算符和算数表达式
需要注意的是:
一,除法运算
1,两个整数相除的结果为整数,例:5/3=1。
2,向零取整:-5/3=-1(离零近的)
二,横运算(取余运算)
1,%左右两侧均为整形,如7%4=3;
实际应用
1 分离各个位数
设x为一个三位整数,将个,十,百位数分离出来,并分别保存到变量a,b,c中。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x,a,b,c;
scanf("%d",&x);//x为三位数
a = x%10;
b = (x/10)%10;
c = x/100;
printf("整数%d的个十百位分别为%d %d %d\n",x,a,b,c);
return 0;
}
2,编程序,输入电阻r1 r2,求并联后的阻值R?
分析:计算公式为r=1/(1/r1+1/r2)
int main( )
{
float r1, r2, r;
printf("输入要并联的两个电阻值:");
scanf("%f %f", &r1, &r2);
r = 1/(1/r1 + 1/r2);
printf("并联后的电阻值为:%f\n",r);
return 0;
}
当心除法中的陷阱
提几个问题
5/2 = ?
5/0 = ?
5.0/2和5/2有什么区别?
1/33和13/3有什么区别?
#include <stdio.h>
int main ( )
{
int a=5, b=2;
printf("%d\n",(a/b));
printf("%f\n",(a/b));
return 0;
}
算数运算中数据类型的自动转换![在这里插入图片描述](https://img-blog.csdnimg.cn/20210125212749375.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTMxMDk2,size_16,color_FFFFFF,t_70)
强制数据类型转换
如果一定有强制类型转换,明确写出来为妙
因为类型转换中可能会丢失数据
int main()
{
float x,y;
int i,b;
x = 3.63;
i = (int)x;
b = (int)(x*100)%100;
y = x*100;//y=(x*100)%100这个式子错误因为%两边应为整形数据
printf("x=%f,i=%d,b=%d,y=%f",x,i,b,y);
}
数学库函数及其使用
例:用数学函数解题
写程序求两临边长度分别为3.5和4.72米,两边夹角为37度的三角形的面积
分析:三角形面积公式为s=1/2ab*sinc
#include<stdio.h>
#include<math.h>
int main()
{
printf("S=%f\n",c.5*4.72*sin(37.0/180*3.1416)/2);
}
自测
例:小慧过生日,小明(小明真忙)要买鲜花送她。每枝红玫瑰5元,满5支送1枝,满20枝送5枝。小明一共有n(n>10)元钱,最多能买到多少?
样例输入:135
样例输出:33
思路:样例中的33枝是怎么来的?5元一支,135元能买27支。他这样买:先买20支,这时赠5支,再买7支,还能再送1支,这样就能达到33支了。
于是,先尽可能享受买20赠5的优惠,再看享受买5赠1的优惠。这是贪心法的思维。
写出下面的代码:
#include <stdio.h>
int main( )
{
int money, n, z1, z2;
scanf(135"%d", &money);
n=money/5; //实际能买的玫瑰
z1=n/20*5; //买够20就能送5支
z2=(n-(n/20)*20)/5; //不够买20赠5的,享受买5赠1的
printf("%d\n", n+z1+z2);
return 0;
}
本博文为个人学习笔记如果有错误请联系立即更改。