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;
}
解决方案
如果输入少于 20 个,则 printf 输出会显示剩余的值以及垃圾
你还期待什么?
如果您的输入少于 20 个,则剩余的输入没有被赋予任何值。您说“部分数组输入”,但实际上是要求计算机遍历整个数组。
真的不清楚你还期望在这里发生什么。
也许循环到count
第二次。
推荐阅读
- c++ - 静态类成员不是与this指针没有关联吗?
- maven - 从 pom 中排除测试文件夹不起作用
- android - Android 或 iOS 支持修改屏幕上的文字?
- c - 程序在等待退出时超时
- javascript - 在 vuejs 中放置一个事件处理程序?
- javascript - js 文件没有正确导入 js 模块,即使在 html 中插入了 type="module"
- python - 哪个更快?设置比较还是计数器比较?为什么
- c# - 在标签页内的列表中使字符串可点击
- boto3 - rds.create_db_instance 的 DBInstanceIdentifier 和 DBName 有什么区别?
- boto3 - 为初始 AWS 应用程序自动扩展添加延迟