Следующий предложенный код:
- безупречная компиляция
- выполняет желаемую функциональность
- устраняет «грязную» манипуляцию данными, перемещая все данные в простая таблица
- значительно сокращает объем кода
- Правильно определяет структуру перед любыми ссылками на эту структуру
- Использует соответствующий горизонтальный и вертикальный интервал для удобства чтения
- исключает включение ненужных заголовочных файлов
- позволяет компилятору определить количество необходимых экземпляров 'struct person'
- сворачивает оператор
printf
для соблюдения правильного поля принтера
А теперь предложенный код:
#include <stdio.h>
struct person
{
char first[32];
char last[32];
int year;
double ppg;
};
struct person people[] =
{
{ "Jane", "Doe", 2004, 5.2 },
{ "Brian", "Smith", 2007, 5.9 },
{ "Kevin", "McAllister", 2020, 15.3 },
{ "Kobe", "Bryant", 2019, 24.8 },
{ "Offensive", "Bias", 2845, 93.1 },
{ "Ronald", "McDonald", 2371, 9.5 },
{ "Weyland", "Yutani", 1960, 28.5 }
};
void DisplayStats( struct person Input[] )
{
for( int i=0; i<7; i++)
{
printf( "%s, %s: %lf PPG in %d\n",
Input[i].last,
Input[i].first,
Input[i].ppg,
Input[i].year);
}
}
int main( void )
{
DisplayStats( people );
return (0);
}
Вывод предложенного кода:
Doe, Jane: 5.200000 PPG in 2004
Smith, Brian: 5.900000 PPG in 2007
McAllister, Kevin: 15.300000 PPG in 2020
Bryant, Kobe: 24.800000 PPG in 2019
Bias, Offensive: 93.100000 PPG in 2845
McDonald, Ronald: 9.500000 PPG in 2371
Yutani, Weyland: 28.500000 PPG in 1960
Предложить ограничение числа цифр после десятичной точки до 1 или 2 с помощью спецификатора «преобразования выходного формата», аналогичного %.2lf
Предложить форматирование выходных строк, чтобы они все занимали одинаковое количество горизонтальных спа се. Аналогично %12.12s
для лучшего форматирования вывода