Повторение: структура данных Student
Часть раздела Logic & Flow путешествия по C на Coddy — урок 43 из 63.
Задание
ЛегкоСоздайте программу на языке C, которая демонстрирует полный рабочий процесс использования структур на примере системы управления данными студентов. Ваша программа должна:
- Определить структуру
structс именемStudentсо следующими членами:- Целое число
idдля хранения идентификационного номера студента - Число с плавающей запятой
gradeдля хранения оценки студента
- Целое число
- В функции main создать переменную типа
Studentс именемstudent1 - Считать ID и оценку студента из входных данных с помощью
scanf:- Считать целое число для ID и сохранить его в
student1.id - Считать число с плавающей запятой для оценки и сохранить его в
student1.grade
- Считать целое число для ID и сохранить его в
- После чтения входных данных выполнить следующую валидацию и расчеты:
- Если оценка больше 100.0, установить ее равной 100.0
- Если оценка меньше 0.0, установить ее равной 0.0
- Рассчитать бонусную оценку, добавив 5.0 к текущей оценке (после валидации)
- Если бонусная оценка превышает 100.0, установить бонусную оценку равной 100.0
- Вывести информацию о студенте в точно таком же формате:
Student Information:ID: [id]Original Grade: [grade]Bonus Grade: [bonus_grade]Grade Status: [status]
- Статус оценки должен определяться следующим образом:
- Если исходная оценка 90.0 или выше:
Excellent - Если исходная оценка от 80.0 до 89.9:
Good - Если исходная оценка от 70.0 до 79.9:
Average - Если исходная оценка ниже 70.0:
Needs Improvement
- Если исходная оценка 90.0 или выше:
Эта задача проверяет ваше понимание определения структур, создания переменных, доступа к членам структуры с помощью оператора «точка», обработки ввода с помощью scanf и условной логики для валидации и обработки данных. Вы попрактикуетесь в полном цикле работы со структурами в практическом сценарии.
Попробуйте сами
#include <stdio.h>
// TODO: Определите здесь структуру Student
int main() {
// TODO: Создайте переменную типа Student с именем student1
// Чтение входных данных
int id;
float grade;
scanf("%d", &id);
scanf("%f", &grade);
// TODO: Сохраните введенные значения в членах структуры
// TODO: Реализуйте проверку оценки и расчет бонуса
// TODO: Определите статус оценки
// Вывод результатов
printf("Student Information:\n");
printf("ID: %d\n", /* TODO: вывести ID студента */);
printf("Original Grade: %.1f\n", /* TODO: вывести исходную оценку */);
printf("Bonus Grade: %.1f\n", /* TODO: вывести бонусную оценку */);
printf("Grade Status: %s\n", /* TODO: вывести статус оценки */);
return 0;
}Все уроки раздела Logic & Flow
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов7Структуры (structs)
Что такое структура?Объявление структурыСоздание переменных структурДоступ к членам структурыИнициализация структурПовторение: структура данных Student2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функции