注册 登录
编程论坛 C++教室

求解释一下

於晓琪123 发布于 2014-12-29 11:31, 525 次点击
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    double yes1(double a, double b, double c);
    double yes2(double a, double b, double c);
    int a, b, c, d;
    cin>>a>>b>>c;
    d = b*b-4*a*c;
    if (d >= 0)
        cout<<"x1="<<yes1(a,b,c)<<" "<<"x2="<<yes2(a,b,c)<<endl;
    else
        cout<<"无解"<<endl;
    return 0;
}
    double yes1(double a, double b, double c)
    {
        int m;
        m = (-b + sqrt(b*b-4*a*c))/(a/2);            
    }
    double yes2(double a, double b, double c)
    {
        int n;
        n = (-b - sqrt(b*b-4*a*c))/(a/2);
        return n;
    }
我在定义两个函数的时候为什么不能将b*b-4*a*c改为d      这里我定义的d不是全局变量吗  为什么不能改成d
6 回复
#2
xufan2014-12-29 13:39
程序代码:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    double yes1(double a, double b, double c);
    double yes2(double a, double b, double c);
    //modify
    double a, b, c, d;
    cin>>a>>b>>c;
    d = b*b-4*a*c;
    if (d >= 0)
        cout<<"x1="<<yes1(a,b,c)<<" "<<"x2="<<yes2(a,b,c)<<endl;
    else
        cout<<"无解"<<endl;
    return 0;
}
//modify
    double yes1(double a, double b, double c)
    {
        double m;
        m = (-b + sqrt(b*b-4*a*c))/(2*a);            
        return m;
    }
    //modify
    double yes2(double a, double b, double c)
    {
        double n;
        n = (-b - sqrt(b*b-4*a*c))/(2*a);
        return n;
    }
#3
於晓琪1232014-12-29 21:44
这里的确是的  但是我的问题是为什么不能把下面的b*b-4*a*c改成d
#4
wp2319572014-12-30 09:18
除了“全局变量”之外  存在一个所谓的“变量域”的概念  不能被通用的
#5
於晓琪1232014-12-30 10:50
回复 4楼 wp231957
我在main函数里定义的  不是应该变量域是从定义开始到程序结束吗   ?这不理论是是可以的吗?
#6
wp2319572014-12-30 10:52
以下是引用於晓琪123在2014-12-30 10:50:04的发言:

我在main函数里定义的  不是应该变量域是从定义开始到程序结束吗   ?这不理论是是可以的吗?



 main也是一个函数  它里面定义的变量 有效域仅仅是main而已

而全局变量是定义在main之外的变量
#7
於晓琪1232014-12-31 10:42
回复 6楼 wp231957
好的
1