1求一元二次方程ax^2+bx+c=0的根.
____________________________________________________________
#include
#include
int main()
{
float a,b,c,delda,x1,x2;
start:printf("本函数功能是求解一元二次方程!\n请输入方程的参数a,b,c(用空格分开):\n");
scanf("%f%f%f",&a,&b,&c);
if (a==0)
{
printf("这不是一个一元二次方程\n");
goto restart;
}
delda=(b*b-4*a*c);
if (delda==0)
{
printf("这个方程有两个相等的实根。\n它们是x1=%.2f和x2=%.2f\n",-b/(2*a),-b/(2*a));
goto restart;
}
if (delda>0)
{
printf("这个方程有两个不相等的实根。\n它们是x1=%.2f和x2=%.2f\n",(-b+sqrt(delda))/(2*a),(-b-+sqrt(delda))/(2*a));
goto restart;
}
if (delda<0)
{
printf("这不方程有两个复根。等于多少不要问我,我也没学过!\n");
goto restart;
}
restart:printf("按回车键继续……\n");
getchar();
if (getchar())
{
goto start;
}
}
_________________________________________________________________
2有一个数列:1/2,2/3,3/5,5/8,8/13,13/21,...试编写程序,求数列前100项之和
________________________________________________________________
#include
int main()
{
float zi=2.0,mu=1,fen,s=0,x;
int i;
for (i=1;i<=20;i++)
{
fen=mu/zi;
s+=fen;
x=mu;
mu=zi+mu;
zi=x;
}
printf("%f",s);
getchar();
}
_______________________________________________________________
3打印所有的”水仙花数”.所谓”水仙花数”是指一个3位数,其各位数字立方和等于该数本身.例如:153是一个水仙花数,因为:153=1^3+5^3+3^3
_______________________________________________________________
#include
int main()
{
int a,b,c,i;
for(i=100;i<=999;i++)
{
a=i/100;
b=(i%100)/10;
c=(i%100)%10;
if (i==(a*a*a)+(b*b*b)+(c*c*c))
printf("%d ",i);
}
getchar();
}
_______________________________________________________________
4猴子吃桃问题.猴子第一天摘下若干桃子,当即吃了一半又加一个,第二天早上又将剩下的桃子吃了一半又加一个.以后每天早上都吃了前一天剩下的一半加一个.到第10天早上想吃时,就只剩下一个桃子了.求第一天一共摘下多少桃子
__________________________________________________________________
#include
int main()
{
int a=1,b,c,i;
for (i=10;i>1;i--)
{
a=(a+1)*2;
}
printf("猴子第一天吃了%d个桃子!",a);
getchar();
}
______________________________________________________________
上面的程序全部是我自己编的,没有版权问题!
谢谢!
_________________________________________________________
严重声明
———————————————————————————————这里代码是自己写的,至于猴子吃桃问题是不是我抄的,大家看一下这里
http://zhidao.baidu.com/question/15042728.html
一楼大哥好像比我后发表把,谁抄谁的呢?
留给读者思考!
——————————————————————
所有代码均通过编译,没有错误和警告!!!!!
下次一道一道地问,一下子做那么多题很累:-)
第1题:========================================>>>>>>>>>
1求一元二次方程ax^2+bx+c=0的根.
//用到两个函数:sqrt()--平方根;fabs()--绝对值,在math.h中声明
#include
#include
main()
{
float a,b,c;
float d;
float t1,t2;
float x1,x2;
printf("Input a,b,c:");
scanf("%f %f %f", &a, &b, &c);
if (a == 0.0) //a==0 ,方程退化为一元一次方程
{
if(b==0.0) //b==0 ,方程无解
printf("输入数据错误,方程无解\n");
else //b!=0 ,方程有单根
{
x1= -c / b;
printf("唯一解为: x = %f\n", x1);
}
}
else //a!=0 ,方程为一元二次方程
{
d = b * b - 4 * a * c; // 计算 d = b^2 - 4ac
t1= - b / (2 * a);
t2 = sqrt(fabs(d)) / (2 * a);
if (d == 0.0) //d==0 ,方程有两个相等实根
{
x1 = t1;
printf("两个相等实根: x = %f\n", x1);
}
else if (d > 0.0) //d>0 ,方程有两个不等实根
{
x1 = t1 + t2;
x2 = t1 - t2;
printf("两个不等的实根:x1 = %f 和 x2 = %f\n", x1, x2);
}
else //d<0 ,方程有两个共轭复根
printf("两个复根为:x1 = %f + %f i 和 x2 = %f - %f i\n", t1, t2, t1, t2);
}
}
第2题:========================================>>>>>>>>>
2有一个数列:1/2,2/3,3/5,5/8,8/13,13/21,...试编写程序,求数列前100项之和
main()
{
int i,t;
double a = 1,b = 2;//===> a/b是数列的项
double sum = 0;
for(i = 1; i <= 100; i++)
{
sum += a / b;
t = b;
b += a;
a = t;
}
printf("sum is %9.6f\n",sum);
}
第3题:========================================>>>>>>>>>
3打印所有的”水仙花数”.所谓”水仙花数”是指一个3位数,其各位数字立方和等于该数本身.例如:153是一个水仙花数,因为:153=1^3+5^3+3^3
main()
{
int i;
int nCount = 0; //水仙花数的个数
int a,b,c; //a--百位,b--十位,c--个位
printf("水仙花数是:\n");
for(i = 100; i <= 999; i++)
{
a = i / 100;
b = i / 10 % 10;
c = i % 10;
if(a*a*a + b*b*b + c*c*c == i)
{
nCount = nCount + 1;
printf("第%d个 : %d\n", nCount, i);
}
}
}
第4题:========================================>>>>>>>>>
4猴子吃桃问题.猴子第一天摘下若干桃子,当即吃了一半又加一个,第二天早上又将剩下的桃子吃了一半又加一个.以后每天早上都吃了前一天剩下的一半加一个.到第10天早上想吃时,就只剩下一个桃子了.求第一天一共摘下多少桃子
main()
{
int i;
int nCount = 1; //桃子个数
for (i = 0; i < 9; i++)
nCount = (nCount + 1) * 2; //头一天的桃子数是(当天桃子数 + 1)的2倍
printf("第一天一共摘下 %d 个桃子\n", nCount);
}
总算写完了。
补充:
手还是慢了一点,看了楼上的代码,还是有瑕疵的,
第一:求数列前100项之和,可是代码中的for (i=1;i<=20;i++)不好理解哦
第二:水仙花数的代码中:
b=(i%100)/10;
就是一个明显的错误。
第三:最后一题也明显是把楼上的给抄下来了,连“猴子第一天吃了%d个桃子” 和变量名都搬了过来。
第四:至于复根就不能苛求楼上了
再补充:
刚才说楼上抄代码,确实冤枉楼上了,特此赔个不是。
1,分析,有以下几种可能:
(1),a=0,不是二次方程
(2),b^2-4ac=0,有两个相等实根.
(3),b^2-4ac>0,有两个不等实根.
(4),b^2-4ac<0,有两个共轭复根.
sqrt():平方根;fabs():绝对值
程序如下:
#include
#include
main()
{
float a,b,c,disc,x1,x2,realpart,imagpart;
scanf("%f,%f,%f",&a,&b,&c);
printf("the epuation");
if(fabs(a)<=le-6)
printf("is not quadratic");
else
disc=b*b-4*a*c;
if(fabs(disc)<=le-6)
printf("has two wpual roots:%8.4f\n",-b/(2*a));
else if (disc>le-6)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("has complex roots:\n");
printf("%8.4f+%8.4fi\n",realpart,imagpart);
printf("%8.4f-%8.4fi\n",realpart,imagpart);
}
}
2.
#include
main()
{
float z=2,m=1,f,sum=0,t;
int i;
for (i=1;i<=20;i++)
{
f=m/z;
sum+=f;
t=m;
m=z+m;
z=t;
}
printf("sum is %f",sum);
}
3.
#include
main()
{
int i,a,b,c;
for(i=100;i<1000;i++)
{
a=i/100;
b=i%100/10;
c=i%100%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("i=%d",i);
}
}
4.
#include
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2; /*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
问题虽然多了一点
可是呢
简单
include
int main()
{
int a=1,i;
for (i=10;i>1;i--)
{
a=(a+1)*2;
}
printf("猴子第一天吃了%d个桃子",a);
getchar();
}