gpt4 book ai didi

c - 如何在用户定义的函数中避免重复

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:47 25 4
gpt4 key购买 nike

编译后,我的 GetInt 函数导致函数内的 printf 语句在屏幕上打印 3 次。我相信这是在我将所有半径、底数和高度初始化为 GetInt(void) 时引起的,但我看不到其他方法可以准确地初始化这些变量。请帮忙!

#define _CRT_SECURE_NO_WARNINGS
#define PI 3.14159
#include <stdio.h>
#include <math.h>

int GetInt(void);
double CalcTriangleArea(int base, int height);
double CalcCircleArea(int radius);

int main(void)
{
int radius, base, height;
double triangleArea;
double circleArea;

radius = GetInt();
base = GetInt();
height = GetInt();
triangleArea = CalcTriangleArea(base, height);
circleArea = CalcCircleArea(radius);

return(0);
}

int GetInt(void)
{
int x;

{
printf("Please enter a radius: \n\n");
scanf("%d", &x);

printf("Please enter a base: \n\n");
scanf("%d", &x);

printf("Please enter a height: \n\n");
scanf("%d", &x);
}
return(x);
}

double CalcTriangleArea(int base, int height)
{
double triangleArea;
printf("Triangle area is %.2f \n\n", triangleArea = .5*base*height);

return(0);
}

double CalcCircleArea(int radius)
{
double circleArea;
printf("Area is %.4f \n\n", radius, circleArea = PI * pow(radius, 2));

return(0);
}

最佳答案

一个经验法则是尽可能避免重复自己,也不要重复自己。假设您想将两行 (\n\n) 更改为三行 (\n\n\n)?您需要进行三次更改。

查看 GetInt 的基本结构,您正在打印一个提示符、两个新行、获取一个值并返回它。因此,我们可以这样编写新函数:

void getInt(char* prompt)
{
int x, numberOfConversions; // numConversions is the number of int's read from the keyboard buffer

printf("%s: \n\n", prompt);
numberOfConversions = scanf("%d", &x);

while (numberOfConversions != 1) // while the user did not enter a number
{
printf("Please enter a number: ");
numberOfConversions = scanf("%d", &x)"
}

return x; // Always returns a valid number
}

关于c - 如何在用户定义的函数中避免重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35375459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com