判断是否为浮点数(小数位很多的情况)

题目:描述

判断某个数是不是整数(整数指没有小数部分或者小数部分全为0的数)

输入描述

第一行一个浮点数 n(1≤n≤1000) 表示一共有n个数需要判断,数据的小数部分可能很长。 接下来 n 行,每行一个数 a(0≤a≤1500)。

输出描述

n 行,每行一个字符串。如果是非浮点数,输出"YES",反之输出"NO"(输出不包含引号)

用例输入 1

5
1.0
3.3
0.114514
1.919810
4
用例输出 1
YES
NO
NO
NO
YES

一.思路是什么?

仔细看题,小数部分可能很长,说明什么??说明不能直接用浮点数来计算,就是不能直接去通过加减乘除来判断是否为浮点数。此时我们就需要转换思路,因为需要判断是否为非浮点数,那就是判断小数点后面的数,好,此时我们说到了一个重要的点,那就是**“小数点”**,如果我们就查这个 “点”,查到这个之后,就判断后面的数和0的关系,不就可以了吗???那我们就需要一个字符数组来存放这个。

二、使用步骤

1.引入库

代码如下(示例):

#include <stdio.h>
#include <string.h>
char a[15000];
int main()
{
	int n;
	scanf("%d",&n);
	while(n--)//循环次数,注意不能一直用for循环,为了代码的美观 
	{
		int flag=0,k=0;//设置二个标志位,以便在程序中能够进行判断 
		scanf("%s",a);//输入数组 
		for(int i=0;i<strlen(a);i++)//小于输入数组的长度 
		{
			if(flag==0)//先利用第一个设置的标志位,肯定要让数据
			//先进入这个条件语句 
			{
				if(a[i]=='.')//判断是否读到了‘.’,若读到了‘.’
				//则之后的判断就是在判断小数点后面的数字是否为0了 
				{
					flag=1;//所以此时把标志位flag的值变为1.
					//以便其下次a[i+1]这个元素再进入此条件语句,
					//而是进入else的下一个条件语句 
				}
			} 
			else if(a[i]!='0'){//这是在判断小数点后面的数字是否为0的操作 
				k=1;//当然,此时在发现与条件相符的时候。就会改变第二个
				//标志位k的值,然后一边下面进行输出判断 
			}
		}
		if(k==1)//此时就开始输出判断,判断的条件就是k的值 
		{
			printf("NO\n");
		} else {
			printf("YES\n");
		}
	}
}
## 2.读入数据

在这里插入图片描述


总结

总的来说,就是要学会用标志位,然后懂得怎么去用字符数组。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值