如何评估C语言中的输入数据?
您好,我在计算输入数据时遇到问题,首先我扫描一个整数值,如下所示:如何评估C语言中的输入数据?,c,if-statement,evaluate,C,If Statement,Evaluate,您好,我在计算输入数据时遇到问题,首先我扫描一个整数值,如下所示: scanf("%d", &vstup2) 然后我陈述一个条件,它是否等于零,如下所示: if (vstup2 == 0){ printf ("Nedefinovany vysledek!\n"); 但当我向这个变量输入零时,它不会输出printf语句,而是输出这行代码: Floating point exception: 8 以下是完整的代码: #include<stdio.h> i
scanf("%d", &vstup2)
然后我陈述一个条件,它是否等于零,如下所示:
if (vstup2 == 0){
printf ("Nedefinovany vysledek!\n");
但当我向这个变量输入零时,它不会输出printf语句,而是输出这行代码:
Floating point exception: 8
以下是完整的代码:
#include<stdio.h>
int main(void)
{
int vstup1;
int vstup2 = 0;
int sucet = 0;
int rozdil = 0;
int soucin = 0;
int podil = 0;
float prumer = 0;
printf("INPUT FIRST INTEGER\n");
if (scanf("%d", &vstup1)&& (vstup1 < -10000 || vstup1 > 10000))
{
printf("WRONG INPUT\n");
return 0;
}
printf("INPUT SECOND INTEGER\n");
scanf("%d", &vstup2);
if (vstup2 <= -10000 || vstup2 >= 10000)
{
printf("WRONG INPUT\n");
return 0;
}
sucet = (vstup1 + vstup2);
rozdil = (vstup1 - vstup2);
soucin = (vstup1 * vstup2);
podil = (vstup1 / vstup2);
prumer = ((vstup1 + vstup2)/2);
printf("Desitkova soustava: %i %i\n", vstup1, vstup2);
printf("Sestnactkova soustava: %x %x\n", vstup1, vstup2);
printf("Soucet: %i + %i = %i\n",vstup1, vstup2, sucet);
printf("Rozdil: %i - %i = %i\n",vstup1, vstup2, rozdil);
printf("Soucin: %i * %i = %i\n",vstup1, vstup2, soucin);
if (vstup2 != 0)
{
printf("Podil: %i / %i = %i\n",vstup1, vstup2, podil);
}
else
{
printf("Nedefinovany vysledek!\n");
}
printf("Prumer: %0.1f \n",prumer);
return 0;
}
#包括
内部主(空)
{
int-vstup1;
int-vstup2=0;
int-sucet=0;
int-rozdil=0;
int-soucin=0;
int-podil=0;
float-prumer=0;
printf(“输入第一个整数\n”);
如果(scanf(“%d”、&vstup1)和&(vstup1<-10000 | | vstup1>10000))
{
printf(“输入错误”);
返回0;
}
printf(“输入第二个整数\n”);
scanf(“%d”和&vstup2);
如果(vstup2=10000)
{
printf(“输入错误”);
返回0;
}
sucet=(vstup1+vstup2);
rozdil=(vstup1-vstup2);
soucin=(vstup1*vstup2);
podil=(vstup1/vstup2);
普鲁默=((vstup1+vstup2)/2);
printf(“Desitkova soustava:%i%i\n”,vstup1,vstup2);
printf(“sestnackova soustava:%x%x\n”,vstup1,vstup2);
printf(“源:%i+%i=%i\n”,vstup1,vstup2,sucet);
printf(“Rozdil:%i-%i=%i\n”,vstup1,vstup2,Rozdil);
printf(“Soucin:%i*%i=%i\n”,vstup1,vstup2,Soucin);
如果(vstup2!=0)
{
printf(“Podil:%i/%i=%i\n”,vstup1,vstup2,Podil);
}
其他的
{
printf(“Nedefinovany vysledek!\n”);
}
printf(“Prumer:%0.1f\n”,Prumer);
返回0;
}
您有一个除以0的除法,这就是您的错误。你必须防范它 当用户给出vstup2=0
时,您必须处理浮点异常(内核转储)
。
加上
if(vstup2==0)
{
//print some exception
return 0;
}
除以零podil=(vstup1/vstup2)代码>。您必须将if(vstup2!=0){移动到顶部。