C++循环结构

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:18:36
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,求1000以内满足条件的数。
我的程序:
#include "iostream.h"
#include "math.h"
void main()
{
int a;
for(a=1;a<=1000;a++)
double b=sqrt(a+100)*sqrt(a+100);
double c=sqrt(a+168)*sqrt(a+168);
if(b==(a+100)&&c==(a+168))
cout<<"a="<<a<<endl;
}
他提示:CPP(9) : error C2065: 'b' : undeclared identifier
这是为什么?希望详细点,应该怎么做呢?

问题出在一个地方,b的作用域是你的for循环内部,可能你写的for循环原本应该是这样的:
#include "iostream.h"
#include "math.h"
void main()
{
int a;
for(a=1;a<=1000;a++)
{
double b=sqrt(a+100)*sqrt(a+100); //你上面写的for循环在此就结束了
double c=sqrt(a+168)*sqrt(a+168);
if(b==(a+100)&&c==(a+168))
cout<<"a="<<a<<endl;
}
}

变量b没定义

在循环里定义double b;变量只能在循环里使用,
在int a;
下面加:

double b,c;

因为b是在循环体内定义的所以if()中的b相当于是没有定义的,把b在for语句前单独定义