有点小问题:
为什么输入marks的时候需要多输入一位才能出结果?而且结果不受多输入那个数的影响。
for循环里的scanf那一句有什么用
//从输入的n个成绩中选出最高分,用for循环实现
#define _CRT_SECURE_NO_WARNINGS
#include<math.h>
#include<stdio.h>
int main() {
int mark;
int max;
int n;
printf("Enter n: ");
scanf("%d", &n);
printf("Enter % d marks : ", n);
scanf("%d", &mark);
max = mark;
for (int i = 1; i <= n; i++) {
scanf("%d", &mark);
if (max < mark) {
max = mark;
}
}
printf("Max= %d\n", max);
return 0;
}
scanf("%d")是输入一个整数。本来是输入n个然后找到最大的,因为for前面还有输入一个mark,for里面需要输入n个,所以需要多一个。多输入的那个会影响结果,for里面少输入一个,或者for前面不需要输入,max初始为一个足够小的值
第17行,循环结束条件改为:i < n 即可,供参考:
//从输入的n个成绩中选出最高分,用for循环实现
#define _CRT_SECURE_NO_WARNINGS
#include<math.h>
#include<stdio.h>
int main() {
int mark;
int max;
int n;
printf("Enter n: ");
scanf("%d", &n); // 从键盘读取 n ,即需要读入总个数
printf("Enter %d marks : ", n);
scanf("%d", &mark); // 从键盘读取第一个 mark
max = mark;
for (int i = 1; i < n; i++) { // for (int i = 1; i <= n; i++) 修改
scanf("%d", &mark); // 从键盘读取第二个,第三个,直到第 n - 1 个
if (max < mark) {
max = mark;
}
}
printf("Max= %d\n", max);
return 0;
}