在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d",&n); int a[1000]; int length=1; int temp=n; while(temp/10!=0){ length++; temp=temp/10; } temp=n; for(int i=0;i<length;i++){ a[i]=temp%10; temp=temp/10; } int max=a[0],min=a[0]; for(int i=0;i<length;i++){ if(a[i]>max){ max=a[i]; } if(a[i]<min){ min=a[i]; } } int result=max-min; printf("%d",result); return 0; }
1) 这段代码的功能是:读取一个整数,找出其各个数位上的最大数字和最小数字,然后计算它们的差值并输出。

2) 提示:
   - 注意处理负数的情况,因为代码中的取模和除法运算对负数的处理可能不符合预期。
   - 当输入为个位数时,最大和最小数字相同,差值为0,但代码中计算位数的循环条件 `temp/10!=0` 会导致 `length` 初始值已为1,这是正确的,但可以思考如果输入为0会怎样。