Я создал простую программу для отображения данных о студентах колледжа и подсчета накопленных баллов в оценку (A, B, C, D, E) и использования структуры (мне запрещено создавать с помощью Array of Struct) , поэтому проблема заключается в том, что один из выходных данных «Оценка» дает (нулевой) результат при печати с% s и полностью пустой результат при печати с% c. Между прочим, тип данных "Grade" - char. Вот полный код.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <ctype.h>
struct student
{
char nim[11];
char name[100];
char subjectCode[5];
int sks;
char grade;
}studentScore[100];
bool cekKarakter(char input[])
{
for(int x = 0; x < strlen(input); x++)
{
if(isdigit(input[x]))
return false;
}
return true;
}
bool cekNumeric(char input[])
{
for(int x = 0; x < strlen(input); x++)
{
if(input[x] >= 48 && input[x] <= 57)
return false;
}
return true;
}
int main()
{
int n;
printf("Input number of Student Data: ");
scanf("%d", &n);
fflush(stdin);
printf("\n\n");
for(int i = 1; i <= n; i++)
{
do
{
printf("NIM [Hanya numerik][10 Digit]: ");
gets(studentScore[i].nim);
fflush(stdin);
}
while(strlen(studentScore[i].nim) != 10 ||
cekNumeric(studentScore[i].nim));
printf("\n");
do
{
printf("Name [Hanya karakter]: ");
gets(studentScore[i].name);
fflush(stdin);
}
while(strlen(studentScore[i].name) < 5 || strlen(studentScore[i].name) >
30 || cekKarakter(studentScore[i].name) == false);
printf("\n");
do
{
printf("Subject Code [Must 5 length]: ");
gets(studentScore[i].subjectCode);
fflush(stdin);
}
while(strlen(studentScore[i].subjectCode) != 5);
printf("\n");
do
{
printf("SKS [Min 2|Max 8]: ");
scanf("%d", &studentScore[i].sks);
fflush(stdin);
}
while(studentScore[i].sks < 2 || studentScore[i].sks > 8);
printf("\n");
int score[5];
int WeightGrade = 0;
printf("Input 5 College Subject Score:\n\n");
for(int z = 0; z < 5; z++)
{
do
{
printf("Input Score[%d][Must be between 0 and 100]: ", z + 1);
scanf("%d", &score[z]);
}
while(score[z] < 0 || score[z] > 100);
WeightGrade += score[z];
}
if(WeightGrade / 25 == 4)
{
studentScore[i].grade = 'A';
}
else if(WeightGrade / 25 >= 3 && WeightGrade / 25 < 4)
{
studentScore[i].grade = 'B';
}
else if(WeightGrade / 25 >= 2 && WeightGrade / 25 < 3)
{
studentScore[i].grade = 'C';
}
else if(WeightGrade / 25 >= 1 && WeightGrade / 25 < 2)
{
studentScore[i].grade = 'D';
}
else if(WeightGrade / 25 == 0)
{
studentScore[i].grade = 'E';
}
}
printf("\nStudent Data\n");
for(int i = 1; i <= n; i++)
{
printf("NIM: %s\nName: %s\nSubject Code: %s\nSKS: %d\nGrade: %s\n",
studentScore[i].nim,
studentScore[i].name,
studentScore[i].subjectCode,
studentScore[i].sks,
studentScore[i].grade);
}
getchar();
return 0;
}
Это изображение программы, когда она работает (null) результат вывода с использованием% s в виде напечатанного