部分数组输出包含垃圾

时间:2019-03-07 00:51:20

标签: c

我的大部分经验仅限于DBA函数的SQL脚本编写。我是一名安全专家,并在这些主题上为他人提供帮助,但是我正在学习C来协助其他工作。我一直在读书,编写小型程序并不断提高难度。这是我第一次必须寻求帮助。如果有人提出这个要求,我深表歉意,但我确实进行了搜索,但没有找到任何内容。

到目前为止,我的程序始终只从部分填充的数组中返回有效数据。即使我对成功使用的for语句使用相同的特定语句,它也不会表现相同。在这一点上,我必须有洞察力,因为我似乎看不到失败的地方。

如果输入少于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;
}

1 个答案:

答案 0 :(得分:0)

  

如果输入少于20个,则printf输出将显示带有垃圾的剩余值

您还期望什么?

如果输入少于20个,则其余输入没有任何值。您说“部分数组输入”,但实际上是让计算机遍历整个数组。

现在还不清楚您还希望在这里发生什么。

也许第二次循环到count