Как исправить ошибку 'ожидаемый идентификатор или' ('перед' int '' в функции, возвращающей структуру - PullRequest
0 голосов
/ 12 февраля 2019

Я создаю код C для вывода диаметра, площади, длины окружности из одной функции.Я использую структуру для вывода данных.Тем не менее, при создании функции, которая выводит структуру, я получаю следующую ошибку: «ожидаемый идентификатор или» (до «int»)

Я пытался сделать очевидное, что код говорит, но длябезрезультатно.

#include <stdio.h>

struct circle
{
    int diameter;
    int area;
    int circumference;
};
    typedef struct circle one;

struct properties (int r)
{
    struct circle.one.diameter = 2 * r;
    struct circle.one.area = (22 * r * r) / 7;
    struct circle.one.circumference = (2 * 22 * r) / 7;

    return (one);
}

int main ()
{
    int a;
    int result;
    printf ("text");
    scanf ("%d", &a);
    result = properties (a);
    printf ("%d%d%d", result );

    return 0;
}

Я ожидаю, что на выходе будут значения диаметра, площади, окружности.

1 Ответ

0 голосов
/ 12 февраля 2019

Это рабочая программа с исправленными многочисленными ошибками.Обратите внимание, что выполняется целочисленное деление, поэтому результаты округляются до ближайшего целого числа.

#include <stdio.h>

struct circle
{
    int diameter;
    int area;
    int circumference;
};

typedef struct circle one;

one properties (int r)                          // use the typedef
{
    one calcs;                                  // define a struct
    calcs.diameter = 2 * r;                     // clean up the act
    calcs.area = (22 * r * r) / 7;
    calcs.circumference = (2 * 22 * r) / 7;

    return calcs;
}

int main (void)                                 // full definition
{
    int a;
    one result;                                 // this should be a struct
    printf ("radius: ");                        // sensible prompt
    scanf ("%d", &a);
    result = properties (a);
    // space separate the output, pass each value
    printf ("%d %d %d", result.diameter, result.area, result.circumference);
    return 0;
}

Вывод программы

radius: 3
6 28 18
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...