#include<math.h>
#include<stdio.h>
//定义变量
float totalsum,perbj,perlx,rate,leftbj,sumbj,sumlx,perbx;
int i,mode,ptime;
FILE*fp;
char filename[10];
//两种还款方式计算函数,包含向显示器和文本文件输出等功能
void account(float totalsum,float rate,int ptime,int mode)
{
sumbj=0;sumlx=0;
leftbj=totalsum;//还款前剩余本金额等于总还款额
//向显示器输出各还款标题信息
printf("ptime/tperbj/tperlx/tperbx/tleftbj/n");
printf("---------------------------/n");
//向文件输出各还款标题信息
fprintf(fp,"ptime/tperbj/tperlx/tperbx/tleftbj/n");
fprintf(fp,"-----------------------/n");
//建立循环计算每月还款额
for(i=1;i<=ptime;i++)
{
if(mode==1) //等额本金还款方式
{
perbj=totalsum/ptime;
perlx=leftbj*rate/1000;
}
else //等额本息还款方式
{
perlx=(totalsum*(rate/1000)*pow((1+rate/1000),ptime))/(pow((1+rate/1000),ptime)-1);
perlx=leftbj*rate/1000;
perbj=perbx-perlx;
}
leftbj=leftbj-perbj;
sumbj=sumbj+perlx;//统计总还款金额
sumlx=sumlx+perlx;//统计总还款利息
printf("%d/t%.3f/t%.3f/t%.3f/t%.3f/n",i,perbj,perlx,perbj+perlx,leftbj);//向显示器输出各还款金额
fprintf(fp,"%d/t%.3f/t%.3f/t%.3f/t%.3f/n",i,perbj,perlx,perbj+perlx,leftbj);//向文件输出各还款金额
}
printf("------------------------/n");
printf("sum/t%.3f/t%.3f/t%.3f/n",sumbj,sumlx,sumbj+sumlx);//向显示器输出各合计金额
fprintf(fp,"------------------------/n");
fprintf(fp,"sum/t%.3f/t%.3f/t%.3f/n",sumbj,sumlx,sumbj+sumlx);//向文件输出各合计金额
}
void main()
{
printf("please filename:");
scanf("%s,filename");//输入文件名
//判断文件是否存在,不存在则重新建立,存在则向文本文件添加内容
if((fp=fopen(filename,"a"))==NULL)
{
fp=fopen(filename,"w++");
if(fp==NULL)
{
printf("Cannot create file/n");
return;
}
}
printf("/nplease input totalsum,rate,ptime,mode:/n");
scanf("%f,%f,%d,%d",&totalsum,&rate,&ptime,&mode);
account(totalsum,rate,ptime,mode);//调用计算函数
}
银行测算系统C代码
最新推荐文章于 2024-02-23 15:21:48 发布