目录
1. 算术运算符
2. 何谓“目”?
3. 表达式
4. 类型转换
5.课后习题(编程题)
1. 算术运算符
C 语言通过提供大量的运算符来支持我们对数据进行处理,前边我们将一个值存放到变量中,使用的是赋值运算符,就是等于号(=)。
这里有几点要跟大家说一下:
-
因为键盘上没有乘号和除号两个按键,所以用星号(*)和斜杠(/)代替,这几乎是潜规则了。
-
对于整数间的除法是采取直接舍弃小数部分的方式,而不是什么四舍五入噢。
-
对于浮点数间的除法则能获得一个相对逼近结果的值(如果除不尽或位数特别多的话)。
-
百分号(%)在这里是表示求余数的意思,但求余运算符要求两边的操作数都要是整数,其结果也是整数。
2. 何谓“目”?
大家可能看到有些运算符后边写双目,有些写单目,那么什么是目呢?
我们把被运算符作用的运算对象称之为操作数,比如 1 + 2,那么 1 和 2 就是被加法运算符(+)作用的两个操作数。我们说一个运算符是双目运算符还是单目运算符,就是看它有多少个操作数。
3. 表达式
用运算符和括号将操作数连接起来的式子,我们称之为表达式。
-
1 + 1
-
'a' + 'b'
-
a + b
-
a + 'b' + pow(a, b) * 3 / 4 + 5
4. 类型转换
当一个运算符的几个操作数类型不同时,编译器需要将它们转换为共同的某种数据类型,才能进行运算。
通常情况下,编译器会将占用坑位比较小的操作数,先转换为与坑位较大的操作数的相同类型,然后再进行运算。这样做的目的就是为了确保计算的精确度。
除了编译器帮你自动转换不同类型的操作数之外,C 语言还允许你强制转换操作数的数据类型。做法就是在操作数的前边用小括号将目标数据类型括起来。
5.课后习题(编程题)
第一题
请根据下边的提示,写一个等额本息的还款计算器。
小知识:
等额本息还款法,也称定期付息,即借款人每月按相等的金额偿还贷款本息,其中每月贷款利息按月初剩余贷款本金计算并逐月结清。
- 月均还款 = 贷款本金 * (月利率 * (1 + 月利率)^还款月数) / ((1 + 月利率)^还款月数 - 1)
- 总利息 = 还款月数 * 月均还款 - 贷款本金
- 贷款本金 = 房款总额 * 按揭成数
程序要求用户输入房屋单价、面积、按揭成数、按揭年数以及基准利率,然后计算并显示等额本息还款法需要偿还的房款总额、首期付款、贷款总额、支付利息以及每月需要还款多少各项数据。)
结果
代码
#include <stdio.h>
#include <math.h>
int main()
{
float price,area,yir,mir; //单价 面积 年利率 月利率
int ratio,time; // 按揭成数 按揭年数
float total_price, total_repay; //房款总额 还款总额
float down_payment,ave_repay;//首期付款 月均还款
float loan,interest; //贷款总额 利率
printf("请输出单价(元/平方):");
scanf("%f",&price);
printf("请输入面积:");
scanf("%f",&area);
printf("请输入按揭成数:");
scanf("%d",&ratio);
printf("请输入按揭年数:");
scanf("%d",&time);
printf("请输入当前基年利率:");
scanf("%f",&yir);
printf("==========报告结果=============\n");
mir = yir/100/12;
time = time * 12;
total_price = price * area;
down_payment = total_price * (1-(float)ratio/10);
loan = total_price * ratio/10;
ave_repay = loan*mir*pow((1+mir),time)/(pow((1+mir),time)-1);
interest = ave_repay*time-loan;
total_repay = loan + interest;
printf("房款总额:%.2f元\n",total_price);
printf("首期付款:%.2f\n",down_payment);
printf("贷款总额:%.2f\n",loan);
printf("还款总额:%.2f\n",total_repay);
printf("支付利息:%.2f\n",interest);
printf("月均还款:%.2f\n",ave_repay);
return 0;
}
注1:// 后边的内容是注释部分,即写给你看的,程序编译时不会理会;
注2:按揭成数用户输入的是 7,其实表示的应该是 70%,即 0.7;
注3:用户输入的是还款年数,但程序中计算的是还款月数,所以要进行必要的转换;
注4:用户输入的年利率是 5.4,其实表示的是 5.4%,在程序中记得去掉百分号(除以 100),月利率 = 年利率 / 12。
第二题
有 10000 元,想存 5 年,分别求出以下三种方法存得的本息和:TX28k%Ip
- 一次性定期存 5 年;
- 先存 3 年定期,到期后本息再存 2 年定期;
- 存 1 年定期,到期后本息再存 1 年定期,连续存 5 次。
注:r 为年利率,n 为存款年数,则计算本息和的公式如下0k6V?s!vp$
- 1 年本息和的计算公式:P = 10000 * (1 + r)
- n 年本息和的计算公式:P = 10000 * (1 + r * n)
- n 次 1年的本息和的计算公式:P = 10000 * (1 + r)^n
代码
#include <stdio.h>
#include <math.h>
int main()
{
float p0 = 10000,p1,p2,p3;
float r1 = 0.0175,r2 = 0.0225, r3 = 0.0275, r5 = 0.0275;
p1 = p0 * (1+r5*5);
p2 = p0 * (1+r3*3)*(1+r2*2);
p3 = p0 * pow((1+r1),5);
printf("第一种方案的本息和是:%.2f\n",p1);
printf("第二种方案的本息和是:%.2f\n",p2);
printf("第三种方案的本息和是:%.2f\n",p3);
return 0;
}
结果