c语言题,改错

来源:百度知道 编辑:UC知道 时间:2024/06/30 13:36:41
#include<stdio.h>
#include<math.h>
float length,width,area;
float x1,x2,b,d;
void main(){

printf("请输入长·宽·面积:\n");
scanf("%f%f%f",&length,&width,&area);
b=-2.0*(length+width);
d=sqrt(b*b-4*4*(length*width-area));
x1=(-b+d)/(2*4);
x2=(-b-d)/(2*4);
printf(" x1=%.2f\n x2=%.2f\n",x1,x2);
}
错在哪里啦?谢谢。
警告 1 warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\lenovo\documents\visual studio 2008\projects\源1.cpp 7 try
警告 2 warning C4244: “=”: 从“double”转换到“float”,可能丢失数据 c:\users\lenovo\documents\visual studio 2008\projects\源1.cpp 8 try
我只能运行到“printf("请输入长·宽·面积:\n"); ”,输入相应的数据后就没反应了,“printf(" x1=%.2f\n x2=%.2f\n",x1,x2); ”没反应~

在tc环境下你的程序没有啥问题,我运行了一下可以输出x1=..x2=..的。。。。。
问题出在你用的是visual studio语句。。它和TC在语句上有所不同,它好像是用c#,你可以网上查查看。。。

比的程序可以通过编译,但是你哪里错我就不知道了骂我不知道你想要的结果是什么哈

我编译过。。无错。。也许是你的C软件有问题,建议你别外下一个吧

首先必须保证sqrt后的数是大于等于零的数,因此输入时注意,错误是不是在b,d未定义就使用,建议将b.d均赋为0

当一个变量在函数外面定义(严格说不是定义,只是声明),会被编译器默认赋值。比如你函数外面的float变量都是值为float的0.这个自然也不是C软件的问题啦。
你试一下把scanf()里面的"%f"改成"%lf"。