C语言解初中数学题

已知x的a次方=5,x的b次方=3,求x的3a-2b次方的值

顺便看下我写,怎么改我承认这是很烂的程序
#include <stdio.h>
#include <math.h>

void main()
{
double x,a,b,c,d,e;

for(a=1;a<10;a++)
for(b=1;b<10;b++)
for(x=1;x<10;x++)
{
c=pow(x,a);
d=pow(x,b);
e=3a+2b;
if(c==5&&d==3) break;

}

printf("s=%d",pow(x,e));
}
就是用C语言解这道题目

你这样是算不出结果的。因为这题的x,a,b根本没有整数解
所以需要用到小数,考虑到计算机的负担能力,一般取2位,你是3个for语句改成这样:
for(a=0;a<10;a+=0.01)
for(b=0;b<10;b+=0.01)
for(x=1;x<10;x+=0.01)
然后估算一下,c和d的误差范围是2-4位小数,这里取3吧。然后你的if语句就改成这样:
if((abs(c-5)<0.001)&&(abs(d-3)<0.001)) break;
实际运行时如果有问题就适当改一下参数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-08
厄,LZ这个程序相当地诡异...
这种题目完全没必要用c程序写,因为x和a,b的值是不确定的,
可以取x=e,a=ln5,b=ln3;也可以取x=e^0.5,a=2ln5,b=2ln3..无限个解..
如果一定要用c编的话。。如下
#include <stdio.h>
#include <math.h>
#define x 5 //x可以取任意正值

void main()
{
double a,b;

a=log(5)/log(x);
b=log(3)/log(x);

printf("s=%f",pow(x,3*a-2*b));
}
第2个回答  2009-04-08
恩,如一楼所说,x的值应为确定的才可以,所以应先用scanf对x进行赋值,然后用二楼所说的进行近似计算,才可以,代码我就不写了,lz自己好好想想,我写出来对你学c没什么好处。