Описать структуру "Студент" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

5. Описать, используя структуру данных сведения об учениках (фамилия, улица, дом, квартира). Составить программу, определяющую: 1) сколько учеников живет на улице Свердлова; 2)список учеников, живущих в доме номер 45 по улице Сиреневой.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5. #define STUDS 4
  6. typedef struct
  7. {
  8. char name[15];
  9. char street[15];
  10. int house[4];
  11. int flat[4];
  12. }Student;
  13. int main(void)
  14. {
  15. Student stud[STUDS];
  16. int i,k=0,j=0,z=2;
  17. int *p;
  18. p=&z;
  19. char *Sv="Свердлова", *Si="Сиреневая";
  20. puts("Information about students");
  21. for(i=0;i<STUDS;i++)
  22. {
  23. printf("---STUDENT #%d---\n",i+1);
  24. printf("Familiya:");
  25. scanf("%s",&stud[i].name);
  26. printf("Street:");
  27. scanf("%s",&stud[i].street);
  28. printf("House:");
  29. scanf("%d",&stud[i].house);
  30. printf("Flat:");
  31. scanf("%d",&stud[i].flat);
  32. }
  33. puts("----End of input----");
  34. for(i=0;i<STUDS;i++)
  35. if(strcmp(stud[i].street,Sv)==0)
  36. k++;
  37. for(i=0;i<STUDS;i++)
  38. if((stud[i].house==p) && (strcmp(stud[i].street,Si)==0))
  39. j++;
  40. printf("Living in Sverdlova:%d",k);
  41. printf("\nLiving in Sirenevaya, in 45 house:%d",j);
  42. system("PAUSE");
  43. return 0;
  44. }
подскажите почему счетчик всегда выдает 0?

Решение задачи: «Описать структуру "Студент"»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5. #define STUDS 4
  6. typedef struct
  7. {
  8. char name[15];
  9. char street[15];
  10. int house; /* не является массивом */
  11. int flat; /* не является массивом */
  12. }Student;
  13. int main(void)
  14. {
  15. Student stud[STUDS];
  16. int i,k=0,j=0,z=45; /* здесь вероятно 45 */
  17. int *p; /* указатель */
  18. p=&z; /* ссылка-указатель на переменную int z */
  19. char *Sv="Sverdlova", *Si="Sirenevaya";
  20. puts("Information about students");
  21. for(i=0;i<STUDS;i++)
  22. {
  23.     printf("---STUDENT #%d---\n",i+1);
  24.     printf("Familiya:");
  25.     scanf("%s",stud[i].name); /* не нужен &, так как имя массива является указателем */
  26.     printf("Street:");
  27.     scanf("%s",stud[i].street); /* не нужен &, так как имя массива является указателем */
  28.     printf("House:");
  29.     scanf("%d",&stud[i].house);
  30.     printf("Flat:");
  31.     scanf("%d",&stud[i].flat);
  32. }
  33. puts("----End of input----");
  34. for(i=0;i<STUDS;i++)
  35.     if(strcmp(stud[i].street,Sv)==0)
  36.     k++;
  37. for(i=0;i<STUDS;i++)
  38.     if((stud[i].house==*p) && (strcmp(stud[i].street,Si)==0)) //требовалось разыменование
  39.     j++;
  40. printf("Living in Sverdlova:%d",k);
  41. printf("\nLiving in Sirenevaya, in 45 house:%d\n",j);
  42. system("PAUSE");
  43. return 0;
  44. }

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Объявляется константа STUDS, которая определяет количество студентов
  3. Создается структура Студент с полями name, street, house и flat
  4. В главной функции main создается массив из STUDS структур Student
  5. Инициализируются переменные i, k, j и z
  6. Указатель p инициализируется как ссылка на переменную z
  7. Переменные Sv и Si инициализируются как строки
  8. Выводится заголовок цикла, который позволяет ввести данные о студентах
  9. В цикле происходит ввод данных о каждом студенте
  10. После ввода данных выводится сообщение об окончании ввода
  11. В двух отдельных циклах подсчитывается количество студентов, проживающих на улице Sverdlova и в доме 45 на улице Sirenevaya
  12. Выводятся результаты подсчета
  13. В конце программы вызывается функция system(PAUSE), чтобы программа не закрылась сразу после вывода результатов
  14. Функция main возвращает 0, что означает успешное завершение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы