c - 根据用户输入求解表达式

标签 c logic expression

我正在编写一个程序,要求用户输入 2 个输入:x 和 y。这些值用于计算此公式:(3x^2-2xy+5)/(y^2+1)。当我输入值时 --> 2,3 它计算出一个非常小的负数,例如 -12586511

#include <stdio.h>

int main (void) {

    int x, y;

    printf("Enter two integer values (x, y): ");
    scanf("%d,%d", &x, &y);

    float E = (3 * (x*x) - 2 * (x*y) + 5) / (y*y+1);

    printf("The expression value is: %.2f\n", E);


    return 0;
}

最佳答案

-12586511肯定是输入无效数据的结果。

对于像 "2 3""2 ,3""2 , 3" 这样的输入,y 不会被设置。

// Risky code
scanf("%d,%d", &x, &y);

健壮的代码会检查 scanf() 的结果以确保输入正确。

if (scanf("%d,%d", &x, &y) != 2) {
  puts("Error");
  return -1;
}

最好大方点,在数字后留空格:

//           v 
if (scanf("%d ,%d", &x, &y) != 2) {

第二期涉及使用 int 数学进行除法。 OP 可能希望方程式使用 FP 数学。

// float E = (3 * (x*x) - 2 * (x*y) + 5) / (y*y+1);
float E = (3 * (x*x) - 2 * (x*y) + 5) / (y*y+1.0f);
// or 
float E = (3.0f * (x*x) - 2 * (x*y) + 5) / (y*y+1.0f);

关于c - 根据用户输入求解表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39758999/

相关文章:

c - 为什么我不能将指向结构的指针保存为指向指针数组的指针的索引?

在链接之前编译会阻止优化

c - 如何确定单个数组中位的重复模式

php - 在 Laravel/PHP/MySQL 中保存和显示带有子页面的页面所需的数据库逻辑建议

c# - 如何抽象出此 Entity Framework IQueryable 查询中的选择?

c - 尝试使用 gcc 编译时出错

c 程序显示二叉树,但它没有显示任何输出,即使它没有显示任何错误。这个程序有什么错误

logic - 斑马谜题的真值表

java - 如何将数学表达式树转换为简化形式?

c - 如何将三元运算符合并到优先级攀升算法中?