Chương trình C chữ số lớn nhất của một số

lập trình


tôi đã viết một chương trình in chữ số lớn nhất của một số

#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;
  }

nếu hoạt động tốt nhưng nếu tôi nhập số âm, giả sử -432, nó sẽ in cho tôi 0, thay vì 4. Làm cách nào để sửa điều đó?

Những gì tôi đã thử:

………………………………………….

Giải pháp 1

C++
while (num > 0)

Điều này sẽ không thành công đối với các số nhỏ hơn 0. Chuyển đổi thành số tuyệt đối trước khi thử nghiệm sẽ khắc phục được:

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

Giải pháp 2

Xin chào
Trước hết, bạn nên đặt WHILE trên IF(num>=0), sau đó bạn nên đặt số của mình là dương trong ELSE. ví dụ: tôi làm (num=num-2*(num);) điều này. nó ổn với tôi. hoàn toàn bạn có thể viết điều này tốt hơn với hàm.

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をコピーしました