已知三角形两边求面积C语言编程,编程题:1.已知三角形的两边a.b及其夹角,求求第三边c及其面积s;2.用1分.2分.5分的硬币凑成300元以的人民币,求最少的硬币数目以为是初学,请学出详细过程,正确...

请在tc下执行.

1.#include

#include

void main()

{

double a,b,angle,c,s;

printf("请输入两条边的长度和角的大小(数据以空格隔开):\n");

scanf("%lf %lf %lf",&a,&b,&angle);

if(!(a>0&&b>0&&angle>0))

{

printf("输入不能为负或者0!\n");

return;

}

c=sqrt(a*a+b*b-2*a*b*cos(angle));//余弦定理

s=0.5*a*b*sin(angle);//面积公式

printf("第三边长为%lf,面积为%lf\n",c,s);

}

2.思路如下:设1分x个,2分y个,5分z个,则x+2y+5z=30000

设x+y+z=k,依题意,即求k的最小值.移项,有x=k-y-z,带入上式得:k+y+4z=30000,因而k=30000-y-4z,显然x>=1,y>=1,z>=1.所以k-y-z>=1,即k>=1+y+z.这个条件是有用的,在编程实现时可以用来限制k.当然,还有一种方法,利用穷举法,令x,y,z都从1开始循环计数,再找到k,但效率没有这个思路实现的效率高,因为这里只有y和z的循环.由于要找最小的k,所以y和z都应该从大到小变化.可以令y=15000,z=3750开始,然后y,z依次减小(让z处在外循环,y处在内循环,这样k可以变化得慢些),直到第一个k>=1+y+z为止.具体代码如下:

#include

void main()

{

int y,z,k;//和上面的y,z,k对应

for(z=3750;z>0;z--)

for(y=15000;y>0;y--)

{

k=30000-y-4*z;

if(k>=1+y+z)

{

printf("最少的硬币数为:%d\n",k);

printf("具体分布是%d个1分,%d个2分,%d个5分\n",k-y-z,y,z);

return;

}

}

}

解析看不懂?求助智能家教解答查看解答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值