我的大部分经验仅限于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;
}
答案 0 :(得分:0)
如果输入少于20个,则printf输出将显示带有垃圾的剩余值
您还期望什么?
如果输入少于20个,则其余输入没有任何值。您说“部分数组输入”,但实际上是让计算机遍历整个数组。
现在还不清楚您还希望在这里发生什么。
也许第二次循环到count
。