c++一维数组急求解(〃>皿<) 1 (sdcl)、输入若干个不大于10000的正整数,输出三行,第一行为原原始数据

1 (sdcl)、输入若干个不大于10000的正整数,输出三行,第一行为原原始数据,第二行为倒序数据,第三行两个数,分别为平均值和最大值与最小值之差,平均值保留两位小数,每行每个数之间用一个空格隔开。2 (sjs)、输入20个均不大于10000的正整数,输出两行,第一行为原始数据,第二行为从小到大排序数据。3 (stat)、教材P50,习题3-1,分数不超过100000个。任务一、二分别保存为stat1、stat2。输入:一行,为若干个分数;输出:一行,为从小到大的出现次数最多的分数。提示:关键在于找出每个分数出现的次数,并找最大值。4 (lxsd)、从一个长度为n(n<=100000)的数列中找出连续的一段,使得其中所有数的和最大,输出该值。例如:有5个元素的数列(1 -2 3 1 -4),其输出应该是4。提示:枚举、贪心。输入:共两行,第一行为长度n,第二行为该数列;输出:一行,为最大数段和。
应该是这张图

有几个问题,改了一下,加了详细的注释,能输出结果:
#include <stdio.h>
#include <math.h>
void main()
{
double a=0,b=0,c=0,d=0,e=0,f=0,g=0,k=0,t=0,y1=0,y2=0,z1=0,z2=0,p=0,q=0,i=0,x1=0,x2=0,x3=0;//double改为float,并初始化
printf("Please enter a,b,c,d\n");//把输出操作移到计算之前
scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d);//把%f改为%lf,用于输入double数据
e=b*b-3*a*c;
f=b*c-9*a*d;
g=c*c-3*b*d;
t=f*f-4*e*g;
i=c*c-4*b*d;
e=k*k*k;
q=(2*b*e-3*a*f)/(2*k*k);
p=(acos(q))/3;
y1=(b*e+(3*a*(-f+sqrt(t))))/2;
y2=(b*e+(3*a*(-f-sqrt(t))))/2;
y1=z1*z1*z1;
y2=z2*z2*z2;
// printf("Please enter a,b,c,d\n");//去掉这2行,已经移到前面了
// scanf("%f,%f,%f,%f",&a,&b,&c,&d);
printf("The equation ");
if (a==0)//=改为==,下面还有几个相同的操作,这是你出问题的主要原因
{
if (i>0)
{
x1=(-c+sqrt(i))/(2*b);
x2=(-c-sqrt(i))/(2*b);
printf("has two real roots:%f and %f\n",x1,x2);
}
else if (i==0)//=改为==
printf("has a real root:%f\n",-c/(2*b));
else
printf("has no real root");
}
else if (e==f && e==0)//=改为==
printf("has a real root:%f\n",-c/b);
else if (t>0)
printf("has a real root:%f\n",(-b-z1-z2)/(3*a));
else if (t==0)//=改为==
printf("has two real roots:%f and %f\n",(-b/a)+(f/e),-f/(2*e));
else
{
x1=(-b-2*k*k*cos(p))/(3*a);
x2=(-b+k*(cos(p)+sqrt(3)*sin(p)))/(3*a);
x3=(-b+k*(cos(p)-sqrt(3)*sin(p)))/(3*a);
printf("has three real roots:%f and %f and %f\n",x1,x2,x3);
}
}追问

那个。。。图发错了,对不起QAQ应该是这张

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网