标题:【请教】C语言解决三种策略下购房方案的比较
只看楼主
zhu_shengyi
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-10-30
结帖率:0
 问题点数:0 回复次数:5 
【请教】C语言解决三种策略下购房方案的比较
【程序编写要求】
编写程序计算不同房屋面积在三种优惠政策下的购房款,并选择最优购房策略。
假设某小区开发有五种户型的房屋,建筑面积(单位:m2)分别为860、420、180、126、90,购房有三种优惠政策,购房款(单位:万元)计算公式为(其中x为房屋面积):
    方案1:p(x) = 30+1.15x
    方案2:p(x) =2.5+1.30x
    方案3:p(x) = -5.0+1.35x
要求根据三种售房优惠方案计算不同户型的购房款,并选择最优购房策略。

输入样例
请输入五种户型面积:860 420 180 126 90
请输入三种优惠政策下的购房款计算公式:
30+1.15x
2.5+1.30x
-5.0+1.35x

输出样例:
户型面积 方案1房款 方案2房款 方案3房款(万元)
----------------------------------------------------------------------------
860:     1019.00     1120.50    1156.00
420:      513.00      548.50     562.00
180:      237.00      236.50     238.00
126:      174.90      166.30     165.10
90:       133.50      119.50     116.50

最优购房方案:
860平方选择方案1
420平方选择方案1
180平方选择方案2
126平方选择方案3
90 平方选择方案3
搜索更多相关主题的帖子: 方案 选择 平方 策略 面积 
2021-11-12 11:27
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
得分:0 
来白嫖呢,赶紧挂科去吧。
2021-11-12 11:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
麻烦的地方有两处:
a. 严格按照“30+1.15x”这种格式吗?会不会写成“1.15x”或“30+1.15*x”或“30+x*1.15”或……
b. 中间那个表格需要怎样的对齐?
2021-11-12 15:31
zhu_shengyi
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-10-30
得分:0 
回复 3楼 rjsp
不好意思,我之前输入的时候忽略了,公式都是30+1.15*x这种格式的,我漏掉了*,中间的表格每一列都是右对齐的


[此贴子已经被作者于2021-11-12 15:56编辑过]

2021-11-12 15:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
对于需求,我还是稀里糊涂了,算了

程序代码:
#include <stdio.h>

int main( void )
{
    // 输入面积
    printf( "%s", "请输入五种户型面积:" );
    unsigned as[5];
    for( size_t i=0; i!=sizeof(as)/sizeof(*as); ++i )
    {
        if( scanf("%u",&as[i]) != 1 )
        {
            puts( "输错了!");
            return 1;
        }
    }

    // 输入公式
    puts( "请输入三种优惠政策下的购房款计算公式:" );
    double fs[3][2];
    for( size_t i=0; i!=sizeof(fs)/sizeof(*fs); ++i )
    {
        char t[4];
        if( scanf("%lf%lf%3s",&fs[i][0],&fs[i][1],t)!=3 || t[0]!='*' || t[1]!='x' || t[2]!='\0' )
        {
            puts( "输错了!");
            return 1;
        }
    }

    // 绘制表格
    _set_printf_count_output(1); // VC毛病多,如果你用的是VC,需要添加此句
    int cs[1+sizeof(fs)/sizeof(*fs)];
    printf( "户型面积%n", cs+0 );
    for( size_t i=0; i!=sizeof(fs)/sizeof(*fs); ++i )
        printf( " 方案%zu房款%n", i+1, &cs[i+1] );
    puts( "(万元)" );
    for( size_t i=0; i!=sizeof(as)/sizeof(*as); ++i )
    {
        printf( "%*u:", cs[0]-1, as[i] );
        for( size_t j=0; j!=sizeof(fs)/sizeof(*fs); ++j )
            printf( " %*.2f", cs[j+1]-1, fs[j][0]+fs[j][1]*as[i] );
        putchar( '\n' );
    }

    // 最优购房方案:
    puts( "最优购房方案:" );
    for( size_t i=0; i!=sizeof(as)/sizeof(*as); ++i )
    {
        size_t index = 0;
        double value = fs[0][0]+fs[0][1]*as[i];
        for( size_t j=1; j!=sizeof(fs)/sizeof(*fs); ++j )
        {
            double v = fs[j][0]+fs[j][1]*as[i];
            if( v < value )
            {
                value = v;
                index = j;
            }
        }
        printf( "%u平方选择方案%zu\n", as[i], index+1 );
    }
}

代码有些复杂了,因为我本想做到改一个数字就可以支持更多面积,改一个数字就可以支持更多公式

输入输出如下
请输入五种户型面积:860 420 180 126 90
请输入三种优惠政策下的购房款计算公式:
30+1.15*x
2.5+1.30*x
-5.0+1.35*x
户型面积 方案1房款 方案2房款 方案3房款(万元)
    860:   1019.00   1120.50   1156.00
    420:    513.00    548.50    562.00
    180:    237.00    236.50    238.00
    126:    174.90    166.30    165.10
     90:    133.50    119.50    116.50
最优购房方案:
860平方选择方案1
420平方选择方案1
180平方选择方案2
126平方选择方案3
90平方选择方案3
你要求是“90 平方选择方案3”,我的是“90平方选择方案3”,多个空格,我不知道为什么。如果是为了对齐的话,那需要增加一个计算面积数最大位数的代码,你自己加吧
2021-11-12 17:00
zhu_shengyi
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-10-30
得分:0 
回复 5楼 rjsp
感谢解答,我再和我写的代码对比一下,看看我的还有哪些问题
2021-11-12 17:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507484-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.214115 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved