C语言求一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少。

2024-12-18 17:15:11
推荐回答(5个)
回答1:

解题过程如下:

#include

#include

void main()

{

int i=1;

int n,m;

for (i=1;i<100000;i++)

{

m=sqrt(100+i);

n=sqrt(268+i);

if(m*m==i+100)

if(n*n==i+268)

printf("%ld",i);

    }}

1581

扩展资料

性质:

C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名的函数,这个函数称为主函数,整个程序从这个主函数开始执行。

C语言程序鼓励和提倡人们把一个大问题划分成一个个子问题,对应于解决一个子问题编制一个函数,因此,C语言程序一般是由大量的小函数而不是由少量大函数构成的,即所谓“小函数构成大程序”。这样的好处是让各部分相互充分独立,并且任务单一。因而这些充分独立的小模块也可以作为一种固定规格的小“构件”,用来构成新的大程序。

比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补0)位移。例如,将11100011右移3比特,算术右移后成为11111100,逻辑右移则为00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。

运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。

回答2:

for(i=0;;i++) //如果想求出几个数,最好加上多大范围内跳出循环 i<=XXXXX
{
if(((int)sqrt(i+100.0)*(int)sqrt(i+100.0)==(i+100))&&((int)sqrt(i+268.0)*(int)sqrt(i+268.0)==(i+268))) //不知道是加 168 还是 268 与提问的不一样,sqrt 函数参数是浮点型,数字后面加个 .0
{ printf("%d\n“,i); break;} // 少写个引号,如果只想求一个数,要加break 跳出循环,否则%d 后面加个空格或者 \n ,不然几个数挤在一起输出没有分隔
}

回答3:

首先,你的printf语句里面"%d"少了一半的"号;
然后,你是想让程序死循环着一直找符合这要求的数并打印输出还是想找到了就退出循环并打印输出;
最后,如第二点的问题,如果是想死循环着寻找的话你的%d后面最好再加个空格隔开或者是其他分隔符\n啊什么的都可以,如果是想找到了一个就退出循环的话,那就在if的执行语句中加上break。
希望可以帮到你!

回答4:

这个是输出小于10000的所有符合条件的数
#include
#include
void main()
{
int a=0,c=0,e=0;
double b=0,d=0;
while(a<=10000)
{
a++;
b=sqrt(a+100);
c=(int)b;
e=sqrt(a+168);
d=(int)c;
while(b==c && e==d)
{
printf("%d\n",a);
break;
}
}
}
望取纳。。。。

回答5:

#include
#include
int main(void)
{
int x,y,i;
for(i=1;i<100000;i++)
{
x=sqrt(i+100);
y=sqrt(i+268);
if(x*x==i+100 && y*y==i+268)
printf("\n%1d\n",i);}
}希望有帮助