请问这个C语言错在哪里呢?在线等待

来源:百度知道 编辑:UC知道 时间:2024/04/30 10:26:53
开放式基金是一种委托投资理财产品。用户可以向基金管理机构购买/赎回基金,基金管理机构负责将基金投资于股票等金融产品获取收益,并收取一定的管理费用。假设某基金在成立时每份面值为1元,申购费率为1.5%,赎回费率为0.5%。则有如下规则:
1. 每个用户购买时的金额必须大于等于1000,并且是1000的整数倍;
2. 基金份额 = 购买金额×(1-申购费率)/份额面值;=a*0.985
3. 基金运作后每天公布当日每份基金净值,如0.9871或者1.0121,则:
用户当前净值=基金份额×当日每份基金净值
4.每日净值增长率=(当日每份基金净值-昨日每份基金净值)/昨日每份基金净值×100%;=
5.浮动盈亏=用户当前净值×(1-赎回费率)-购买金额;
6.周平均净值 = 一周每日净值的和/工作日;
编写一个程序,要求用户输入在基金成立时的购买金额和基金运作第一周的每日份额净值,统计一周来用户的收益情况。例如,一次程序运行的情况如下:
Please input your money(>1000, and multiple): 1500
1500 is not multiple of 1000.
Please input your money(>=1000, and multiple): 10000
Please input everyday net value in this week:
0.9872 0.9935 1.0102 0.9905 1.0235
Quotient Net Value Increase Rate Current Value Current Payoff
9850 0.9872 -1.28% 9410 -590
9850 0.9935 0.64% 9737 -263
9850 1.0102 1.68% 9900 -1

程序算法估计有问题吧,不过语法也有问题:
for(i=0;i<5;i++)
{
scanf("%f", net_value[i]);
}
为scanf("%f", &net_value[i]);
}

for(i=1;i<6;i++) 为for(i=0;i<5;i++)

printf(" %-8d %-3.4f %10.2f%% %12d %15d\n",quotient,net_value[i],increase_rate[i]*100,current_value[i],current_payoff[i]);
改为:
printf(" %-8d %-3.4f %10.2f%% %12d %15d\n",(int)quotient,net_value[i],increase_rate[i]*100,(int)current_value[i],(int)current_payoff[i]);

if(money<1000||(money%1000)!=0)
{
printf("%d is not multiple of 1000.\n",money);
printf("Please input your money(>1000, and multiple):");
scanf("%d",&money);
}
这里不应该用条件语句,应该用While循环,因为你第一次输错,程序会发现错误,但是你第二次输入一个错的数字,如1300,程序将不会发现.
if(i==0) ,因为你在外面的For循环里初始化i=1了,所以,这句基本上不可能出现i=0的情况.