1、 首先逻辑就不对,如2楼所说
2、 用 scanf 来判断输入是否为 '\n' 是不可能的,因为 scanf 在读取输入的时候,总是会跳过空白,除非是 scanf("%c", ch) ,所以这里需要用 getchar() 来实现
程序代码:
#include <stdio.h>
#include <ctype.h>
int get_max(int a, int b);
int main(void) {
int input = 0, max;
int c;
// 用来计算输入个数
int count = 0;
// 用来标记上一个数是否输入完毕
int flag = 0;
printf("Please enter several positive integers:\n");
while ((c = getchar()) != EOF) {
if (isspace(c)) {
if (flag) {
++count;
}
if (count == 0) {
continue;
}
else if (count == 1) {
max = input;
}
else {
max = get_max(input, max);
}
input = 0;
if (c == '\n') {
break;
}
}
else {
input = input * 10 + c - '0';
flag = 1;
}
}
if (count > 0) {
printf("The max input is : %d\n", max);
}
return 0;
}
int get_max(int a, int b) {
return a > b ? a : b;
}
===
这里没有去处理非数值输入和负数~