C语言中如何判断一个数是完全平方数

怎么用C语言确定题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
(要输出的是1000以内的数)
可是就是不得,我的程序如下:(跪求完整程序,谢谢了!!!)
#include<stdio.h>
#include<math.h>
int main()
{ int i,a,d;
double b,c,x,y;
for (i=1;i<=1000;i++)
{
a=i+100;
b=sqrt(a);
c=b*b;

if(c==a)
{
d=168+a;
x=sqrt(d);
y=x*x;
if(y==d)
printf("%d ",i);
}
}
return 0;
}

需要准备的材料分别有:电脑、C语言编译器

1、首先,打开C语言编译器,新建初始.cpp文件,例如:test.cpp。

2、其次,在test.cpp文件中,输入C语言代码:

int a = 64;double c = sqrt(a);

if (c == int(c))

printf("是完全平方数");

else  

printf("不是完全平方数");

3、编译器运行test.cpp文件,此时成功快速识别出了是不是完全平方数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-19

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,输入C语言代码:

int a = 37;double b = sqrt(a);

if (b == int(b))

printf("是");

else  

printf("不是");

3、编译器运行test.cpp文件,此时成功输出了一个数是不完全平方数的判断结果。

本回答被网友采纳
第2个回答  2019-05-23

#include&lt;stdio.h&gt;

#include&lt;math.h&gt;

int IsSquare(int n)

{

int i,a=0;

for(i=1;i*i&lt;=n;i++)

{

if(i*i==n)

{

a=1;

break;

}

}

return a;

}

int main()

{

int n,a;

scanf("%d",&n);

a=IsSquare(n);

if(a)

{

printf("YES");

}

else

printf("NO");

return 0;

}

扩展资料:

scanf函数最主要的用法是:

scanf("输入控制符",输入参数);

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。

如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。

本回答被网友采纳
第3个回答  2019-05-23

#include<stdio.h>

#include<math.h>

int main()  {

long int i,x,y;

printf("完全平方数:\n");

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

x=sqrt(i+100); /*x为加上100后开方后的结果*/

y=sqrt(i+268); /*y为再加上168后开方后的结果*/

if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

printf("\n%ld\n",i);

}

}

扩展资料:

C语言需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

参考资料

百度百科-c语言

本回答被网友采纳
第4个回答  2019-06-17

对于一个比较大的整数,比如:23916,一共有5位数字,假设它是完全平方数,那么它的平方根应该是一个3位数,因为100的平方是最小的5位数。

同时,这个平方根应该小于200,因为200的平方是40000比原数大。取个中间数150,因为已知15的平方是225,所以很容易算出150的平方是22500,比原数小。

同理,算出160的平方是25600,比原数大。所以,如果24346时一个完全平方数,它的平方根应该大于150且小于160。完全平方数,凡是个位为6的,其平方根个位必为4或6。

计算154的完全平方,等于 23716 比 23916 小200,计算156的完全平方,等于 24336 比 23916 大420,所以23916不是完全平方数。

扩展资料

应用:

有多少个正整数n,使n!+2019是完全平方数,注:n!=1*2*…*n,即n的阶乘。

讲解思路:这道题属于完全平方数问题,要判断一个数是完全平方数,除了严格验证外,目前还没有完善的方法。但要判断一个数不是完全平方数,有很多种性质可以用,

这里采用除以4的余数来判别。由于n!具有十分特别的性质,因此总的解题思路是:先判断当n>=4时的情况,然后对n<4时的3个数逐一验证。

步骤1:

先思考第一个问题,

当n大于等于4时,

n!+2019除以4的余数是多少。

此时n!=1*2*3*4…*n,

故n!是4的整数倍,

而2019除以4的余数是3,

因此n!+2019除以4的余数是3。

步骤2:

再思考第二个问题,

当n大于等于4时,

n!+2019可能是完全平方数吗。

此时n!+2019是奇数,

如果它是完全平方数,

则存在某自然数k,

使n!+2019=(2k+1)^2

=4k^2+4k+1,

显然该数除以4的余数为1,

这与步骤1的结论想矛盾,

因此不是完全平方数。

注:k^2表示k的平方。

步骤3:

再思考第三个问题,

考虑原题目的答案。

从步骤2直到n小于4,

下面对n=1,2,3分别讨论:

当n=1时,

n!+2019=2020不是完全平方数;

当n=2时,

n!+2019=2021不是完全平方数;

当n=3时,

n!+2019=2025=45^2,

是完全平方数。

所以原题的答案只有n=3。

相似回答