对于需求,我还是稀里糊涂了,算了
程序代码:
#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”,多个空格,我不知道为什么。如果是为了对齐的话,那需要增加一个计算面积数最大位数的代码,你自己加吧