程序在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/