判断素数的程序,输入字符后,死循环。
判断素数的程序,一旦输入字符就可能死循环。求在不改变求素数功能的情况下,解决死循环的办法。最好能判断输入的是非法字符,从而让程序报错。谢谢各位了!!!代码如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,n,b;
float sz;
printf("请输入一个正整数\n");
scanf("%f",&sz);
b=0;
while(sz < 0||sz != (int)sz)
{
printf("输入错误\n请输入一个小于20亿的正整数\n");
scanf("%f",&sz);
}
(int)sz;
if(sz == 1 ||sz == 0 )
{printf("您输入的数既不是素数也不是合数\n");}
else{
a=2;
n=1;
if(sz == 2)
{printf("您输入的数是素数\n");}
else
{while((int)sz%a != 0)
{
a=2*n+1;
n=n+1;
}
if(sz == a)
{printf("您输入的数是素数\n");}
else
{printf("您输入的数是合数\n");}
}}
system("pause");
return 0;
} 为什么要用浮点数呢?
以前我记得测试过,
float f = 1;
if (1 == f)
{
//这里不一定进的来
}
楼主有兴趣可以搜索一下浮点数在内存中的存储形式 n0noper 发表于 2016-11-11 13:07
为什么要用浮点数呢?
以前我记得测试过,
不是可能进不来。。应该是一定进不来的,计算机保存浮点数是有误差的。。如果要这么做的话
fabs(f)-fabs(1)<1e-6;
页:
[1]