判断一个数是否为整数
判断是否是整数
Time Limit: 1000MS
Memory Limit: 65536KB
Submissions: 515
Accepted: 146
Description
Input
输入一个数,判断是否是整数,如果是整数则输出“Yes”,否则输出“No” 输入有多组测试数据
Output
如果是整数则输出“Yes”,否则输出“No”
Sample Input
1
2.12
3.000
Sample Output
Yes
No
Yes
附上我的代码
#include<math.h>
#include<stdio.h>
main()
{
double n,a;
while(scanf("%lf",&n))
{
n=sqrt(n);
a=(int)n;
if(a==n)
printf("Yes\n");
else
printf("No\n");
}}
还有一个#include<stdio.h>
main()
{
float a;
while(scanf("%f",&a))
{if (a!=(int)a)
printf("No\n");
else printf("Yes\n");
}
}
输出都是对的
全部都是超时
有没有更好的算法,求高手解答.................................
[解决办法]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *a = new char[50];
bool flag = true;
bool zero = true;
while( true )
{
gets(a);
int n = strlen(a);
int i = n - 1;
while( i >= 0 )
{
if( a[i] == '.' && zero )
{
flag = true;
break;
}
else if( a[i] == '.' && !zero )
{
flag = false;
break;
}
else if( a[i] == '\n' )
{
break;
}
else if( a[i] == '0' )
{
zero = true;
}
else
{
zero = false;
}
--i;
}
fflush(stdin);
if( flag )
{
printf("YES!\n");
}
else
{
printf("NO!\n");
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
while( true )
{
char *a = new char[50];
bool flag = true;
bool zero = true;
gets(a);
int n = strlen(a);
int i = n - 1;
while( i >= 0 )
{
if( a[i] == '.' && zero )
{
flag = true;
break;
}
else if( a[i] == '.' && !zero )
{
flag = false;
break;
}
else if( a[i] == '\n' )
{
break;
}
else if( a[i] == '0' )
{
zero = true;
}
else
{
zero = false;
}
--i;
}
fflush(stdin);
if( flag )
{
printf("YES!\n");
}
else
{
printf("NO!\n");
}
delete [] a;
}
return 0;
}
//试一试
#include "iostream.h"
#include "string.h"
int main()
{
while (1)
{
char a[100];
int lenNum=0,inPutNum=0;
cout<<"Please input num!"<<endl;
cin>>a;
lenNum=strlen(a);
for (int i=0;i<lenNum;i++)
{
if (a[i]>47&&a[i]<58)
{
if (i==(lenNum-1))
{
inPutNum=inPutNum*10+(int)(a[i]-48);
cout<<"YES!"<<endl;
cout<<inPutNum<<endl;
}
inPutNum=10*inPutNum+(int)(a[i]-48);
continue;
}
else
{
cout<<"NO!"<<endl;
break;
}
}
}
return 0;
}
#include <stdio.h>
#include <time.h>
#define n 1287
main()
{
double start,finish;
start=(double)clock();
double r=(double)(n%1);
if(r<0.0001)printf("YES\n");
else printf("wrong!\n");
finish=(double)clock();
printf("time is %.3lf\n",(start-finish));
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
//3.000
string str;
while(cin>>str)
{
int len = str.size();
bool flag= true;//是整数
for(int i=0;i<len && flag; i++)
{
if(str[i]=='.')
{
i++; //判断小数点之后的数有没有 不是0的数
while(i < len&&flag)
{
if(str[i] != '0' )
{
flag = false; //不是整数
}
i++;
}
}
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}