永发信息网

C语言中如何判断输入的数是否为整数?

答案:6  悬赏:50  手机版
解决时间 2021-02-01 19:25
#include "stdio.h"
#define N 4
main()
{
int a[N],i,j,t,*p;
printf("请输入%d个任意整数:\n",N);
p=a;
for(i=0;i {
scanf("%d",(p+i));
if((p+i)-(int)(p+i)==0)
printf("输入错误!");
}

for(i=0;i {
for(j=0;j {
if(*(p+j+1)<*(p+j))
{
t=*(p+j+1);
*(p+j+1)=*(p+j);
*(p+j)=t;
}
}
}
printf("升序排列后的数为:\n");
for(i=0;i {
printf("%5d",*(p+i));
}

}
这个SCANF后面的if为什么起不到判断作用?
最佳答案
#include
void main (void)
{
float a;
cin>>a;
if(a/1>0)
{
cout<<"浮点型"< }else
{
cout<<"整数型"< }
}
全部回答
因为你定义的指针类型是int类型,所以你输入非整数的值,自动转换成整形 把指针声明为float or double
若n=n*n,n,n均为正整数,则n为完全平方数 c语言中,include 直接对n开平方, 如果有 sqrt(n)==int(sqrt(n)),则n为完全平方数 sqrt()函数是math库中的开平方函数,如果开方结果与取整结果一样,则符合要求.
这不是scanf后面if的问题,你的逻辑思路有问题,算法也不对,再整整吧
scanf("%d",(p+i)); if((p+i)-(int)(p+i)==0) printf("输入错误!"); 改成下面的! if (scanf("%d",(p+i)) != 1) printf("输入错误!"); 以%d作参数时, scanf本身就对输入进行检查,如果成功就说明你输入的整数
给你改了一下,如下,其中错误已经改了 #include "stdio.h" #define N 4 main() { int a[N],i,j,t,*p; printf("请输入%d个任意整数:\n",N); p=a; for(i=0;i
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯