Онлайн компилятор C

#include <stdio.h> int main() { int unsigned num; int max == 0; int min == 9; if (num = 0) printf("0"); scanf("%u", &num); while (num > 0) { int d = num % 10; num = num / 10; if (d >= max) { max = d; } if (d <= min) { min = d; } } printf("%d %d", min, max); return 0; }
这段代码的目的是读取一个无符号整数,然后找出它的十进制表示中的最小数字和最大数字,并输出这两个数字。

代码中存在几个问题:

- 第5行和第6行使用了 `==` 而不是 `=`,这会导致编译错误。`==` 是比较运算符,而这里需要的是赋值运算符 `=`。

- 第7行 `if (num = 0)` 也是一个赋值语句而不是比较,而且这个位置不对。应该先读取输入,再检查输入是否为0。

- 变量 `max` 和 `min` 的初始值设置有问题。如果输入的数字中所有数字都小于9或大于0,初始值会导致错误结果。