程序要求用户输入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);
}
答案 0 :(得分:2)
问题1
行
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;