|
|
发表于 2015-1-5 21:47:36
|
显示全部楼层
本帖最后由 小山童鞋 于 2015-1-5 21:48 编辑
学C的,可以递归和递推,
不知道为什么有点误差。
- #include<stdio.h>
- #define PRICE 8 //每本书的价格
- int books_number[5] = {0};//书的每本书的数量
- double discount[5] = {PRICE,
- PRICE * 0.95,
- PRICE * 0.9,
- PRICE * 0.8,
- PRICE * 0.75};
- double calculate() //核心算法,递归解决
- {
- int i = 0,k=0;
- double sum = 0;
- while(i<5)
- {
- if(0 != books_number[i])
- {
- books_number[i]--;
- k++;
- }
- i++;
- }
- if(0 == k)
- return 0;
- else
- {
- sum = discount[k-1] * k;
- return (sum + calculate()); //递归
- }
- }
- int main()
- {
- int i;
- double sum = 0;
- printf("请分别输入五本书的数量\n");
- for(i=0;i<5;i++)
- {
- printf("books_number[%d] = ",i);
- scanf("%d",&books_number[i]);
- }
- /*
- for(i=0;i<5;i++)
- {
- printf("books_number[%d] = %d\n",i,books_number[i]);
- }
- for(i=0;i<5;i++)
- {
- printf("discount[%d] = %f\n",i,discount[i]);
- }
- */
- printf("\n你需要付的金额为: ");
- sum = calculate();
- printf("%f $\n",sum);
- system("pause");
- return 0;
- }
复制代码 |
|