#include "stdafx.h"
#include "stdio.h"
#include <string.h>
void main() {
int Results[8];
int i = 0;
int max = 0;
int maxindex;
printf("Enter the results of your 7 leavin cert subjects: ");
do {
printf("\nSubject %d: ", i + 1);
scanf_s("%d", Results);
i++;
} while (i < 7);
for (i < 7; Results[i] > 0; i++)
if (Results[i] > max)
max = Results[i];
printf("The best grade is %d", max);
}
您好,所以基本上我正在尝试使用for循环打印出最大数字(最佳结果)。然而,它一直告诉我,最好的结果是0。
有谁知道我做错了什么。任何帮助将不胜感激。
答案 0 :(得分:3)
您的代码中存在两个主要问题:
您使用Results[0]
将所有数字读入scanf_s("%d", Results);
。你应该写:
if (scanf_s("%d", &Results[i]) != 1) {
/* not a number, handle the error */
}
第二个循环不正确:for (i < 7; Results[i] > 0; i++)
有多个问题。写下for (i = 0; i < 7; i++)
还有较小的那些:
#include "stdio.h"
应写为#include <stdio.h>
#include "stdafx.h"
未被使用,因此可以删除 - 无论如何,如果要使用它,都应该写为#include <stdafx.h>
。Results
数组的大小为8
,但您只使用7
个广告位。main
应该有原型int main(void)
或int main(int argc, char *argv[])
或同等版本。for (i = 0; i < 7; i++)
循环而非易错do / while
循环。这是一个更简单,更好的版本:
#include <stdio.h>
#include <string.h>
int main(void) {
int Results[7];
int i, n, max;
printf("Enter the results of your 7 leavin cert subjects: ");
for (i = 0; i < 7; i++) {
printf("\nSubject %d: ", i + 1);
if (scanf_s("%d", &Results[i]) != 1) {
printf("invalid number\n");
exit(1);
}
}
for (n = i, max = 0, i = 0; i < n; i++) {
if (Results[i] > max)
max = Results[i];
}
printf("The best grade is %d\n", max);
return 0;
}