你的判断条件写反了
应该是 year <= 1900 || year >= 2015 才是错误
在参考资料中提供的代码中,并没有涉及到输入数字并判断输入是否合法的部分。因此,需要先看一下问题所在的代码。
根据提供的代码,可以看到判断输入是否合法的部分为:
if(num<=0 || num>=5) { printf("输入错误\n"); return 0; }
这里的判断条件是判断输入的数字是否小于等于0或者大于等于5,如果满足条件则输出“输入错误”。因此,首先需要确认输入的数字是否在1-4的范围内。如果不在,就会输出“输入错误”。
同时,需要注意到在main函数中定义了变量num,并给其赋初值为0。这可能导致在输入数据的时候可能会出现问题。
针对上述问题,建议可以进行如下的修改:
参考代码:
void remind() { printf("*******\n"); printf("**按1加 按2减 按3乘 按4除*\n"); printf("** 其他操作报告提示 ***\n"); }
int add(int x,int y) { return x+y; }
int sub (int x,int y) { return x-y; }
int mul(int x,int y) { return x*y; }
float div(int x,int y) { if(y==0) { printf("除数不能为0\n"); return -1; } else { return (float)x/y; } }
int main() { int a, b, c; float d; int num;
remind(); //调用该函数,显示提示信息
while (1)
{
printf("请输入选项数字(1/2/3/4):");
scanf("%d", &num);
if (num == 1)
{
printf("请输入两个数字(以空格隔开): ");
scanf("%d %d", &a, &b);
c = add(a, b);
printf("%d + %d = %d\n", a, b, c);
break;
}
else if (num == 2)
{
printf("请输入两个数字(以空格隔开): ");
scanf("%d %d", &a, &b);
c = sub(a, b);
printf("%d - %d = %d\n", a, b, c);
break;
}
else if (num == 3)
{
printf("请输入两个数字(以空格隔开): ");
scanf("%d %d", &a, &b);
c = mul(a, b);
printf("%d × %d = %d\n", a, b, c);
break;
}
else if (num == 4)
{
printf("请输入两个数字(以空格隔开): ");
scanf("%d %d", &a, &b);
d = div(a, b);
if (d != -1)
{
printf("%d ÷ %d = %f\n", a, b, d);
}
break;
}
else
{
printf("输入错误,请重新输入\n");
}
}
system("pause"); //用于防止dos窗口过快关闭
return 0;
}
上述代码可以正常运行,其中加入了输入数字判断的部分,如果在1-4之间输入数字则执行对应的操作。如果输入不在这个范围内,则会输出“输入错误”。同时,当除数为0的时候,会提示“除数不能为0”。
提示:上述代码中使用了windows下的system("pause")命令来防止dos窗口过快关闭,如果是在Linux下运行,则需要使用其他的方式来进行防止窗口过快关闭。