首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

判断1个数是否为整数

2013-11-29 
判断一个数是否为整数判断是否是整数Time Limit:1000MSMemory Limit:65536KBSubmissions:515Accepted:146D

判断一个数是否为整数
判断是否是整数

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;    




1
Yes

2.12
No

3.000
Yes
4.02
No

热点排行