在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d", &n); int min, max; scanf("%d,%d",&max,&min); while (n > 0) { int last = n % 10; if (last<min)min=last; if (last>max)max=last; n /= 10; } printf("%d ,%d",max, min); return 0; }
这段代码试图找出一个整数中各位数字的最大值和最小值,但存在几个问题。

代码首先读取一个整数n,然后立即又读取两个整数作为max和min的初始值,这不符合题目要求。实际上,应该用n的某一位数字来初始化max和min。

- 第二个scanf语句是不必要的,而且它读取的输入格式与题目要求不符。应该去掉它,改用n的第一位数字来初始化max和min。
- 当n为0时,while循环不会执行,导致max和min未初始化就被打印,这是未定义行为。需要单独处理n为0的情况。