c语言怎么判断输入的是一个整数,不是则重新输入

c语言怎么判断输入的是一个整数,不是则重新输入,第1张

这是一道题还是两道题?在这里我就先按两道题写了:
判断是否是闰年:
main()

int Year;
scanf(“%d”,&Year);
if(Year<1000||Year>9999)
{
if((Year%4==0 && Year%100!=0) || Year%400==0)
printf("%d年是润年",Year);
else
printf("%d年不是润年",Year);

else
{
printf("请输入正确的年份");
}
}
判断是否为整数
main()
{
int Number;
scanf(“%d”,&Number);
while((int)Number!=Number)
{ //将输入的书强制转换为整形,如果两个数一致则输入的为整数
printf("不是整数,请重新输入:");
scanf(“%d”,&Number);
}
}

因为实型和整型变量是不能直接比较的,要做一步类型转换才能比较首先要明确允许的误差是多少。比如一般情况误差的绝对值小于10-8时我们可以认为两个实数是相等的。

代码如下

#include <stdioh>

#include <mathh>

main()

{

float b,c;

c=1;

while(c>=0)      //如果输入小于0,就结束程序

{

scanf("%f",&c);

b=sqrt(c);

if (fabs(b-(int)b)<1e-8) printf("%0f的开平方是个整数\n",c);

elseprintf("%0f的开平方不是整数\n",c);

}

}

结果

if(x-(int)x)
    printf("%g is not an integer\n",x);
else
    printf("%g is an integer\n",x);

给你改了一下,如下,其中错误已经改了
#include "stdioh"
#define N 4
main()
{
int a[N],i,j,t,p;
printf("请输入%d个任意整数:\n",N);
p=a;
for(i=0;i<N;i++)
{
scanf("%d",(p+i)); //建议写成 &p[i]
if((p+i)-(int)((p+i))==0) //你这里写错了,已经给你改了,建议写成 p[i]-(int)p[i],下面的一样建议写成这种形式,方便看
printf("输入错误!");
}
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;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<N;i++)
{
printf("%5d",(p+i));
}
}
至于你说要如何去判断输入的一个数是整数而不是浮点数,这个只能用字符串的形式读入,浮点数是有小数点的是吧?如果将这个数以字符串的形式读入,再判断这个串中有没有小数点就可以知道是整数还是浮点数了,其实在实际运用中,不要纠结这是小数还是整数,没多大意义,用int 可以把浮点数强制转换为整型数。

#include<stdioh>  
int main(void)  
{  
double x;  
scanf("%f",&x);  
if((int)x==x)    
printf("%f是整数",x);  
}

思路是:一个小数浮点变量和一个整型变量。输入浮点变量,先然后将浮点变量中存储的数赋值到整型变量中,整型变量自动去除小数部分。将两者比较,如果浮点变量等于整形变量,并且还要看一下是不是正数。如果满足这两点,就说明浮点变量小数点后没有数,而且是正数,就输出“是正整数”。否则直接输出“不是正整数。”。
#include<stdioh>
#include<stdlibh>
int main()
{
int a;
float b;//用小数变量
scanf("%f",b);
a=b;//去除小数部分
if(a==b&&a>0){//没有小数的和有小数的比,并且判断是不是正数。
//说明小数部分是0,而且是正数
printf("是正整数");
}else{
printf("不是正整数");
}
return 0;
}
我是C++语言,不习惯C语言,这里面好多错误,你也可以改正一下。(这道题的思路我是正确的。)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13368141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-23
下一篇 2023-07-23

发表评论

登录后才能评论

评论列表(0条)

保存