当前位置: 代码迷 >> C语言 >> [求助]C语言高手请帮个忙!急
  详细解决方案

[求助]C语言高手请帮个忙!急

热度:270   发布时间:2007-03-21 14:11:36.0
我电脑上都有,可惜我现在不在电脑上,自己先做吧,最后一个题目先想想,想不出来我再发给你
----------------解决方案--------------------------------------------------------
这个还是谭浩强书上的习题

我记得是第二章吧(不是有习题答案吗?你可以去买的!)

1.有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改酱油,B瓶则相反)

// 定义一个C, C=A;A=B;B=C

2.依次将10个数输入,要求将其中最大的数输出

// 先判断头两个数的大小,让较大的数字和下一个数比较,这样循环10次,输出最大数就可以了

3.有3个数a,b,c,要求按大小顺序把它们输出

// 这题和上边的方法类似,先判断最大的,让 max= x,再对剩下的两个数判断,大小就可以了

4.求1+2+3+...+100

// 有两种方法,一种一个个加上去,另一个数学等差数列求和

5.判断一个数n能否同时被3和5整除

// 看它能不能被15整除即可

6.将100-200之间的素数输出

// 这个比较麻烦,推荐你买习题书看看,思路是这样的,让这个看看能不能被 1到 根号(这个数)整除,如果可以,就不输出,如果不可以,就输出,然后这个数自加,这样循环下去

7.求两个数m和n的最大公约数

// 先较大的数被较小的数取模(如果是0,就直接输出较大数),然后,让较小的数乘以这个模就好

8.求方程式axx+bx+c=0的根,分别考虑:1.有两个不等的实根;2.有两个相等的实根

// a=0,有一个根;a不等0,判断“b*b-4*a*c”和0的大小,如果大于0,有2个不等实数根,如果等0,2个相等根,如果小于0,没有实数根


----------------解决方案--------------------------------------------------------

哎 这么总行了吧?
#include <stdio.h>
#include <math.h>


void Display1(float a,float b,float c)
{
float k;
float x,y;
k=b*b-4*a*c;
x=(-b)/(2*a);
y=(-b)/(2*a);
printf("x=%f\n",x);
printf("y=%f\n",y);
}

void Display2(float a,float b,float c)
{
float k;
double p,q;
k=b*b-4*a*c;
p=(-b)/(2*a);
q=sqrt(-k)/(2*a);
printf("x=%lf+%lf*i\n",p,q);
printf("y=%lf-%lf*i\n",p,q);
}

void Display3(float a,float b,float c)
{
float k;
double x,y;
k=b*b-4*a*c;
x=(-b+sqrt(k))/(2*a);
y=(-b-sqrt(k))/(2*a);
printf("x=%lf\n",x);
printf("y=%lf\n",y);
}

void main()
{
float a,b,c,d;

printf("请输入方程系数:\n");
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;

if (d==0)
{
printf("方程的根为:\n");
Display1(a,b,c);
}
else if(d<0)
{
printf("方程的根为:\n");
Display2(a,b,c);
}
else
{
printf("方程的根为:\n");
Display3(a,b,c);
}
}


----------------解决方案--------------------------------------------------------
以下是引用PcrazyC在2007-3-21 13:27:41的发言:
这么小看这个题目,要是书上没有这样的例子,没有学过极限的,不一定能想到那上面去

这个是2元一次方程组,应该用不上牛顿迭代之类的吧.
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------

以下是引用nuciewth在2007-3-21 22:25:47的发言:

这个是2元一次方程组,应该用不上牛顿迭代之类的吧.

axx+bx+c=0
他这个地方的axx应该是ax^2的意思吧,还有一点,怎么也看不到二元啊,要说也是一元一次吧


----------------解决方案--------------------------------------------------------
应该是一元二次.
----------------解决方案--------------------------------------------------------

唉,是我想错了,数学学得太多了,什么问题都想用数学来解决


----------------解决方案--------------------------------------------------------
这种方程直接分类套公式就行了!
----------------解决方案--------------------------------------------------------

int i,n;
double term,ex,x;
printf("enter x,n");
scanf("%lf%d",&x,&n);
ex=term=1.0;
for(i=1;i<n;i++)
{
term*=x/i;
ex+=term;
}
printf("Exp(%f)=%.10f\n",x,ex);
}


----------------解决方案--------------------------------------------------------
  相关解决方案