Большая часть моего опыта ограничена сценариями SQL для функций DBA.Я специалист по безопасности и помогаю другим по этим темам, но я изучаю C, чтобы помочь в этих других начинаниях.Я читаю книги, пишу небольшие программы и увеличиваю уровень сложности.Это первый раз, когда мне пришлось обратиться за помощью.Я прошу прощения, если это спросили, но я сначала поискал и ничего не нашел.
До сих пор мои программы всегда возвращали только действительные данные из частично заполненных массивов.Этот конкретный не ведет себя так же, хотя я использую то же самое для утверждения, которое я ранее использовал с успехом.На данный момент у меня должно быть туннельное зрение, потому что я не могу видеть, где это терпит неудачу.
Если имеется менее 20 входов, вывод printf отображает оставшиеся значения с мусором.Был бы очень признателен, если бы кто-то мог дать некоторые рекомендации о том, что я пропускаю.Заранее спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct grade
{
int id;
int percent;
};
#define maxCount 100
int main()
{
int *grade;
struct grade gradeBook[maxCount];
int count = 0;
char YN;
int i;
for(i = 0; i < maxCount; i++)
{
printf("Enter ID: ");
scanf("%d", &gradeBook[i].id);
printf("Enter grade from 0-100: ");
scanf("%d", &gradeBook[i].percent);
count++;
// Prompt to continue, break if done
printf("Do you want to Continue? (Y/N)");
scanf(" %c", &YN);
if(YN == 'n' || YN == 'N')
{
break;
}
}
void sort(struct grade gradeBook[],int cnt)
{
int i, j;
struct grade temp;
for (i = 0; i < (cnt - 1); i++)
{
for (j = (i + 1); j < cnt; j++)
{
if(gradeBook[j].id < gradeBook[i].id)
{
temp = gradeBook[j];
gradeBook[j] = gradeBook[i];
gradeBook[i] = temp;
}
}
}
}
printf("Grades entered and ordered by ID: \n");
for (i = 0; i < count; i++)
{
printf("\nID:%d, Grade: %3d\n", gradeBook[i].id,gradeBook[i].percent);
}
return 0;
}