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

引用問題,拜託大大們救命啦!

hduhjj 发布于 2010-03-06 14:02, 545 次点击
#include<iostream>
using namespace std;
void main()
{
    int a,b,i;
    cin>>a>>b;//輸入待處理的兩個數
    if(a<b)
    {
        int& x=a;int& d=b;//大數為a,小數為b
    }
    else
    {
        int& d=a;int x=b;    //大數為b,小數為a
    }
    for(i=x;b%i!=0||a%i!=0;i--)//從小數開始篩選公約數
        ;
    cout<<"公約數:"<<i<<endl;
    for(i=d;i%b!=0||i%a!=0;i++)//從大數開始篩選公倍數
        ;
    cout<<"公倍數:"<<i<<endl;
}
調試結果:
D:\c\一個函數求公倍約數.cpp(15) : error C2065: 'x' : undeclared identifier
D:\c\一個函數求公倍約數.cpp(18) : error C2065: 'd' : undeclared identifier

在這裡,if語句中的引用是無效的么?應該怎麼使用呢?

題目要求是以一個函數求公約數和公倍數,以引用方式,拜託大大們救命啦!


6 回复
#2
cnfarer2010-03-06 18:15
x,d只在它们的定义的{ ... }中在效!
#3
hduhjj2010-03-06 21:33
關鍵是:怎麼解決呢?
#4
quietstar2010-03-06 21:43
回复 楼主 hduhjj
#include<iostream>

using namespace std;

int main()
{
    int a,b,i,t;
    int& x=a;int& d=b;
    cin>>a>>b;   
    if(a<b)
    {
        t=a;
        a=b;
        b=t;
    }
    for(i=x;b%i!=0||a%i!=0;i--)
    {
        ;
    }
    cout<<"公约数:"<<i<<endl;
    for(i=d;i%b!=0||i%a!=0;i++)
    {
        ;
    }
    cout<<"公倍数"<<i<<endl;
    return 0;
}
#5
quietstar2010-03-06 21:50
回复 楼主 hduhjj
另外请注意两点:
1、没有void main()这种写法,这是标准c++不允许的,应该是int main(),在程序的最后返回0,表示程序正确执行(返回非0值表示有错误发生);
2、for语句的语句体即使只有一个空语句,也请加上{},这是个好习惯。

你原来程序的错误在于,在if语句里面定于的引用,是个局部变量,在if语句外面当然无法访问。另外,for语句也是,以前的c++标准是可以的,现在已经明确for语句定义的变量无法在语句体外使用。
 
#6
hduhjj2010-03-06 22:34
大大我崇敬你!

#7
hblikun2010-04-11 21:09
作用域问题,看看书上面的这一小节吧。
1