C语言!!!!!!!!!!!由键盘输入一个正整数,判断该数是否为平方数,是输出Y,否则输出N

如题所述

楼主你好。
很简单:
#include <stdio.h>
#include <math.h>
int main(){
int input;
while(1){
scanf("%d",&input);
if(input<=0){//判断用户输入是否为正整数
printf("Please input a positive integer!\n");
continue;
}
printf("%c\n",(pow((int)sqrt(input),2)==input)?'Y':'N');
}
return 0;
}
//解释下,sqrt(input)会得到input的平方根,强制转换为int之后只要是非平方数就会丢失小数,导致再求平方之后不再与input相等了。
这样就能符合你的要求了。
输出:
-100
Please input a positive integer!
144
Y
225
Y
123
N
321
N
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-10
思路: 将该数开平方得到一个数 , 看是不是整数, 如果是说明是平方数, 否则不是 代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
double a;
while(scanf("%lf", &a) == 1) {
double temp = sqrt(a);
double ans = temp - (int)temp;//这里是用自身减去自身去掉小数部分的整数
if(ans == 0) {
printf("Y\n");
}
else {
printf("N\n");
}
}
return 0;
}

希望可以帮到你,如有疑问欢迎追问
第2个回答  2012-12-10
#include<stdio.h>
#include<math.h>
int main(){
double number;
int a;
printf("输入一个数:");
scanf("%lf",&number);
a=sqrt(number);
printf("是否为平方数:");
if(a*a==number)
printf("Y\n");
else
printf("N\n");
return 0;
}
第3个回答  2012-12-10
调用sqrt()
相似回答