作业帮 > 综合 > 作业

C语言输入一个数判断他是不是整数,如果是,判断他是奇数还是偶数,如果是偶数,那么他的一半是不是偶数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/30 03:57:07
C语言输入一个数判断他是不是整数,如果是,判断他是奇数还是偶数,如果是偶数,那么他的一半是不是偶数
程序如下,可是我发现如果输入的数是字母或者符号,程序仍然认为是整数,求怎么改?
#include
int main(void)
{
\x09long double number=0L;
\x09printf("Please input one number:\n");
\x09scanf("%lf",&number);
\x09if((int)number==number)
\x09{
\x09\x09int a=(long)number;
\x09if (a%2L==0L)
\x09{\x09printf("the number you input is even!\n");
\x09if ((a/2L)%2L==0L)
\x09\x09printf("half of the number is even,too!\n");
\x09else printf("half of the number is not even!\n");
\x09}
\x09else printf("the number is odd!\n");
\x09}
\x09else printf("the number is not an integer!\n");
\x09return 0;
}
不知道楼主的编译器是不是和我的一样,不支持long double类型,我的改成这样就可以了:
#include <stdio.h>
int main(void)
{
\x05double number;//定义成double类型,并且不能初始化为0L
\x05printf("Please input one number:\n");
\x05scanf("%lf",&number);
\x05if((int)number==number)
\x05{
\x05\x05int a=(long)number;
\x05if (a%2L==0L)
\x05{\x05printf("the number you input is  even!\n");
\x05if ((a/2L)%2L==0L)
\x05\x05printf("half of the number is even, too!\n");
\x05else printf("half of the number is not even!\n");
\x05}
\x05else printf("the number is  odd!\n");
\x05}
\x05else printf("the number is not an integer!\n");
\x05return 0;
}
再问: 这个代码写的真好,不过我有个问题,判断是否是数字的函数IsNumber中的P指针遇到小数点会不会出问题啊,还是说小数点不占内存?
再答: 小数点占内存,有小数点肯定不是整数了