Студент Иванов
4 5 4 3
Студент Рыбкин Сом Язевич 1988 года рождения,
Студент Петушков Петр Петрович 1987 года рождения,
Студент Петушков Петр Петрович 1987 года рождения,
1988,
1988,
{5,4,5,4},
};
int i;
float sr;
S.fio="Петушков"; //Присваивание полю значения
printf("Введите адрес студента %sa ",S.fio);
gets(S.Adress); //Ввод значения поля
S.Age=1987;
S.oc[0]=3; S.oc[1]=5; S.oc[2]=4; S.oc[3]=S.oc[2];
sr=0; //Вычисление
for(i=0;i<=3;i++) sr=sr+S.oc[i]; //среднего
sr=sr/4; S.sr=sr;
printf("\n"); puts("Для структуры S:");
printf(" Средний балл студента %sа",S.fio);
printf(" %d года рождения,\n проживающего по адресу: %s,",
S.Age,S.Adress);
printf(" равен %5.2f\n",S.sr);
S1=S; // S и S1 соответствуют одному шаблону
printf("\n"); puts("Для структуры S1(совпадает с S):");
printf(" Средний балл студента %sа",S1.fio);
printf(" %d года рождения,\n проживающего по адресу: %s,",
S1.Age, S1.Adress);
printf(" равен %5.2f\n",sr);
sr=0;
for(i=0;i<=3;i++) sr=sr+S2.oc[i];
sr=sr/4; S2.sr=sr;
printf("\n");
puts("Для структуры S2, инциализированной при описании:");
printf(" Средний балл студента %sа",S2.fio);
printf(" %d года рождения,\n проживающего по адресу: %s,",
S2.Age, S2.Adress);
printf(" равен %5.2f\n",S2.sr);
fflush(stdin); getchar();
return(0);
}
Вид экрана после выполнения программы:
Введите адрес студента Петушковa ул. Снежная, д.7, кв. 17
Для структуры S:
Средний балл студента Петушкова 1987 года рождения,
проживающего по адресу: ул. Снежная, д.7, кв. 17, равен 4.00
Для структуры S1(совпадает с S):
Средний балл студента Петушкова 1987 года рождения,
проживающего по адресу: ул. Снежная, д.7, кв. 17, равен 4.00
Для структуры S2, инциализированной при описании:
Средний балл студента Рыбкина 1988 года рождения,
проживающего по адресу: Река Сож, равен 4.50
/*Пример4. Вложенные структуры. Описание. Обращение к полям*/
#include <stdio.h>
main()
{
struct fios // Описание вкладываемой структуры
{ char *f,*im,*ot; };
typedef struct Student // Описание собственного типа MY_Student
{ struct fios fio; // Фамилия - структура
char Adress[40]; // Адрес - строка
int Age; // Возраст - целое
int oc[4]; // Оценки - целочис. массив
float sr; // Средняя успеваемость - вещественное
} MY_Student;
MY_Student S,S1, S2={
{"Рыбкин", "Сом", "Язевич"},
"Река Сож",
{5,4,5,4},
};
int i;
float sr; //Средний балл
// Определение структуры s
S.fio.f="Петушков";
S.fio.im="Петр";
S.fio.ot="Петрович";
printf("Введите адрес студента %sa ",S.fio.f);
gets(S.Adress);
S.Age=1987;
S.oc[0]=3; S.oc[1]=5; S.oc[2]=4; S.oc[3]=S.oc[2];
// Средний балл
sr=0;
for(i=0;i<=3;i++)
sr=sr+S.oc[i];
sr=sr/4; //Допускается использовать имя, совп. с им. поля структ
S.sr=sr;
printf("\n"); puts("Для структуры S:");
printf(" Студент %s %s %s",S.fio.f, S.fio.im, S.fio.ot);
printf(" %d года рождения,\n проживающий по адресу: %s,",
S.Age, S.Adress);
printf(" имеет средний балл= %5.2f\n",S.sr);
S1=S; //
printf("\n"); puts("Для структуры S1(совпадает с S):");
printf(" Студент %s %s %s",S1.fio.f, S1.fio.im, S1.fio.ot);
printf(" %d года рождения,\n проживающий по адресу: %s,",
S1.Age, S1.Adress);
printf(" имеет средний балл= %5.2f\n",S1.sr);
sr=0;
for(i=0;i<=3;i++) sr=sr+S2.oc[i];
sr=sr/4; S2.sr=sr;
printf("\n");
puts("Для структуры S2, инициализированной при описании:");
printf(" Студент %s %s %s",S2.fio.f, S2.fio.im, S2.fio.ot);
printf(" %d года рождения,\n проживающий по адресу: %s,",
S2.Age, S2.Adress);
printf(" имеет средний балл= %5.2f\n", S2.sr);
fflush(stdin); getchar();
return(0);
}
Вид экрана после выполнения программы:
Введите адрес студента Петушковa ул. Зеленая, д. Белый
Для структуры S:
проживающий по адресу: ул. Зеленая, д. Белый, имеет средний балл= 4.00
Для структуры S1(совпадает с S):
проживающий по адресу: ул. Зеленая, д. Белый, имеет средний балл= 4.00
Для структуры S2, инициализированной при описании:
проживающий по адресу: Река Сож, имеет средний балл= 4.50
/* Пример 5. Структурные переменные и указатели */
#include <stdio.h>
main()
{
typedef struct Student
{ char fio[30]; // Фамилия - строка
char Adress[40]; // Адрес - строка
int Age; // Возраст - целое
int oc[4]; // Оценки - целочис. массив
float sr; // Средняя успеваемость - вещественное
} MY_Student;
MY_Student *S3, // Указатель на структуру
S4; // Структурная переменная
int i;
float sr;
char *t;
printf("Фамилия? "); gets(S4.fio);
printf("Адрес? "); gets(S4.Adress);
printf("Возраст? "); scanf("%d",&S4.Age);
puts ("Четыре экзаменационные оценки?");
scanf("%d %d %d %d", &S4.oc[0], &S4.oc[1], &S4.oc[2], &S4.oc[3]);
sr=0;
for(i=0;i<=3;i++) sr=sr+S4.oc[i];
sr=sr/4; S4.sr=sr;
printf("\n"); puts(" Для структуры S4:");
printf(" Студент %s \n",S4.fio);
printf(" %d года рождения,\n проживающий по адресу: %s,",
S4.Age,S4.Adress);
printf(" имеет средний балл= %5.2f\n",S4.sr);
S3=&S4; //Указателю присваивается значение адреса
S3->Age=1984; //Обращение к полю
S3->oc[0]=3;
sr=0;
for(i=0;i<=3;i++) sr=sr+S3->oc[i];
sr=sr/4; S3->sr=sr;
fflush(stdin); printf(" Новая фамилия? "); gets(S3->fio);
printf("\n"); puts(" Для структуры S3 (частично совпадает с S4):");
printf(" Студент %s ",S3->fio);
printf(" %d года рождения,\n проживающий по адресу: %s,",
S3->Age,S3->Adress);
printf(" имеет средний балл= %5.2f\n",S3->sr);
fflush(stdin); getchar();
return(0);
}
Вид экрана после выполнения программы:
Фамилия? Иванов
Адрес? ул. Гагарина
Возраст? 1987
Четыре экзаменационные оценки?
Для структуры S4:
проживающий по адресу: ул. Гагарина, имеет средний балл= 4.00
Новая фамилия? Сидоров
Для структуры S3(частично совпадает с S4):