关于C语言几个程序的问题

//求汽车平均速度
#include <stdio.h>
void main()
{
int qh(int x,int y); //对被调用qt函数的声明
int H,h; //定义变量
float v,L,M,m,s1,s2,T; //定义变量
printf("请输入里程数,单位为米\n"); //显示输入变量
scanf("&f",&L); //输入变量
printf("请输入出发时间,格式为 时,分,秒\n"); //显示输入变量
scanf("%d,%d,%d",&H,&M,&s1); //输入变量
printf("请输入到达时间,格式为 时,分,秒\n"); //显示输入变量
scanf("%d,%d,%d",&h,&m,&s2); //输入变量
T=(float)(qh(H,h))+(m-M)*60+s2-s1; //对T赋值
v=L/T;
}
int qh(int x,int y)
{
int z;
if(x>y)z=(24-x+y)*3600;
else z=(x-y)*3600;
return(z);
}

//求一元2次方程根的程序
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c;
printf("标准一元2次方程形式为axx+bx+c=0\n请输入其系数,表示为 a,b,c\n");
scanf("%f,%f,%f,",&a,&b,&c);
float x1,x2,D;
D=b*b-4*a*c;
if(D=0)
{
x1=x2=(-b)/(2*a);
printf("x1=x2=%f",x1);
}
if(D>0)
{
x1=((-b)+sqrt(D))/(2*a);
printf("x1=%f,x2=%f",x1,x2);
}
else
{
printf("该方程无实数根\n");
}
}

两个程序都可以运行,但是计算时
求汽车速度的程序只能得出v=0.000000
计算根的程序只能得出:该方程无实数根

希望明白人解答一下 本人初学者.

第一个程序(修改两处):

//---------------------------------------------------------------------------

#include <stdio.h>
void main()
{
int qh(int x,int y);
int H,h;
float v,L,M,m,s1,s2,T;
printf("请输入里程数,单位为米\n");
scanf("%f",&L); //注意这里
printf("请输入出发时间,格式为 时,分,秒\n");
scanf("%d,%d,%d",&H,&M,&s1);
printf("请输入到达时间,格式为 时,分,秒\n");
scanf("%d,%d,%d",&h,&m,&s2);
T=(float)(qh(H,h))+(m-M)*60+s2-s1;
v=L/T;
}
int qh(int x,int y)
{
int z;
if(x>y)z=(24-x+y)*3600;
else z=(y-x)*3600; //注意这里
return(z);
}

//---------------------------------------------------------------------------

第二个程序(修改4处):
//---------------------------------------------------------------------------

#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c;

float x1,x2,D; /*注意这里,变量声明应该放在执行语句之前*/

printf("标准一元2次方程形式为axx+bx+c=0\n请输入其系数,表示为 a,b,c\n");
scanf("%f,%f,%f,",&a,&b,&c);
D=b*b-4*a*c;
if(D==0) /*注意这里*/
{
x1=x2=(-b)/(2*a);
printf("x1=x2=%f",x1);
}
else if(D>0) /*注意这里*/
{
x1=((-b)+sqrt(D))/(2*a);
x2=((-b)-sqrt(D))/(2*a); /*注意这里*/
printf("x1=%f,x2=%f",x1,x2);
}
else
{
printf("该方程无实数根\n");
}
}

//---------------------------------------------------------------------------
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-23
1. scanf("%f",&L); //输入变量
2. if(D==0) /*是==,不是=*/
就上面两个地方粗心了,程序写的不错
第2个回答  2008-10-23
第一个 下面几行格式控制有误:
scanf("%f",&L); //输入变量
printf("请输入出发时间,格式为 时,分,秒\n"); //显示输入变量
scanf("%d,%f,%f",&H,&M,&s1); //输入变量
printf("请输入到达时间,格式为 时,分,秒\n"); //显示输入变量
scanf("%d,%f,%f",&h,&m,&s2); //输入变量
无输出函数 printf("平均速度=%f",&V);
自定义函数中 else z=(x-y)*3600; 应为 else z=(y-x)*3600;
建议H,h也定义成实型。并加入判定hH是否小于24大于0,mMs1s2是否小于60大于0的y语句。
第二个 第二个if处缺少 x2=((-b)-sqrt(D))/(2*a);
第二个if前加else,后一个else语句不用加花括号。应该是if(D==0);
第3个回答  2008-10-23
if(D=0)
{
x1=x2=(-b)/(2*a);
printf("x1=x2=%f",x1);
}
else if(D>0)
{
x1=((-b)+sqrt(D))/(2*a);
printf("x1=%f,x2=%f",x1,x2);
}
else
{
printf("该方程无实数根\n");
}
}

少了个 else
第4个回答  2008-10-25
我刚学,不会这个,
相似回答