c - 结构新手,为什么我的程序没有运行?

标签 c structure

程序在enter函数中要求用户输入分子和分母,需要化简后显示。 我试着运行它,但我的程序坏了。

关于如何执行此操作的任何提示?

我还在努力学习如何做结构。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>

    struct Fraction
    {
        int numerator;
        int denominator;
    };

    void enter(struct Fraction *choice)
    {
        printf("Numerator: \n");
        scanf("%d", choice->numerator);

        printf("Denominator: \n");
        scanf("%d", choice->denominator);
    }

    void simplify(struct Fraction *reduce)
    {
        reduce->numerator = reduce->numerator / reduce->numerator;
        reduce->denominator = reduce->denominator / reduce->denominator;
    }

    void display(const struct Fraction *show)
    {
        printf("%d / %d", show->numerator, show->denominator);
    }

    int main(void)
    {
        struct Fraction f;

        printf("Fraction Simplifier\n");
        printf("===================\n");

        enter(&f);
        simplify(&f);
        display(&f);
    }

最佳答案

问题一

线条

    scanf("%d", choice->numerator);
    scanf("%d", choice->denominator);

需要:

    scanf("%d", &choice->numerator);
    scanf("%d", &choice->denominator);
    //         ^^ Missing

问题2

以下几行:

    reduce->numerator = reduce->numerator / reduce->numerator;
    reduce->denominator = reduce->denominator / reduce->denominator;

相当于:

    reduce->numerator = 1.0;
    reduce->denominator = 1.0;

您需要代码来计算分子和分母的 GCD,然后使用:

    double gcd = get_gcd(reduce->numerator, reduce->denominator);
    reduce->numerator = reduce->numerator/gcd;
    reduce->denominator = reduce->denominator/gcd;

关于c - 结构新手,为什么我的程序没有运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38484213/

相关文章:

c - 用于在计算机之间发送消息的 Win32 API

python - 从不是类成员的类中调用单独脚本中的函数

c - 高效的 C 池分配器?

c - 数组中两个相邻值之间的最大差异,C

将全局数组复制到另一个全局数组

c - 在 C 中使用指针循环遍历结构元素

database - 库存数据库的最佳结构

c - C 中同名的嵌套结构

c - 如何在 x11 中的根窗口上写入?

c - sqrt() 函数不适用于可变参数