浮点异常(内核转储)-c程序
我对我的一项任务有一个问题:浮点异常(内核转储)-c程序,c,C,我对我的一项任务有一个问题: 编写一个程序,允许用户键入表单的简单表达式 号码操作员号码 程序计算表达式并在终端显示结果,精确到小数点后两位 但是,该程序只允许调用scanf函数一次 #包括 内部主(空) { 整数num1,num2,和,差,积,商; num1=0; num2=0; printf(“输入表达式”); scanf(“%d%d”、&num1、&num2); 总和=num1+num2; 差值=num1-num2; 乘积=num1*num2; 商=num1/num2; 开关(num1)
#包括
内部主(空)
{
整数num1,num2,和,差,积,商;
num1=0;
num2=0;
printf(“输入表达式”);
scanf(“%d%d”、&num1、&num2);
总和=num1+num2;
差值=num1-num2;
乘积=num1*num2;
商=num1/num2;
开关(num1){
案例2:printf(“%d/%d=%d”,num1,num2!=0,商);
打破
案例1:printf(“%d*%d=%d”,num1,num2,产品);
打破
案例0:printf(“%d-%d=%d”,num1,num2,差异);
打破
默认值:printf(“%d+%d=%d”,num1,num2,sum);
打破
}
}
程序可以编译,但当我运行它时,会显示以下消息:
浮点异常(内核转储)
这是什么意思?另外,如果还有什么问题,请告诉我。我想这就是您需要的
#include <stdio.h>
int main(void)
{
int num1=0, num2=0;
char operation= ' ';
printf("type in expression\n");
scanf("%d %c %d", &num1, &operation, &num2);
switch (operation) {
case '/': {
if(0 == num2) //This is the solution for your issue.
{
printf("\nCan not perform %d/%d", num1, num2);
}
else
{
printf("\n%d / %d=%d", num1, num2, num1/num2);
}
}
break;
case '*': printf("\n%d * %d=%d", num1, num2, num1*num2);
break;
case '-': printf("\n%d - %d=%d", num1, num2, num1-num2);
break;
case '+': printf("\n%d + %d=%d", num1, num2, num1+num2);
break;
default: printf("\nInvalid operation[%c]", operation);
break;
}
return 0;
}
#包括
内部主(空)
{
int num1=0,num2=0;
字符操作=“”;
printf(“在表达式中键入\n”);
scanf(“%d%c%d”、&num1、&operation、&num2);
开关(操作){
案例“/”:{
if(0==num2)//这是您问题的解决方案。
{
printf(“\n不能执行%d/%d”,num1,num2);
}
其他的
{
printf(“\n%d/%d=%d”,num1,num2,num1/num2);
}
}
打破
案例'*':printf(“\n%d*%d=%d”,num1,num2,num1*num2);
打破
案例'-':printf(“\n%d-%d=%d”,num1,num2,num1-num2);
打破
大小写“+”:printf(“\n%d+%d=%d”,num1,num2,num1+num2);
打破
默认值:printf(“\n无效操作[%c]”,操作);
打破
}
返回0;
}
输入是什么?该输入的预期输出是什么?这意味着num2
很可能是0,被0除是一个问题。顺便问一下:如何在这里获得“浮点异常”。我在您的程序中没有看到任何float
或double
。您确定正在运行的程序就是您发布在此处的程序吗?您没有从用户处读取运算符。@MichaelWalz整数除以0通常被报告为“浮点异常”。这条消息有误。对不起。“但我刚刚回答了他的问题。”迈克尔瓦尔兹说。理解。我不知道这件事。我以后会小心的。
#include <stdio.h>
int main(void)
{
int num1=0, num2=0;
char operation= ' ';
printf("type in expression\n");
scanf("%d %c %d", &num1, &operation, &num2);
switch (operation) {
case '/': {
if(0 == num2) //This is the solution for your issue.
{
printf("\nCan not perform %d/%d", num1, num2);
}
else
{
printf("\n%d / %d=%d", num1, num2, num1/num2);
}
}
break;
case '*': printf("\n%d * %d=%d", num1, num2, num1*num2);
break;
case '-': printf("\n%d - %d=%d", num1, num2, num1-num2);
break;
case '+': printf("\n%d + %d=%d", num1, num2, num1+num2);
break;
default: printf("\nInvalid operation[%c]", operation);
break;
}
return 0;
}