Структура Студент: Вместо кириллицы выводятся кракозябры - C (СИ)

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

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

Программа работает, но когда нужно выводить (не)успевающих, то выводятся непонятные символы, что не так?
#include<stdio.h>
#include<locale.h>
#include <conio.h>
struct student {
    int numz;
    char surname[30], name[30], otchestvo[30];
    int shifr;
    int mark;
}; 
    int main ()
{   
    int N, kurs; char group[30], fakul[30];
    setlocale(LC_ALL, "");
    printf("\n Факультет:  "); scanf( "%s", &fakul);
    printf(" Группа:  "); scanf( "%s", &group);
    printf(" Курс: "); scanf( "%d", &kurs);
    printf(" сколько человек в группе?");
    scanf("%d", &N);
    struct student stud[30];  int i; 
    for (i=0; i<N; i++) 
{   printf("%d-й студент", i+1);
    printf("\n Номер зачетки:  "); scanf( "%d", &stud[i].numz);
    printf("\n Ф.И.О :  "); scanf( "%s %s %s", &stud[i].surname, &stud[i].name, &stud[i].otchestvo);
    printf("\n Шифр предмета:  "); scanf( "%d", &stud[i].shifr);
    printf("\n Оценка:  \n"); scanf( "%d", &stud[i].mark);
    }
    for (i=0; i<N; i++) {
    if((stud[i].mark)<3)
    printf("%s %s %s Не успевает по %d\n ", stud[i].surname, stud[i].name, stud[i].otchestvo, stud[i].shifr );
    else
    {
    if((stud[i].mark)>=3)
    printf("%s %s %s Успевает по %d\n", stud[i].surname, stud[i].name, stud[i].otchestvo, stud[i].shifr );
    }
}
}

Решение задачи: «Структура Студент: Вместо кириллицы выводятся кракозябры»

textual
Листинг программы
#include<stdio.h>
#include<locale.h>
#include <conio.h>
struct student {
    int numz;
    char surname[30], name[30], otchestvo[30];
    int shifr;
    int mark;
}; 
    int main (void)
{  
 
 
    int N, kurs; char group[30], fakul[30];
    setlocale(LC_ALL, "");
        printf("\n Факультет:  "); scanf( "%s", fakul);
    printf(" Группа:  "); scanf( "%s", group);
    printf(" Курс: "); scanf( "%d", &kurs);
    printf(" сколько человек в группе?");
    scanf("%d", &N);
    struct student stud[30];  int i; 
    for (i=0; i<N; i++) 
{   printf("%d-й студент", i+1);
    printf("\n Номер зачетки:  "); scanf( "%d", &stud[i].numz);
    printf("\n Ф.И.О :  "); scanf( "%s %s %s", stud[i].surname, stud[i].name, stud[i].otchestvo);
    printf("\n Шифр предмета:  "); scanf( "%d", &stud[i].shifr);
    printf("\n Оценка:  \n"); scanf( "%d", &stud[i].mark);
    }
    for (i=0; i<N; i++) {
    if((stud[i].mark)<3)
    printf("%s %s %s Не успевает по %d\n ", stud[i].surname, stud[i].name, stud[i].otchestvo, stud[i].shifr );
    else
    {
    if((stud[i].mark)>=3)
    printf("%s %s %s Успевает по %d\n", stud[i].surname, stud[i].name, stud[i].otchestvo, stud[i].shifr );
    }
}
return(0);}

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

  1. Представлен код на языке C, который предназначен для ввода и вывода информации о студентах.
  2. В начале кода определяются переменные и структура данных студент. Структура студент содержит поля: номер зачетной книжки, ФИО, шифр предмета и оценка.
  3. Затем в функции main() определяется количество студентов в группе и происходит инициализация переменных факультета, группы и курса.
  4. Далее происходит цикл, в котором происходит ввод информации о каждом студенте: его номере зачетной книжки, ФИО, шифре предмета и оценке.
  5. После ввода информации о всех студентах происходит вывод информации о тех студентах, которые получают оценку меньше 3 и 3 и выше.
  6. Код использует функции scanf() и printf() для ввода и вывода информации.
  7. В конце функции main() возвращается значение 0, что означает успешный конец работы программы.

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


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

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

7   голосов , оценка 4.286 из 5