在每月的第一天都在存入N元,按单利计息,月利息为m%,计算一年后的本利之和是多少。
思路就是,一年后的本金加上这一年12个月每个月的利息。
一年后的本金是 12*N,第 i 个月的利息是第 i 个月的本金 i * N,再乘以月利率 (m/100);
#include <stdio.h>
int main()
{
float N; // 存款金额
float m; // 月利率
float sum; // 本利之和
printf("请输入每月存款金额 N 和月利率 m%( m = 0.5 代表月利率为 0.5%):");
scanf("%f %f", &N, &m);
float lixi = 0; // 利息
for(int month = 1; month <= 12; month ++){
float mN = month * N; // 每个月第一天存 N,那么第 month 个月存了 month *N元
lixi += mN * (m/100); // 加上第 month 个月的利息
}
sum = 12 * N + lixi; // 本利之和
printf("一年后的本利之和为 %.2f 元\n", sum);
return 0;
}
%i 有符号10进制整数
%o 以八进制数形式输出整数
%x 无符号的16进制数字,并以小写abcdef表示
%X 无符号的16进制数字,并以大写ABCDEF表示
%c 用来输出一个字符
%s 用来输出一个字符串
%E/e 以指数形式输出实数
%g 根据大小自动选f格式或e格式,且不输出无意义的零
延伸:
scanf(控制字符,地址列表)
格式字符的含义同printf函数,地址列表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。
如:scanf("%d%c%s",&a,&b,str);
还有一个使用vs编程的过程中常见的问题:
使用VS会出现’scanf’: This function or variable may be unsafe. Consider using scanf_s ins这种错误。
这是因为新版vc库添加的警告,因为微软认为scanf的使用存在安全隐患,因为C/C++中的字符串处理都是以\0为截止符的,如果搜索不到\0,容易出现字符串越界所有vc扩展的所谓安全标准库,都添加了一个参数用以指定字符串参数的长度,用以避免这种安全隐患。
想要在代码中使用’scanf’,
修改方法有三种:
1.项目属性—配置属性—C/C+±–预处理器—预处理 器定义中加入 _CRT_SECURE_NO_DEPRECATE
2.在代码的第一行加:
#pragmawarning(dasable:4996)
3.在文件顶部加入一行:
#define _CRT_SECURE_NO_WARNINGS