C程序求一个数的最大位数


我编写了一个程序来打印数字的最大数字

#include <stdio.h>
int main(){
    int num ,  large = 0, rem = 0;
    scanf("%d" , &num);
    while (num > 0) {
                rem = num % 10;

                if (rem > large) {
                        large = rem;
                }

                num = num / 10;
        }

        printf("the biggest digit is %d\n", large);
        return 0;
  }

如果工作正常,但如果我输入负数,比如 -432,它会打印 0,而不是 4。我该如何纠正?

我尝试过的:

…………………………………………

解决方案1

C++
while (num > 0)

对于小于 0 的数字,这将失败。在测试之前转换为绝对数字将修复它:

C++
num = abs(num);
while (num > 0)

解决方案2

你好
首先,您应该将 WHILE 放在 IF(num>=0) 上,然后您应该在 ELSE 中将数字设为正数。 例如,我这样做 (num=num-2*(num);) 这个。 这对我行得通。 绝对可以用函数写得更好。

C++
#include<stdio.h>
int main()
{
    int num,r=0,max=0;
    scanf("%d",&num);
    if(num>=0)
    {
        while(num>0)
        {
            r=num%10;
            if(r>=max)
            {
                max=r;
            }
            num=num/10;
        }
    }
    else
    {
        num=num-2*(num);
        while(num>0)
        {
            r=num%10;
            if(r>=max)
            {
                max=r;
            }
            num=num/10;
        }
    }
    printf("%d",max);
    return 0;
}

コメント

タイトルとURLをコピーしました